Systemnahe Programmierung in C/C++
|
|
- Meike Schenck
- vor 7 Jahren
- Abrufe
Transkript
1 Systemnahe Programmierung in C/C++ Peter Piehler Lehrstuhl für Datenbanken und Informationssysteme Fakultät für Mathematik und Informatik Peter Piehler (DBIS) C/C++ Programmierung / 29
2 Agenda 1 constructor/destructor 2 Operatoren 3 template Methoden 4 Aufgaben Peter Piehler (DBIS) C/C++ Programmierung / 29
3 Outline 1 constructor/destructor 2 Operatoren 3 template Methoden 4 Aufgaben Peter Piehler (DBIS) C/C++ Programmierung / 29
4 constructor Konstruktoren werden aufgerufen, sobald der Speicher für ein Objekt bereitgestellt wurde. Konstruktoren haben die Aufgabe, die Instanzen zu initialisieren. Deklaration von Konstruktoren: class numeric { int mvalue ; // Membervariable public : numeric (); // default - constructor numeric ( const numeric & n ); // copy - constructor explicit numeric ( const int i ); // convert - constructor ~ numeric (); // destructor }; default-constructor Der Defaultkonstruktor wird vom Kompiler automatisch generiert, falls er nicht deklariert wird. numeric :: numeric () : mvalue ( 0 ) // Initialisierungsliste { }; Peter Piehler (DBIS) C/C++ Programmierung / 29
5 constructor default-constructor Anwendung: numeric n; copy-constructor wird verwendet, um Kopien von Instanzen anzulegen: numeric n; numeric n1( n );. Die Definition ist äquivalent zu der des Defaultkonstruktor: numeric :: numeric ( const numeric & o) : mvalue ( o. mvalue ) // Initialisierungsliste { }; Der Parameter ist als konstante Referenz zu übernehmen. Peter Piehler (DBIS) C/C++ Programmierung / 29
6 constructor convert-constructor um eine Instanz durch die Übergabe eines Parameters eines anderen Typs zu erstellen, wird ein Konvertierungskonstruktor erstellt. Die Definition ist äquivalent zu der des Defaultkonstruktor: numeric :: numeric ( int i) : mvalue ( i ) // Initialisierungsliste { }; Das Schlüsselwort explicit ist nur in Verbindung mit Konstruktoren zulässig und unterbindet die automatische Typkonvertierung des Kompilers: uint32_t ui ( 10 ); numeric n1 = ui ; // wird durch explicit untersagt, // explizieter Aufruf eines Konstruktor notwendig numeric n2 ( ui ); // Vorsicht, unsigned int wird nach // signed int konvertiert Peter Piehler (DBIS) C/C++ Programmierung / 29
7 destructor Der Destruktor wird aufgerufen, sobald die Lebenszeit eines Objektes beendet wird. Woran ist die Lebenszeit gebunden? Peter Piehler (DBIS) C/C++ Programmierung / 29
8 Outline 1 constructor/destructor 2 Operatoren 3 template Methoden 4 Aufgaben Peter Piehler (DBIS) C/C++ Programmierung / 29
9 Operatoren In C++ lassen sich zu jedem Datentyp die bekannten Operatoren (arithmetische, logische, Bit-, Vergleichs-, Zuweisungs-, In- und Dekrement, Typwandlungs-, Index-, Dereferenzierungs-) definieren und somit die gesamte Syntax auf selbst definierte Datentypen anwenden. Im fogenden Abschnitt werden die Operatoren vorgestellt. Dazu wird das Beispiel class numeric benutzt. class numeric { protected : int mvalue ; public : }; /* Operatoren fuer den Zugriff auf mvalue */ Es wird zwischen Operatormethoden und Operatorfunktionen unterschieden. Als erstes werden die Operatormethoden betrachtet. Peter Piehler (DBIS) C/C++ Programmierung / 29
10 Typwandlung-Operatoren Es kann eine explizite Typumwandlung mit einem Typwandlungs-Operator implementiert werden. allgemein operator some-type(); Deklaration eines Typwandlung-Operator nach int: int operator int () const ; Definition eines Typwandlung-Operator nach int: int numeric :: operator int () const { return mvalue ; } Anwendung eines Typwandlung-Operator nach int: numeric n ( 5 ); int i ( 5 ); i = n; Peter Piehler (DBIS) C/C++ Programmierung / 29
11 arithmetische Operatoren Als erstes die Negation: allgemein class-type class-name::operator-() const; Deklaration eines Negation-Operator: numeric operator -() const ; Definition eines Negation-Operator: numeric numeric :: operator -() const { numeric result ( -( this ->mvalue ) ); return result ; // keine Referenz auf Objekte zurueckgeben, // deren Lebenszeit an die Methode / Funktion gebunden ist } Anwendung numeric n; -n; Peter Piehler (DBIS) C/C++ Programmierung / 29
12 arithmetische Operatoren Die normalen arithmetischen Operatoren: allgemein class-type class-name::operator+( const some-type& other) const; class-type class-name::operator-( const some-type& other) const; class-type class-name::operator*( const some-type& other) const; class-type class-name::operator/( const some-type& other) const; class-type class-name::operator%( const some-type& other) const; Deklaration eines Substraktion-Operator: numeric operator -( int i ) const ; Definition eines Substraktion-Operator: numeric numeric :: operator -( int i ) const { numeric result ( ( this ->mvalue )-i ); return result ; } Anwendung numeric n; n - 5; Peter Piehler (DBIS) C/C++ Programmierung / 29
13 unrary binary Operator bitweise Negation-Operator: allgemein bitweise Negation: class-type class-name::operator~() const Deklaration der bitweisen Negation: numeric operator ~() const ; Definition der bitweisen Negation: numeric numeric :: operator ~() const { // direkter Zugriff auf Membervariable ohne Verwendung von this return numeric ( ~ mvalue ); } Anwendung der bitweisen Negation: numeric n1, n2; n1 = ~n2 ; // n1. operator =( n2. operator ~() ); Peter Piehler (DBIS) C/C++ Programmierung / 29
14 unary binary Operator Die normalen binären arithmetischen Operatoren: allgemein bitweise Und: class-type class-name::operator&( const some-type other) const bitweise Oder: class-type class-name::operator ( const some-type other) const exklusiv Oder: class-type class-name::operator^( const some-type other) const Linksverschiebung: class-type class-name::operator<<( const some-type other) const Rechtsverschiebung: class-type class-name::operator>>( const some-type other) const Peter Piehler (DBIS) C/C++ Programmierung / 29
15 unary binary Operator Deklaration eines left shift Operator: numeric operator < <( int leftshift ) const ; Definition eines left shift Operator: numeric numeric :: operator < <( int leftshift ) const { return numeric ( mvalue << leftshift ); } Anwendung eines left shift Operator: numeric n1, n2; n1 = n2 << 5; // n1. operator =( n2.operator < <( 5 ) ); Peter Piehler (DBIS) C/C++ Programmierung / 29
16 bitwise assignment Operator kombinierte Zuweisungsoperatoren kombinieren den Zuweisungsoperator mi einem anderen Operator: allgemein class-type& class-name::operator&=(const some-type& other) class-type& class-name::operator =(const some-type& other) class-type& class-name::operator^=(const some-type& other) class-type& class-name::operator<<=(const some-type& other) class-type& class-name::operator>>=(const some-type& other) Peter Piehler (DBIS) C/C++ Programmierung / 29
17 bitwise assignment Operator Deklaration einer Rechtsverschiebung mit Zuweisung: numeric & operator > >=( int ); Definition einer Rechtsverschiebung mit Zuweisung: // Referenz auf das eigene Objekt zurueck geben! numeric & numeric :: operator > >=( int rightshift ) { mvalue > >= rightshift ; return * this ; } Anwendung einer Rechtsverschiebung mit Zuweisung: numeric n1; n1 > >= 5; Peter Piehler (DBIS) C/C++ Programmierung / 29
18 comparison Operator Die Operatoren für logische Vergleiche: allgemein bool class-name::operator==( const some-type& other) const; bool class-name::operator!=( const some-type& other) const; bool class-name::operator<=( const some-type& other) const; bool class-name::operator>=( const some-type& other) const; bool class-name::operator<( const some-type& other) const; bool class-name::operator>( const some-type& other) const; Deklaration eines Vergleichsoperator auf Gleichheit: bool operator ==( int i ) const ; Definition eines Vergleichsoperator auf Gleichheit: bool numeric :: operator ==( int i ) const { return ( mvalue == i ); } Anwendung eines Vergleichsoperator auf Gleichheit: numeric n1 ( 7 ); if ( n1 == 5 ) {... } Peter Piehler (DBIS) C/C++ Programmierung / 29
19 increment / decrement Operator Die Operatoren für das Increment und Decrement: allgemein prefix increment: class-type& class-name::operator++(); prefix decrement: class-type& class-name::operator--(); postfix increment: class-type class-name::operator++(int); postfix decrement: class-type class-name::operator--(int); Peter Piehler (DBIS) C/C++ Programmierung / 29
20 increment / decrement Operator Deklaration eines postfix increment Operator: numeric operator ++( int ); Definition eines postfix increment Operator: // postfix Operatoren sind aufwaendiger als prefix Operatoren // da sie eine Kopie des aktuellen Objektes anlegen muessen. // Die C/C ++ Kompiler optimieren bei den Standarddatentypen // so oft wie moeglich zu den entsprechenden prefix Operationen. // Die exezessive Nutzung des postfix Operator zeugt von // schlechtem bzw. studentischem Quellcode ; -) numeric numeric :: operator ++( int ) { numeric result ( * this ); ++ mvalue ; return result ; } Anwendung eines postfix increment Operator: for ( numeric n ( 0 ); n < 5; n ++ ) {... } Peter Piehler (DBIS) C/C++ Programmierung / 29
21 friend Operatorfunktionen Die Operatorfunktionen besitzen jedoch, wie jede andere Kontrollstruktur, keinen Zugriff auf den protected- und pirvate-bereich des eigens defenierten Datentyps. Um dennoch den Zugriff auf diese Bereiche zu gestatten, kann in C++ einzelnen Funktionen, Methoden oder gesamten Klassen der Zugriff auf die geschützten Bereiche gestattet werden. Dies geschieht indem in der Klassendeklaration die betreffenenden Funktionen, Methoden und Klassen als friend deklariert werden: class numeric { protected : int mvalue ; public : /* Operatoren fuer den Zugriff auf mvalue */ }; friend int operator +( const int lhs, const numeric & rhs ); friend int operator -( const int lhs, const numeric & rhs ); Peter Piehler (DBIS) C/C++ Programmierung / 29
22 spezielle Operatormethoden Indexoperator Der Indexoperator erlaubt die Verwendung der von einem C-Array bekannten Syntax (int i = array[5];). some - type operator []( int idx ) const ; Derefenzierungsoperator Der Dereferenzierungsoperatator erlaubt die Verwendung der von einem Zeiger bekannten Syntax (int = *pointer_to_integer;). some - type operator *() const ; Peter Piehler (DBIS) C/C++ Programmierung / 29
23 spezielle Operatormethoden Funktionsoperator Der Funktionsoperator erlaubt, die Verwendung der von Funktionen bekannten Syntax auf Instanzen anzuwenden. class MyCompare { public : bool operator ()( int lhs, int rhs ) const { return lhs < rhs ; }; }... MyCompare compare ;... if ( compare (5, 8) ) {... } Solche Typen werden Funktionsobjekte (engl. Functor) genannt und sind eine Basiskomponente moderner Softwareentwicklung in C++. Mehr dazu in den folgenden Vorlesungen. Peter Piehler (DBIS) C/C++ Programmierung / 29
24 Outline 1 constructor/destructor 2 Operatoren 3 template Methoden 4 Aufgaben Peter Piehler (DBIS) C/C++ Programmierung / 29
25 template Methoden Die Fertigstellung der numeric Klasse artet in Fleiß- und Strafarbeit aus, wenn man jeden Datentyp als Parameter jedes Operator unterstützen. In C++ ist es möglich, die Logik unabhängig vom Datentyp zu hinterlegen. Der Kompiler prägt diese Logik für die einzelnen Datentypen aus. Eine solche Methode wird wie folgt deklariert: class numeric { public : template < typename T > /* (1) */ bool operator ==( const T& o ) const ; }; bool operator ==( const numeric & o ) const ; /* (2) */ Peter Piehler (DBIS) C/C++ Programmierung / 29
26 template Methoden man liest (1): Für jeden Datentyp T existiert eine Methode operator==, die eine konstante Referenz des Typs T übernimmt und einen boolschen Wert zurückgibt. man liest (2): Für den Datentyp numeric existiert eine spezielle Implementierung der Methode operator==, die eine konstante Referenz übernimmt und einen boolschen Wert zurückgibt. Der Compiler besitzt eine near-match Entscheidungslogik, um zu ermitteln, welche Definition einer template-implementation zur Anwendung kommt. Genaueres zum Umgang mit template-implementierung in den späteren Vorlesungen. Definition der template-methode: template < typename T > bool numeric :: operator ==( const T& o ) const { return mvalue == o ; } Peter Piehler (DBIS) C/C++ Programmierung / 29
27 Outline 1 constructor/destructor 2 Operatoren 3 template Methoden 4 Aufgaben Peter Piehler (DBIS) C/C++ Programmierung / 29
28 constructor/destructor Schreiben Sie eine Klasse CSignalBlock mit den Eigenschaften: wenn eine Instanz angelegt wird, wird die Signalmaske so verändert, dass alle Signale für den Prozess blockiert werden, wenn die Lebenszeit einer Instnz beendet ist, wird die Signalmaske auf den ursprünglichen Zustand zurück setzt, die Verwendung kann dann wie folgt aussehen: void function ( void ) { // Signale nicht blockiert { CSignalBlock signalblock ; // alle Signale blockiert } // Signale nicht blockiert } Peter Piehler (DBIS) C/C++ Programmierung / 29
29 Operatoren Schreiben Sie eine Klasse CSecureInt mit den Eigenschaften: sie verhält sich identisch zu einem standard int Datentyp, underflow- und overflow-situationen werden durch ihre Implementation erkannt und eine std::overflow error bzw. std::underflow error Ausnahme ausgelöst. Hinweise: Die Standardausnahmen werden durch die Einbindung von stdexcept verfügbar. Die Wertebereiche von Datentypen lassen sich in C++ komfortabel durch numeric limits abfragen. Beispiel: # include <limits > const int int_max ( std :: numeric_limits < int >:: max () ); const int int_min ( std :: numeric_limits < int >:: min () ); Peter Piehler (DBIS) C/C++ Programmierung / 29
Angewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
MehrDAP2-Programmierpraktikum Einführung in C++ (Teil 2)
DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und
Mehr10.4 Konstante Objekte
10.4 Konstante Objekte Genau wie bei einfachen Datentypen (int,double,...) kann man auch Objekte als const deklarieren. Eine solche Deklaration bedeutet, daß alle Attribute so behandelt werden, als wären
MehrDynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren
Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit
MehrVerschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes
Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine
MehrVisuelle Kryptographie. Anwendung von Zufallszahlen
Visuelle Kryptographie Anwendung von Zufallszahlen Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken, so dass Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken,
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case
MehrEinführung in die Programmierung mit C++
1 Seite 1 Einführung in die Programmierung mit C++ Teil III - Objektorientierte Programmierung 9. Klassen und Methoden Was sind Klassen? Seite 2 sprachliches Mittel von C++ um objektorientierte Programmierung
MehrC++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11
C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen
MehrImplementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
Mehr4. Objektorientierte Programmierung mit C++
4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung der Sprachfamilie Erweiterungen der Sprache C: Ein- und Ausgabe, Referenzen, Speicherallokation und Freigabe Grundlagen des Typkonzepts
MehrEinführung in C++ Operatoren überladen (Klassen)
Einführung in C++ Operatoren überladen (Klassen) Operatoren überladen Die Überladung von Operatoren ermöglicht es, vorhandene Operatoren (+,-,...) auch auf Objekte von Klassen anzuwenden. Die meisten der
MehrC++ - Objektorientierte Programmierung Konstante und statische Elemente
C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja
MehrWas Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache:
Kapitel 8 Operatoren Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache: Operatoren definieren Es ist in C++ möglich, Operatoren wie +, oder für
Mehr3. Operatoren und Ausdrücke
3. Operatoren und Ausdrücke Ausdruck (expression) Verarbeitungsvorschrift zur Ermittlung eines Wertes besteht aus Operanden und Operatoren wichtigste Ausdrücke: arithmetische und logische (boole'sche)
MehrObjektorientierung. Marc Satkowski 20. November C# Kurs
Objektorientierung Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Weiterführende Verzweigungen Tertiäre-Verzweigung switch case 2. Schleifen Zählschleife (for) break & continue 3. Objektorientierung
MehrInformatik 1 MaVt FS Übung 10
Informatik 1 MaVt FS 2010 Übung 10 Claudia Kuster ckuster@inf.ethz.ch Mittwoch 13-15h HG E 27 http://graphics.ethz.ch/~ckuster/teaching/mavt_info1_2010.html Vorlesung Objektorientierte Programmierung Konstruktoren
MehrPods und Objects (Klassen)
Pods und Objects (Klassen) Grundbegriffe: Pods = Plain Old Data: Es handelt sich dabei hauptsächlich um die schon in C eingebauten Datentypen wie Ganzzahltypen: char, short, int, long, long long (auch
MehrProf. W. Henrich Seite 1
Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse
MehrC++ - Objektorientierte Programmierung Polymorphie
C++ - Objektorientierte Programmierung Polymorphie hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen C++ - Objektorientierte Programmierung 21.06.16 Seite 1 Polymorphie
MehrC++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
MehrDatenkapselung: public / private
627 18. Klassen Klassen, Memberfunktionen, Konstruktoren, Stapel, verkettete Liste, dynamischer Speicher, Copy-Konstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp Datenkapselung:
Mehr3. Operatoren und Ausdrücke
3. Operatoren und Ausdrücke Ausdruck (expression) Verarbeitungsvorschrift zur Ermittlung eines Wertes besteht aus Operanden und Operatoren wichtigste Ausdrücke: arithmetische und logische (boole'sche)
MehrProgrammieren in C++ Überladen von Methoden und Operatoren
Programmieren in C++ Überladen von Methoden und Operatoren Inhalt Überladen von Methoden Überladen von Operatoren Implizite und explizite Konvertierungsoperatoren 7-2 Überladen von Methoden Signatur einer
MehrC-Programmierung: Ausdrücke und Operatoren#Division.2F
C-Programmierung: Ausdrücke und Operatoren#Division.2F http://de.wikibooks.org/wiki/c-programmierung:_ausdrücke_und_operatoren#division_.2f This Book Is Generated By Wb2PDF using RenderX XEP, XML to PDF
MehrProgrammierkurs C/C++
Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Freitag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Blockkurs: "Einführung in C/C++" 2 Vererbung Klassen erben die Member von Basisklassen:
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
MehrThemen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren
Themen Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren Statische Methoden Klassenmethoden Merkmal der Klasse nicht eines einzelnen Objekts
MehrPeter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden. ffl mitp
Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden ffl mitp Inhaltsverzeichnis Einleitung 19 1 Grundlagen 21 Entwicklung und Eigenschaften von C + + 22 Objektorientierte Programmierung
MehrEinstieg in die Informatik mit Java
1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition
MehrAbend 4 Übung : Erweitern von Klassen durch Vererbung
Abend 4 Übung : Erweitern von Klassen durch Vererbung Ziel, Inhalt Wir erweitern die Klassen, die wir zum Zeichnen mit TsuZeichnen verwenden. Dabei wenden wir die Vererbung an um die Klassen zu spezialisieren
Mehr4.2 Programmiersprache C
4.2.1. Elementare Datentypen (signed) int, unsigned int, (signed) short (int), unsigned short (int), (signed) long (int), unsigned long (int) Elementare Datentypen für ganze Zahlen mit oder ohne Vorzeichen.
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 4. November 2015 Administratives Zur Abgabe von Übungsaufgaben Nein, wir
MehrC- Kurs 03 Ausdrücke und Operatoren
C- Kurs 03 Ausdrücke und Operatoren Dipl.- Inf. Jörn Hoffmann jhoffmann@informadk.uni- leipzig.de Universität Leipzig InsDtut für InformaDk Technische InformaDk Ausdrücke Institut für Informatik Ausdrücke
MehrObjektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
MehrGrundlagen der Informatik 2. Operatoren
2. Operatoren Referenzen Typumwandlungen Vorrangregeln Kommentare Grundlagen der Informatik (Alex Rempel) 1 Ausdruck (z.b. "x = 34 + y;") Folge von Operatoren und Operanden Operatoren Arithmetische Operatoren
MehrC++ Notnagel. Ziel, Inhalt. Programmieren in C++
C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt
MehrObjektorientiert in C++
Dirk Louis Objektorientiert in C++ Einstieg und professioneller Einsatz intwickier.pres: Vorwort 11 1 Schnellkurs C++ 13 1.1 ANSI-C++ und die Compiler 13 Compiler und Programmerstellung 13 ANSI und die
MehrDynamische Datentypen
Dynamische Datentypen Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel
MehrCrashkurs C++ Wiederholung
Crashkurs C++ Wiederholung #include int main(void) { int i, j; bool is_prime; for (j = 1; j < 1000; j += 2) { is_prime = true; for (i = 3; i
MehrKlassen. Kapitel Klassendeklaration
Kapitel 4 Klassen Wir kommen nun zu einem sehr wichtigen Aspekt der OOT: zu den Klassen. Eine Klasse ist eine vom Benutzer definierte Datenstruktur, eine Sammlung von Variablen (unterschiedlichen Typs)
MehrPolymorphismus 179. Function.h. #include <string>
Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function
Mehr3. Operatoren und Ausdrücke
3. Operatoren und Ausdrücke Ausdruck (expression): Verarbeitungsvorschrift zur Ermittlung eines Wertes besteht aus Operanden und Operatoren wichtigste Ausdrücke: arithmetische und logische (Boole'sche)
MehrTeil 10: Operator Überladung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden
Teil 10: Operator Überladung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 10 Operator-Überladung... 3 10.1 Übersicht aller
MehrC++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17
C++ Teil 9 Sven Groß 17. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 9 17. Juni 2016 1 / 17 Themen der letzten Vorlesung Objektorientierung und Klassen Attribute / Datenelemente Methoden / Elementfunktionen
MehrEinstieg in die Informatik mit Java
Vorlesung vom 5.11.07, Weitere Ausdrücke Übersicht 1 Vergleichsoperatoren 2 Kombinierte Zuweisungsoperatoren 3 Logische Operatoren 4 Weitere Operatoren 5 Klassifizierung von Operatoren 6 Typumwandlungen
MehrProgrammieren - C++ Templates
Programmieren - C++ Templates Reiner Nitsch r.nitsch@fbi.h-da.de Was sind Templates? C++ Templates ermöglichen generische Programmierung. Das ist Programmierung unabhängig vom speziellen Objekt-Typ Templates
MehrUnterlagen. CPP-Uebungen-08/
Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen
MehrVorlesungsprüfung Programmiersprache 1
Vorlesungsprüfung Programmiersprache 1 Termin der Prüfung: 1) Di 20.03.2018 16:15 17:00 HSB 3 2) Di 15.05.2018 16:15 17:00 HSB 3 3) Di 12.06.2018 16:15 17:00 HSB 3 Stoffgebiete: 1) Ganzzahltypen: char,
MehrProgrammierkurs. Steffen Müthing. January 25, Interdisciplinary Center for Scientific Computing, Heidelberg University
Programmierkurs Steffen Müthing Interdisciplinary Center for Scientific Computing, Heidelberg University January 25, 2019 Inhalt Operator Overloading Motivation Syntax Unterstützung für I/O Funktoren Beispiel
MehrC++ - Operatoren. Eigene Klassen mit neuen Funktionen
C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,
MehrMapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017
Mapra: C++ Teil 6 Felix Gruber, Sven Groß IGPM, RWTH Aachen 13. Juni 2017 Felix Gruber, Sven Groß (IGPM, RWTH Aachen) Mapra: C++ Teil 6 13. Juni 2017 1 / 22 Was bisher geschah Klassen I Attribute und Methoden
MehrAngewandte Mathematik in OOP WS 2011/12. Abschluss-Test
Angewandte Mathematik in OOP WS 2011/12 Abschluss-Test 012 6 5 4 5 6 Aufgabe 1 (9 Punkte 1 Punkt je Antwort) Bitte jeweils eine Antwort ankreuzen (je nach Fragestellung die richtige oder falsche): a.)
MehrOperatoren in C. Gastvorlesung Andreas Textor
Operatoren in C Gastvorlesung - 11.01.10 Andreas Textor andreas.textor@hs-rm.de Terminologie Operand 4 + 2 Operand Operator Unterscheidung nach Anzahl Operanden Unäre, Binäre und Ternäre Operatoren Z.B.:!x;
MehrC++ Bit-Access. Detlef Wilkening
http://www.wilkening-online.de Seite 1 / 30 C++ Bit-Access Detlef Wilkening 10.03.2016 http://www.wilkening-online.de Seite 2 / 30 Einfache Aufgabe: Klasse, die ein Int kapselt Genau genommen hier-und-heute
MehrC++ Teil 10. Sven Groß. 17. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Dez / 14
C++ Teil 10 Sven Groß IGPM, RWTH Aachen 17. Dez 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 10 17. Dez 2014 1 / 14 Themen der letzten Vorlesung Objektorientierung und Klassen Attribute / Datenelemente
MehrProgrammieren in C++
Programmieren in C++ SS 2016 Vorlesung 5, Dienstag 24. Mai 2016 (Klassen und Objekte) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen Institut für Informatik Universität Freiburg Blick
MehrC++ Klassen weitere Funktionen
C++ Klassen weitere Funktionen Übersicht static Elemente const Elemente Zusätzliches zu Konstruktoren Kopier-Konstruktor Konvertierung-Konstruktor Initialisierungslisten Friend Funktionen 2 Statische Klassenkomponenten
MehrC-Programmierkurs Mathematik
Mathematik WS 2018/2019 Dr. Bodo Kalthoff Speicher für Werte Variablen Über Variablennamen ansprechbar Sprechende Namen vergeben! Variablen können Zahlen, Buchstaben oder komplexere Werte enthalten Der
Mehr7. Übung Informatik II - Objektorientierte Programmierung
7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber
MehrEinleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders
Typisierung Effiziente Programmierung Thomas Schnieders Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2018-04-26 Thomas Schnieders Typisierung 1
MehrEinstieg in die Informatik mit Java
1 / 29 Einstieg in die Informatik mit Java Weitere Ausdrücke Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 29 1 Überblick 2 Kombinierte Zuweisungsoperatoren 3 Vergleichsoperatoren
Mehr11. Übung Informatik II - Operatorfunktionen
Stand: 26. Juni 2015 Inhalt 1 2 3 Übersicht 1 2 3 Warum Operatoren überladen? Großteil der Operatoren (Arithmetik, Logik, Vergleiche) nur für Standarddatentypen (Zahlen, Zeiger) implementiert vergleichbare
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
MehrHello World! Eine Einführung in das Programmieren Variablen
Hello World! Eine Einführung in das Programmieren Variablen Görschwin Fey Institute of Embedded Systems Hamburg University of Technology Slide 2 Wie werden Daten in Programmen gespeichert und manipuliert?
MehrEinführung Programmierpraktikum C Michael Zwick
Einführung Programmierpraktikum C Michael Zwick Vorlesung, Übung & Fragestunde Dr.-Ing. Michael Zwick Raum Z945 zwick@tum.de (089) 289 23609 Tutorium Ab Dienstag: Auswahl Tutoriumsplatz auf www.ldv.ei.tum.de/lehre/computertechnik
Mehr5.3 Auswertung von Ausdrücken
5.3 Auswertung von Ausdrücken Funktionen in Java bekommen Parameter/Argumente als Input, und liefern als Output den Wert eines vorbestimmten Typs. Zum Beispiel könnte man eine Funktion i n t min ( i n
MehrPolymorphismus 44. Function.hpp. #include <string>
Polymorphismus 44 #include Function.hpp class Function { public: virtual ~Function() {}; virtual const std::string& get_name() const = 0; virtual double execute(double x) const = 0; }; // class
MehrPIC16 Programmierung in HITECH-C
PIC16 Programmierung in HITECH-C Operatoren: Arithmetische Operatoren - binäre Operatoren + Addition - Subtraktion * Multiplikation / Division % Modulo + - * / sind auf ganzzahlige und reelle Operanden
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung
MehrVokabeln. 4.1 Benutzer definierte Datentypen. Kapitel 4. Prof. Dr. Gerhard Berendt C++ oop? SS 2002 Arbeitsblatt 4
4.1 Benutzer definierte Datentypen C++ unterstützt die Einführung benutzer definierter Datentypen (auch Abstrakte Datentypen (ADT) genannt). ADTs bieten einen guten Einstieg in das Paradigma der objekt
MehrProgrammieren in C++ Klassen
Programmieren in C++ Klassen Inhalt Klassen (vertieft) Destruktor Konstruktoren Move-Semantik und Rechtswert-Referenzen (C++11) C++11 Features Prof. Dr. C. Stamm Programmieren in C++, FS 13 4-2 Implementierung
MehrObjektorientiertes Programmieren mit C++ für Fortgeschrittene
BEREICH DATENTECHNIK I CQ 400 00 TH 02 Objektorientiertes Programmieren mit C++ für Fortgeschrittene Kapitel 4 4. Ergänzungen zur Laufzeitpolymorphie 4.1. Abstrakte Klassen 4.2. Laufzeittypinformation
MehrObjektorientierte Programmierung II
Objektorientierte Programmierung II OOP I Erlaubt Entwicklers, im Problemraum zu denken und zu arbeiten. Das Problem wird in eine Menge von Objekten zerlegt. Objekte wirken aufeinander, um das Problem
MehrPROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy
PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion
MehrProgrammieren in C++ Templates
Programmieren in C++ Templates Inhalt Templates Funktions- und Klassen-Templates Spezialisierung von Templates Generische Klassen Einbinden von Templates Instantiierung (implizit und explizit) Templates
MehrVisual C#.NET. Bearbeitet von Patrick A. Lorenz
Visual C#.NET Bearbeitet von Patrick A. Lorenz 1. Auflage 2002. Taschenbuch. 256 S. Paperback ISBN 978 3 446 22132 1 Format (B x L): 16,8 x 24,1 cm Gewicht: 640 g Zu Leseprobe schnell und portofrei erhältlich
MehrDynamische Datenstrukturen in C++ 150
Dynamische Datenstrukturen in C++ 150 In allen bisherigen Beispielen belegten die Objekte entweder statischen Speicherplatz oder sie lebten auf dem Stack. Dies vermied bislang völlig den Aufwand einer
MehrProgrammieren in C++
Programmieren in C++ SS 2012 Vorlesung 5, Dienstag 5. Juni 2012 (Klassen, Objekte, Methoden, new & delete) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen Institut für Informatik Universität
MehrPraxisorientierte Einführung in C++ Lektion: "Vererbung"
Praxisorientierte Einführung in C++ Lektion: "Vererbung" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ April 24, 2014 1 / 23 Table
MehrKapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp
Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp ZAIK Universität zu Köln WS 07/08 1 / 6 Datentypen Arten von Datentypen
MehrPolymorphe for-anweisung 237
Polymorphe for-anweisung 237 Beginnend mit C++11 wird for (for-range-declaration : expression) statement durch den Übersetzer zu folgendem Programmtext expandiert: { auto&& range = (expression); for (auto
MehrRelationen-Algebra und Persistenz Teil I
Relationen-Algebra und Persistenz Teil I Implementierungskonzepte und Anforderungen an Attributdatentypen LG Datenbanksysteme für neue Anwendungen Inhalt Flobs DbArrays Attributsdatentypen Folie 2 Bisher:
MehrPods und Objects (class und struct)
Grundbegriffe: Pods und Objects (class und struct) Pod = Plain Old Data: Es handelt sich dabei hauptsächlich um die schon in C eingebauten Datentypen wie z.b. Ganzzahltypen: char, short, int, long, long
MehrDatenkapselung: public / private
612 18. Klassen Klassen, Memberfunktionen, Konstruktoren, Stapel, verkettete Liste, dynamischer Speicher, Copy-Konstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp Datenkapselung:
MehrKonstruktor/Destruktor
1/23 Konstruktor/Destruktor Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/23 Outline 1 2 3/23 Inhaltsverzeichnis 1 2
MehrEinführung zu den Klassen in C++ 107
Einführung zu den Klassen in C++ 107 class Counter { public: // constructors Counter() : counter{0 { Counter(int counter) : counter{counter { // accessors int get() const { return counter; // mutators
MehrTeil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen
Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für
MehrLösung der OOP-Prüfung WS12/13
2.1.2013 Lösung der OOP-Prüfung WS12/13 1. Aufgabe a) Da der Konstruktor im protected-bereich steht, können keine eigenständigen Objekte der Klasse angelegt werden. Durch den protected-konstruktor wird
MehrInhalt. Vorwort Erste Grundlagen... 15
Inhalt Vorwort... 13 1 Erste Grundlagen... 15 1.1 Historisches... 15 1.2 Die Programmiersprache C++ und die Maschine... 16 1.3 Werkzeuge zum Programmieren... 18 1.3.1 Der Editor... 18 1.3.2 Der Compiler...
MehrThema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen
1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:
MehrLambda-Funktionen. Lambda-Funktionen. Lambda-Funktionen sollen
Lambda-Funktionen Lambda-Funktionen sind Funktionen ohne Namen. definieren ihre Funktionalität an Ort und Stelle. können wie Daten kopiert werden. können ihren Aufrufkontext speichern. Lambda-Funktionen
MehrProgrammieren in C++
Programmieren in C++ SS 2016 Vorlesung 8, Dienstag 14. Juni 2016 (Templates, Templates, Templates) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen Institut für Informatik Universität
Mehr9 Programmieren von Klassen
9 Programmieren von Klassen 9.1 Einführung Zentrales Konzept in der Objektorientierten Programmierung ist die Kapselung von Daten und Elementfunktionen, die sogenannte Encapsulation. In Objektorientierten
MehrGrundkurs C++ IDE Klassenhierarchien
Grundkurs C++ IDE Klassenhierarchien Martin Knopp 03.05.2017 Folie 1/34 GK C++: IDE, Klassenhierarchien Martin Knopp 03.05.2017 IDE Integrated Development Environment Wir empfehlen: Qt Creator (Bestandteil
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
Mehr1 Klassen und Objekte
1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente
Mehr