I Operatoren selbst können überladen werden. I Methode add funktioniert auch. I Überladen sollte nur dafür verwendet werden

Größe: px
Ab Seite anzeigen:

Download "I Operatoren selbst können überladen werden. I Methode add funktioniert auch. I Überladen sollte nur dafür verwendet werden"

Transkript

1 Überladen von Operatoren 4 class Complex 5 { 6 private: 7 double vreal; 8 double vimag; 9 public: 10 Complex(double r, double i); 11 double getreal(){return vreal;}; 12 double getimag(){return vimag;}; 1 void setreal(double r){vreal = r;}; 14 void setimag(double i){vimag = i;}; 15 void print(); 16 }; Complex::Complex(double r, double i) 19 { 20 vreal = r; 21 vimag = i; 22 } 2 24 void Complex::print() 25 { 26 cout << getreal() << " + " << getimag() 27 << "i" << endl; 28 } 29 0 int main() 1 { 2 Complex mycomplex(, 5); mycomplex.print(); 4 } I Ausgabe: + 5i 60 Überladen von Operatoren 2 4 class Complex 5 { 6 /* private data */ 7 public: 8 Complex(double r = 0, double i = 0); 9 Complex add(complex rhs); /* remaining public data */ 12 }; 1 14 /* constructor and print definition */ Complex Complex::add(Complex rhs) 17 { 18 double rtmp = getreal() + rhs.getreal(); 19 double itmp = getimag() + rhs.getimag(); 20 return Complex(rTmp, itmp); 21 } 22 2 int main() 24 { 25 Complex mycomplex(, 5), mycomplex2(2, 7); 26 Complex mycomplex; 27 mycomplex = mycomplex.add(mycomplex2); 28 mycomplex.print(); 29 mycomplex2.print(); 0 mycomplex.print(); 1 } I Ausgabe: + 5i 2 + 7i i 61 Überladen von Operatoren 4 class Complex 5 { 6 /* private data */ 7 public: 8 Complex(double r = 0, double i = 0); 9 Complex operator+(complex rhs); /* remaining public data */ 12 }; 1 14 /* constructor and print definition */ Complex Complex::operator+(Complex rhs) 17 { 18 double rtmp = getreal() + rhs.getreal(); 19 double itmp = getimag() + rhs.getimag(); 20 return Complex(rTmp, itmp); 21 } 22 2 int main() 24 { 25 Complex mycomplex(, 5), mycomplex2(2, 7); 26 Complex mycomplex; 27 mycomplex = mycomplex + mycomplex2; 28 mycomplex.print(); 29 mycomplex2.print(); 0 mycomplex.print(); 1 } I Ausgabe: + 5i 2 + 7i i 62 Überladen von Operatoren 4 I Operatoren selbst können überladen werden mittels Schlüsselwort operator wie im Beispiel operator+ I Methode add funktioniert auch ist aber viel mühsamer in der Verwendung I vgl. Syntax: mycomplex = mycomplex.add(mycomplex2); mycomplex = mycomplex + mycomplex2; I interne Auswertung: mycomplex = mycomplex.operator+(mycomplex2); I Verwendung wird übersichtlicher Programm wird lesbarer I Überladen sollte nur dafür verwendet werden (+) mit(-) zu überladen nicht ratsam I Operatoren von Standardtypen können nicht überladen werden (z.b. int) I Zusätzliche Operatoren können hier auch nicht definiert werden 6

2 Überladen von typecasts was kann überladen werden + - * / & ˆ & ~! = < > += -= *= /= %= ˆ= &= = »= «= ==!= <= >= && ++ ->*, -> [] () new new[] delete delete[] I unäre und binäre Operatoren I unterscheide zwischen Postfix und Präfix leicht unterschiedliche Syntax I operator kann natürlich auch überladen werden gemischte Arithmetik möglich z.b. complex + real 1 class Complex 2 { /* private data */ 4 public: 5 Complex(int r){vreal = r; vimag = 0;}; 6 operator int(); 7 /* remaining public data */ 8 }; 9 10 Complex::operator int() 11 { 12 return int(vreal); 1 } int main() 16 { 17 Complex mycomplex(, 5), mycomplex2(2, 7); 18 int x = 1; 19 mycomplex2.print(); 20 mycomplex2 = x; 21 mycomplex2.print(); 22 cout << x << endl; 2 x = mycomplex; 24 cout << x << endl; 25 } I Ausgabe: 2 + 7i 1 + 0i 1 I typecast in nativen Datentyp mittels operator type I andere Richtung mittels Konstruktor Anmerkung strings I rückblickend: string ist eine Klasse mit vielen Methoden string überlädt Operatoren I für genauere Informationen API checken I Links: Klassendiagramm in UML I Unified Modeling Language I Modelierungssprache Softwaredesign zum Vererbung I was ist Vererbung? I geerbte Felder und Methoden I Methoden redefinieren I Aufruf von Basismethoden 66 67

3 Was ist Vererbung Was ist Vererbung 2 I im Alltag klassifizieren wir Objekte I wir teilen unsere Umgebung in Kategorien ein ein Auto ist ein Fortbewegungsmittel ein Hund ist ein Säugetier eine SPD-Matrix ist immer noch eine Matrix I alle Säugetiere können sich bewegen und atmen Hunde haben zusätzlich spezielle Eigenschaften... bellen, mit dem Schwanz wedeln... I Die Kategorien lassen sich weiter unterteilen Ferrari und Porsche beschreiben spezielle Autos I ganze Hierarchien entstehen Unterkategorien sind jeweils Erweiterungen Eigenschaften der Basiskategorie haben alle ) ist-ein-beziehung I C++ stellt Kategorien durch Klassen dar I spezielle werden von allgemeineren abgeleitet I diesen Vorgang nennt man Vererbung Was ist Vererbung Die Syntax der Vererbung I Vererbung in C++ bildet Wirklichkeit ab Spezialisierung durch zusätzliche Methoden allgemeine Methoden sind direkt verfügbar Fähigkeit bewegen muss bei Auto nicht separat implementiert werden I Syntax: ) das wurde von Fortbewegungsmittel geerbt class Car : public Fortbewegungsmittel I Ableitung erfolgt durch (:) I auto erbt alle Methoden und Felder von fortbewegungsmittel auto ist eine abgeleitete Klasse fortbewegungsmittel ist die Basisklasse I Alle Matrizen haben Einträge I reguläre Matrizen sind invertierbar I für SPD bietet sich zusätzlich Cholesky an

4 Ein Beispiel - ctn d Ein Beispiel 2 #include <string.h> using namespace std; 4 5 class Fortbewegungsmittel 6 { 7 protected: 8 double speed; 9 public: 10 Fortbewegungsmittel(){}; 11 ~Fortbewegungsmittel(){}; 12 Fortbewegungsmittel(double s){speed = s;}; 1 double getspeed(){return speed;}; 14 void setspeed(double s){speed = s;}; 15 void move(); 16 }; class Car : public Fortbewegungsmittel 19 { 20 private: 21 string color; 22 public: 2 Car(){}; 24 void fahren(); 25 string getcolor(){return color;}; 26 void setcolor(string c){color = c;}; 27 }; 1 /* class definitions */ 2 void Fortbewegungsmittel::print() 4 { 5 cout << "Geschwindigkeit: " << 6 getspeed() << endl; 7 } 8 9 void Fortbewegungsmittel::move() 10 { 11 cout << "Ich habe mich bewegt" << endl; 12 } 1 14 void Car::fahren() 15 { 16 cout << "Ich bin gefahren" << endl; 17 } int main() 20 { 21 Fortbewegungsmittel fahrrad(10); 22 Car mycar; 2 mycar.setspeed(50); 24 mycar.setcolor("rot"); 25 fahrrad.move(); 26 mycar.fahren(); 27 mycar.move(); 28 } I Ausgabe:Ich habe mich bewegt Ich bin gefahren Ich habe mich bewegt 72 7 Das Schlüsselwort protected I Problem: private Daten sind bei abgeleiteten Klassen nicht verfürbar Deklaration als public nicht sinnvoll I Lösung: protected I Daten sind für alle abgeleiteten Klassen sichtbar für alle anderen jedoch wie private 1 class Basis 2 { private: 4 int privat; 5 protected: 6 int protect; 7 public: 8 int publik; 9 }; class Abgelitten : public Basis 12 { 1 void zugriff() 14 { 15 a = privat; // Das gibt Ärger! 16 a = protect; // Das funktioniert. 17 a = publik; // Das funktioniert sowieso. 18 } 19 }; int main(){ 22 Basis myvar; 2 int a; 24 a = myvar.privat; // Das läuft nicht. 25 a = myvar.protect; // Das auch nicht. 26 a = myvar.publik; // Das funktioniert. 27 } 74 Konstruktoren der Basisklasse aufrufen I Vererbung bedeutet eine ist-ein-beziehung Jedes Auto ist ein Fortbewegungsmittel I Das merkt man am Aufruf Zuerst wird der Konstruktor der Basisklasse aufgerufen Danach der Konstruktor der abgeleiteten Klasse Bei Destruktoren anders herum I Entsprechend stellen Konstruktoren oft Erweiterungen dar z.b. zusätzliche Felder werden initialisiert I daher: Basisklassenkonstruktor aufrufen 1 Car::Car(double s, string c): 2 Fortbewegungsmittel(s), color(c) 4 { 5 cout << "car-konstruktor" << endl; 6 } 75

5 Funktionen redefinieren 2/2 Funktionen redefinieren 1/2 I Funktionen können in der abgeleiteten Klasse komplett neu gestaltet (redefiniert) werden 1 void Fortbewegungsmittel::print() 2 { cout << "Geschwindigkeit: " << getspeed() 4 << endl; 5 } 6 7 void Car::print() 8 { 9 cout << "Geschwindigkeit: " << getspeed() 10 << ", Farbe: " << getcolor() << endl; 11 } I nicht verwechseln mit überladen mehrere Methoden mit unterschiedlicher Signatur I in jedem Fall wird immer die richtige Methode aufgerufen I Problem: Basismethoden werden verdeckt eine redefinierte Methode verdeckt alle Basismethoden 1 void Fortbewegungsmittel::print(); 2 void Fortbewegungsmittel::print(int s); void Fortbewegungsmittel::print(int s, double c); 4 5 void Car::print(); 6 7 /* Implementierung */ 8 9 int main() 10 { 11 Car mycar; 12 mycar.print(); // OK 1 mycar.print(10); // funktioniert nicht 14 } I kein Zugriff mehr auf überladene Basisfunktionen I Lösung: Basisfunktion manuell aufrufen vollständigen Namen verwenden mycar.fortbewegungsmittel::print(10); Ein Beispiel 2/ Ein Beispiel 1/ 4 class Punkt{ 5 protected: 6 int x; 7 int y; 8 public: 9 Punkt(int x, int y); 10 int getx(){return x;}; 11 int gety(){return y;}; 12 void bewegen(int x, int y); //überladen 1 void bewegen(int x); 14 void bewegen(); 15 void print(); 16 void center(); 17 }; class Kreis : public Punkt{ 20 private: 21 int radius; 22 public: 2 Kreis(int x, int y, int radius); 24 int getrad(){return radius;}; 25 void bewegen(int r); //redefiniert 26 void print(); 27 }; I unterscheide zwischen überladen und redefinieren 78 1 Punkt::Punkt(int x, int y){ 2 this->x = x; this->y = y;} 4 5 void Punkt::bewegen(int x, int y){ 6 this->x = this->x+x; 7 this->y = this->y+y;} 8 9 void Punkt::bewegen(int x){ 10 this->x = this->x+x;} void Punkt::bewegen(){ 1 this->x = this->x-; 14 this->y = this->y-4;} void Punkt::print(){ 17 cout << "X: " << getx() << ", Y: " 18 << gety() << endl;} void Punkt::center(){ 21 x=0; y=0;} 22 2 Kreis::Kreis(int x, int y, int radius): 24 Punkt(x,y) 25 { 26 this->radius = radius; 27 } void Kreis::bewegen(int r){ 0 x = x+radius+r;} 1 2 void Kreis::print(){ cout << "X: " << getx() << ", Y: " << 4 gety() << ", Radius: " << getrad() << endl;} 79

6 Ein Beispiel / 1 int main() 2 { Punkt P1(,7); 4 P1.print(); 5 P1.bewegen(1); 6 P1.print(); 7 8 Kreis K1(,7,12); 9 K1.print(); 10 K1.bewegen(); 11 K1.print(); 12 K1.Punkt::bewegen(,4); 1 K1.print(); 14 K1.center(); 15 K1.print(); 16 } I Ausgabe:X:, Y: 7 X: 16, Y: 7 X:, Y: 7, Radius: 12 X: 18, Y: 7, Radius: 12 X: 21, Y: 11, Radius: 12 X: 0, Y: 0, Radius: 12 I in UML: Vererbung mit Matrizen 1/ 2 #include <vector> using namespace std; 4 5 class Matrix{ 6 protected: 7 int m,n; //dimensions 8 vector<vector<double> > entries; 9 public: 10 int getm(){return m;}; 11 int getn(){return n;}; 12 void setm(int dim){m = dim;}; 1 void setn(int dim){n = dim;}; 14 double getentry(int i, int j){return entries[i][j];}; 15 void setentry(int i, int j, double entry); 16 Matrix(); 17 Matrix(int m, int n, int init); 18 }; class ComplexMatrix : public Matrix{ 21 private: 22 vector<vector<double> > imag; 2 public: 24 double getimagentry(int i, int j){return imag[i][j];}; 25 void setimagentry(int i, int j, double entry); 26 ComplexMatrix(); 27 ComplexMatrix(int m, int n, int init); 28 }; Vererbung mit Matrizen 2/ 1 /* class definitions*/ 2 void Matrix::setEntry(int i, int j, double entry){ 4 if (i >= m j >= n){ 5 cout << "Index exceeds matrix dimensions" << endl; 6 }else{ 7 entries[i][j] = entry; 8 } 9 } Matrix::Matrix(): 12 m(1), n(1), 1 entries(vector<vector<double> >(m, vector<double>(n, 0))){} Matrix::Matrix(int m, int n, int init): 16 m(m), n(n), 17 entries(vector<vector<double> >(m, vector<double>(n, init))) 18 {} void ComplexMatrix::setImagEntry(int i, int j, double entry){ 21 if (i>m j > n){ 22 cout << "Index exceeds matrix dimensions" << endl; 2 }else{ 24 imag[i][j] = entry; 25 } 26 } ComplexMatrix::ComplexMatrix(): 29 imag(vector<vector<double> >(m, vector<double>(n, 0))){} 0 1 ComplexMatrix::ComplexMatrix(int m, int n, int init): 2 Matrix(m,n,init), imag(vector<vector<double> >(m, vector<double>(n, init))) 4 {} Übersicht - Vererbung I Vererbung macht den Code leichter zu warten I Verebung erhöht die Wiederverwendbarkeit massiv I genaue Implementierung der Basisklasse unwichtig I abgeleitete Klasse erbt alle Methoden und Felder sofern der Zugriff dies erlaubt I neue Implementierung für geerbte Methoden möglich Methoden redefinieren I Achtung: verdeckt alle gleichnamigen Basismethoden (dies kann natürlich gewollt sein) Zugriff über vollen Funktionsnamen I Fazit: verwende Vererbung immer wenn (sinnvoll) möglich verwende Code wieder wenn möglich senkt die Fehlerquote erleichtert spätere Änderungen 82 8

7 One more thing I es muss nicht immer public vererbt werden Basisklasse abgeleitete Klasse public protected private public public protected private protected protected protected private private hidden hidden hidden C++ und Pointer I Schlüsselwort new I Schlüsselwort delete I Unterschied zu malloc und free I Sichtbarkeit ändert sich durch Art der Vererbung Zugriff kann nur verschärft werden andere außer public machen selten Sinn Freigabe mit delete Pointer mit new I dyn. Erzeugung von Objekten mit new statt malloc int* i1 = new int; *i1 = 25; I Vergleich zu C int* i2 = malloc(sizeof(int)); *i1 = 25; I Erzeugung von Arrays mittel new[] int* feld = new int[128]; I Vergleich zu C int* feld2 = malloc(128*sizeof(int)); I Speichergröße muss nicht angegeben werden I Freigeben von Objekten mit delete statt free int* i1 = new int; delete i1; I Vergleich zu C int* i2 = malloc(sizeof(int)); free(i2); I Freigabe von Arrays mittel delete[] int* feld = new int[128]; delete[] feld; I Vergleich zu C int* feld2 = malloc(128*sizeof(int)); free(feld2); I nicht verwechseln: new, new[], delete, delete[] I schlecht: int* t = new int[]; delete t; I vielleicht sogar noch schlechter: int* t = new int; delete[] t; 86 87

8 Pointer auf Objekte 4 class Test 5 { 6 public: 7 Test() 8 {cout << "constructor" << endl;} 9 ~Test() 10 {cout << "destructor" << endl;} 11 void Hello() 12 {cout << "Hello World!" << endl;} 1 }; int main() 16 { 17 Test* t1 = new Test(); 18 t1->hello(); 19 delete t1; 20 t1 = 0; 21 delete t1; 22 2 Test* t2 = (Test*) malloc(sizeof(test)); 24 t2->hello(); 25 free(t2); 26 } I Ausgabe: constructor Hello World! destructor Hello World! I Zeiger nach delete auf 0 setzen (Z. 20) 88 Zusammenfassung I new legt Speicher an und ruft Konstruktor auf Konstruktor kann sogar ausgewählt werden Test* t1 = new Test(x,y,z); new[] ruft immer den Standardkonstruktor auf I Rückgabewert ist der richtige Zeiger I Speichergröße muss nicht angegeben werden I malloc legt nur Speicher an keine Initialisierung durch malloc Konstruktor kann nicht mehr aufgerufen werden I Speicher in Bytes muss angegeben werden I Rückgabewert ist immer void* explizites type-cast notwendig (bei nativen Typen optional) I delete löscht Speicher und ruft Destruktor auf I free gibt nur Speicher frei Destruktor kann nicht mehr aufgerufen werden I Fazit: Verwende new, delete mit C++ I Verwende malloc, free mit C I niemals die beiden vermischen z.b. new mit free freigeben I es gibt keine Alternative zu realloc z.b. vector verwenden 89

3 4 void swap(int *px, int*py)

3 4 void swap(int *px, int*py) Was ist eine Referenz Referenzen sind Aliasnamen Erzeugung mittels (&) nicht verwechseln mit Adressoperator ähnlich zu (*) int &someref = someint; Referenzen Beispielcode Unterschied Referenz Pointer

Mehr

I Aufwand = Anzahl benötigter Operationen. I programmspezifische Operationen nicht gezählt. I Aufwand wird durch einfaches Zählen ermittelt

I Aufwand = Anzahl benötigter Operationen. I programmspezifische Operationen nicht gezählt. I Aufwand wird durch einfaches Zählen ermittelt Aufwand eines Algorithmus Aufwand I Aufwand von Algorithmen I Landau-Symbol O I time.h, clock t, clock() I Aufwand = Anzahl benötigter Operationen Zuweisungen Vergleiche arithmetische Operationen I programmspezifische

Mehr

I nicht verwechseln mit überladen

I nicht verwechseln mit überladen Konstruktoren der Basisklasse aufrufen Funktionen redefinieren 1/2 I Vererbung bedeutet eine ist-ein-beziehung Jedes Auto ist ein Fortbewegungsmittel I Das merkt man am Aufruf Zuerst wird der Konstruktor

Mehr

Objektorientiertes Design

Objektorientiertes Design Was sind Klassen Objektorientiertes Design I Klassen I Typen I Objekte I Klassen sind benutzerdefinierte Datentypen I Verwendung völlig analog zu int, string I Klassen erweitern struct aus C erlauben Methoden

Mehr

Einführung in das Programmieren für Technische Mathematiker

Einführung in das Programmieren für Technische Mathematiker Einführung in das Programmieren für Technische Mathematiker Einführung in C++ Marcus Page, MSc. Prof. Dr. Dirk Praetorius Fr. 10:15-11:45, Freihaus HS 8 Institut für Analysis und Scientific Computing C++

Mehr

Vererbung. Was ist Vererbung 1/2. Die Syntax der Vererbung. Was ist Vererbung 2/2. class Auto : public FortbewegungsMittel

Vererbung. Was ist Vererbung 1/2. Die Syntax der Vererbung. Was ist Vererbung 2/2. class Auto : public FortbewegungsMittel Was ist Vererbung 1/ Im Alltag klassifizieren wir Objekte Vererbung Wir teilen unsere Umgebung in Kategorien ein Ein Auto ist ein Fortbewegungsmittel Ein Hund ist ein Säugetier Eine quadratische Matrix

Mehr

C++ und Pointer. I Schlüsselwort new I Schlüsselwort delete I Unterschied zu malloc und free

C++ und Pointer. I Schlüsselwort new I Schlüsselwort delete I Unterschied zu malloc und free C++ und Pointer I Schlüsselwort new I Schlüsselwort delete I Unterschied zu malloc und free 85 Pointer mit new I dyn. Erzeugung von Objekten mit new statt malloc int* i1 = new int; *i1 = 25; I Vergleich

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Ü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

Mehr

I dyn. Erzeugung von Objekten mit new statt malloc. I Vergleich zu C. I Erzeugung von Arrays mittel new[] I Speichergröße muss nicht angegeben werden

I dyn. Erzeugung von Objekten mit new statt malloc. I Vergleich zu C. I Erzeugung von Arrays mittel new[] I Speichergröße muss nicht angegeben werden Pointer mit new I dyn. Erzeugung von Objekten mit new statt malloc C++ und Pointer I Schlüsselwort new I Schlüsselwort delete I Unterschied zu malloc und free int* i1 = new int; *i1 = 25; I Vergleich zu

Mehr

I Jede Klasse definiert einen Datentyp. I restliche Implementierung: 1 Sortierverfahren::Sortierverfahren(int n)

I Jede Klasse definiert einen Datentyp. I restliche Implementierung: 1 Sortierverfahren::Sortierverfahren(int n) Vererbung 2 I Polymorphie I virtuelle Methoden I abstrakte Klassen I Mehrfachvererbung Polymorphie I jedes Objekt der abgeleiteten Klasse ist auch ein Objekt der Basisklasse Vererbung impliziert immer

Mehr

Mapra: 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 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

Mehr

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Thema 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:

Mehr

Grundkurs C++ IDE Klassenhierarchien

Grundkurs 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

Mehr

Grundkurs C++ IDE Klassenhierarchien

Grundkurs C++ IDE Klassenhierarchien Grundkurs C++ IDE Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 Folie 1/35 GK C++: IDE, Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 IDE Integrated Development Environment

Mehr

Grundkurs C++ IDE Klassenhierarchien

Grundkurs C++ IDE Klassenhierarchien Grundkurs C++ IDE Klassenhierarchien Martin Gottwald und Stefan Röhrl 8 Mai 2019 Folie 1/34 GK C++: IDE, Klassenhierarchien Martin Gottwald und Stefan Röhrl 8 Mai 2019 IDE - Integrated Development Environment

Mehr

Programmierkurs C/C++

Programmierkurs 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:

Mehr

Überblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele

Überblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen

Mehr

C++ und Pointer. Dyn. Speicherverwaltung 1/3. Dyn. Speicherverwaltung 3/3. Dyn. Speicherverwaltung 2/3

C++ und Pointer. Dyn. Speicherverwaltung 1/3. Dyn. Speicherverwaltung 3/3. Dyn. Speicherverwaltung 2/3 Dyn. Speicherverwaltung 1/ C++ und Pointer Dynamische Speicherverwaltung Pointer auf Objekte new, new[] delete, delete[] Speicherallokierung eines Obj bisher mit malloc type* name=(type*)malloc(length*sizeof(type))

Mehr

C++ und Pointer. Dyn. Speicherverwaltung 1/3. Dyn. Speicherverwaltung 3/3. Dyn. Speicherverwaltung 2/3

C++ und Pointer. Dyn. Speicherverwaltung 1/3. Dyn. Speicherverwaltung 3/3. Dyn. Speicherverwaltung 2/3 Dyn. Speicherverwaltung 1/ C++ und Pointer Dynamische Speicherverwaltung Pointer auf Objekte new, new[] delete, delete[] Speicherallokierung eines Obj bisher mit malloc type* name=(type*)malloc(length*sizeof(type))

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie page1 Vererbung und Polymorphie Florian Adamsky, B Sc florianadamsky@iemthmde http://florianadamskyit/ cbd So wareentwicklung im SS 2014 page2 Outline 1 Ein ührung 2 Vererbung Formen der Vererbung 3 Polymorphie

Mehr

Polymorphismus 179. Function.h. #include <string>

Polymorphismus 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

Mehr

Informatik - Übungsstunde

Informatik - Übungsstunde Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) ETH Zürich Woche 12-23.05.2018 Lernziele Klassen Dynamic Memory Jonas Lauener (ETH Zürich) Informatik - Übung Woche 12 2 / 20 Structs

Mehr

Übersicht. Bisherige Verwendung von Klassen Vererbung. Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren

Übersicht. Bisherige Verwendung von Klassen Vererbung. Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren C++ - Vererbung Übersicht Bisherige Verwendung von Klassen Vererbung Grundlagen Zugriffschutz Vererbte Funktionen Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren

Mehr

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte 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

Mehr

Abend 4 Übung : Erweitern von Klassen durch Vererbung

Abend 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

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

DAP2-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

Mehr

Schlüsselwort virtual

Schlüsselwort virtual Polymorphie Schlüsselwort virtual Polymorphie Virtuelle Methoden virtual Jedes Objekt der abgeleiteten Klasse ist auch ein Objekt der Basisklasse Vererbung impliziert immer ist-ein-beziehung Jede Klasse

Mehr

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2 HSR Rapperswil 2001 Markus Rigling Programmieren: Vererbung 1 Variante 2 Inhaltsverzeichnis: 1. Was ist Vererbung...3 2. Anwendung...3 3. Realisierung...3 4. Vorgehensweise zur Erstellung einer Kind-Klasse...3

Mehr

Prinzipien der objektorientierten Programmierung (OOP)

Prinzipien der objektorientierten Programmierung (OOP) Die Ziele der OOP sind: - bessere Warbarkeit - Wiederverwendbarkeit 1.) Datenkapselung Prinzipien der objektorientierten Programmierung (OOP) Komplexe Datenstrukturen (wie zb ein Stack) werden vom Anwendungsprogramm

Mehr

Angewandte Mathematik in OOP WS 2011/12. Abschluss-Test

Angewandte 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.)

Mehr

C++ - Objektorientierte Programmierung Vererbung

C++ - Objektorientierte Programmierung Vererbung C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.

Mehr

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

Mehr

Polymorphismus 44. Function.hpp. #include <string>

Polymorphismus 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

Mehr

Einführung in C++ Vererbung und Polymorphismus

Einführung in C++ Vererbung und Polymorphismus Einführung in C++ Vererbung und Polymorphismus Ablauf Grundlegende Eigenschaften der Vererbung in C++ Redefinition und Namensauflösung Eine einfache Klassenhierarchie in Java und C++ Redefinition von virtuellen

Mehr

C++ Teil 10. Sven Groß. 17. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Dez / 14

C++ 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

Mehr

Standardbibliotheken. Datentyp bool. Eingaben 2/2. Eingaben 1/2. In C gibt es keinen logischen Datentyp

Standardbibliotheken. Datentyp bool. Eingaben 2/2. Eingaben 1/2. In C gibt es keinen logischen Datentyp Datentyp bool Standardbibliotheken Ein- und Ausgabe Vektoren Container In C gibt es keinen logischen Datentyp Abhilfe schafft Interpretation 0 == false 1 == true Das könnte so aussehen: #define false 0

Mehr

Implementieren von Klassen

Implementieren 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

Mehr

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Thema 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:

Mehr

Praxisorientierte Einführung in C++ Lektion: "Vererbung"

Praxisorientierte 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

Mehr

Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04) 12. Vererbung Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Vererbung Konzept!Protected Section!Virtuelle Mitgliedsfunktionen!Verwendung von Vererbung Copyright: M. Gross, ETHZ, 2003 2 Vererbung!

Mehr

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17

C++ 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

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18 C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen

Mehr

Objektorientierte Programmierung und Klassen

Objektorientierte Programmierung und Klassen Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP

Mehr

01. Grundprinzipien der Vererbung

01. Grundprinzipien der Vererbung 01. Grundprinzipien der Vererbung 1.1 Grundidee der Vererbung Bei der Analyse eines Problems (z.b. Baukasten) stellt man beispielsweise fest, dass 67 % an Daten/Funktionen immer vorkommen 25 % an Daten/Funktionen

Mehr

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

C++ 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

Mehr

C/C++ - Programmierung. Vererbung Seite 1 von 6. Eine einfache Klasse für eine Personenbeschreibung hat die folgende UML: CPerson.

C/C++ - Programmierung. Vererbung Seite 1 von 6. Eine einfache Klasse für eine Personenbeschreibung hat die folgende UML: CPerson. Vererbung Seite 1 von 6 Eine einfache Klasse für eine Personenbeschreibung hat die folgende UML: CPerson char Nachname[30] char Vorname[30] CPerson() void setnachname() void setvorname() void getname()

Mehr

Mikrorechentechnik II. Klassen in C++

Mikrorechentechnik II. Klassen in C++ Mikrorechentechnik II Klassen in C++ class class cfilter { float K; float T; float Ta; public: // Filterverstärkung // Filterzeitkonstante // Tastzeit Zugriffskontrolle: public, protected, private void

Mehr

Polymorphie. Überladen. Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele. Dr.

Polymorphie. Überladen. Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele. Dr. Polymorphie Überladen Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele Dr. Beatrice Amrhein Definition 2 Definition: Überladen (von Namen) Überladen bedeutet, dass

Mehr

Vorlesungsprüfung Programmiersprache 1

Vorlesungsprü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,

Mehr

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden Einleitende Bemerkungen Einleitende Bemerkungen Aspekte Aufbau von sinnvollen Klassenhierarchien Verwaltung von Objekten unterschiedlichen Typs Mitarbeiter Besonderheiten der Anwendung jeder Angehörige

Mehr

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz Einführung in C++ Vererbung I Durch Vererbung können aus bereits bestehenden Klassen neue Klassen konstruiert werden. Die neue abgeleitete Klasse erbt dabei die Daten und Methoden der sog. Basisklasse.

Mehr

4. Objektorientierte Programmierung mit C++

4. 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

Mehr

Vererbung. Definition Felder Konstruktor Methoden Beispiel. Dr. Beatrice Amrhein

Vererbung. Definition Felder Konstruktor Methoden Beispiel. Dr. Beatrice Amrhein Vererbung Definition Felder Konstruktor Methoden Beispiel Dr. Beatrice Amrhein Definition 2 Definition: Vererbung Die Vererbung dient dazu, mit Hilfe von existierenden Klassen neue Klassen zu implementieren.

Mehr

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 23. Januar 2017

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 23. Januar 2017 Familienname: Vorname: Matrikelnummer: Aufgabe 1 (3 Punkte): Aufgabe 2 (1 Punkt): Aufgabe 3 (2 Punkte): Aufgabe 4 (4 Punkte): Aufgabe 5 (2 Punkte): Aufgabe 6 (2 Punkte): Aufgabe 7 (4 Punkte): Aufgabe 8

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

11 Vererbung und Klassenhierarchie

11 Vererbung und Klassenhierarchie 11 Vererbung und Klassenhierarchie Bestandteile objektorientierter Programmierung: Bestehende Klassen können durch Spezialisierung und Erweiterung weiterentwickelt werden, ohne den Programmcode der alten

Mehr

Vererbung. Florian Adamsky, B. Sc. (PhD cand.) Softwareentwicklung im WS 2014/15.

Vererbung. Florian Adamsky, B. Sc. (PhD cand.) Softwareentwicklung im WS 2014/15. 1/23 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 Formen der C++ Syntax 3/23 Inhaltsverzeichnis 1 2 Formen

Mehr

Kurzeinführung in C/C++ Elementare Datentypen in C++

Kurzeinführung in C/C++ Elementare Datentypen in C++ Elementare Datentypen in C++ Anders als in Java sind in C++ die Größen der Elementaren Datentypen maschinenabhängig Die Größe der Datentypen lässt sich mit sizeof ermitteln: int n=sizeof(int) In C++ gilt

Mehr

Lambda-Funktionen. Lambda-Funktionen. Lambda-Funktionen sollen

Lambda-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

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 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

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 2. Teil 18. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21.

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21. Mehrfache Vererbung Daniel Beneckenstein 21. August 2006 Mehrfache Vererbung Ableitung einer Klasse von beliebig vielen Basisklassen: class A {... }; class B {... }; class C {... }; class D: public A,

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

C++ Klassen, Vererbung. Philipp Lucas. Sebastian Hack. Wintersemester 2008/09. saarland.

C++ Klassen, Vererbung. Philipp Lucas. Sebastian Hack. Wintersemester 2008/09. saarland. C++ Klassen, Vererbung Philipp Lucas phlucas@cs.uni-sb.de Sebastian Hack hack@cs.uni-sb.de Wintersemester 2008/09 saarland university computer science 1 Inhalt Klassen in C++ Sichtbarkeit Erzeugen von

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter

Mehr

Objektorientiertes Programmieren mit C++ für Fortgeschrittene

Objektorientiertes Programmieren mit C++ für Fortgeschrittene BEREICH DATENTECHNIK I CQ 300 00 TH 02 Objektorientiertes Programmieren mit C++ für Fortgeschrittene Kapitel 3 3. Mehrfachvererbung 3.1. Eigenschaften und Problematik 3.2. Virtuelle Basisklassen BEREICH

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Grundzüge der objektorientierten Programmierung

Grundzüge der objektorientierten Programmierung BERGISCHE UNIVERSITÄT GESAMTHOCHSCHULE WUPPERTAL GAUSS-STRASSE 20 42097 WUPPERTAL (Korrespondenzanschrift) 42119 WUPPERTAL (Lieferanschrift) TELEX 8 592 262 bughw TELEFAX (0202) 439-2901 TELEFON (0202)

Mehr

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 9 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Nachbesprechung Übung 7 Besprechung/Vertiefung der Vorlesung Vorbesprechung Übung 9 Aufgabe 1:

Mehr

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Einführung in den Einsatz von Objekt-Orientierung mit C++ I Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen

Mehr

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einfü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

Mehr

Einführung in die Programmierung mit C++

Einfü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

Mehr

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

Mehr

C++ - Objektorientierte Programmierung Polymorphie

C++ - 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

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

3 VERERBUNG ALLGEMEINES

3 VERERBUNG ALLGEMEINES 3 VERERBUNG ALLGEMEINES Leitideen: Die Hinzufügung von Daten- oder Funktionskomponenten zu einer vorhandenen Klasse (Basisklasse) wird als Vererbung und die auf diese Weise erzeugte Klasse als abgeleitete

Mehr

Kapitel 11: Vererbung Ziele von Klassen Einführung in die Informatik für struct Naturwissenschaftler und Ingenieure

Kapitel 11: Vererbung Ziele von Klassen Einführung in die Informatik für struct Naturwissenschaftler und Ingenieure 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

Mehr

Beispiel 1/3. Abstrakte Datentypen. Beispiel 3/3. Beispiel 2/3. Abstrakte Klasse SortierVerfahren

Beispiel 1/3. Abstrakte Datentypen. Beispiel 3/3. Beispiel 2/3. Abstrakte Klasse SortierVerfahren Beispiel 1/ Abstrakte Klasse SortierVerfahren Abstrakte Datentypen Die Methode sort von Sortierverfahren ist sinnlos bietet keinerlei Sortierung Objekte können in Wahrheit nicht sortieren Überhaupt sind

Mehr

3. Semester : 1. Prüfung

3. Semester : 1. Prüfung 3. Semester : 1. Prüfung Name : Die gesamte Prüfung bezieht sich auf die!! Prüfungsdauer: 90 Minuten mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter geschrieben werden

Mehr

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 24. Juni 2016

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 24. Juni 2016 Familienname: Vorname: Matrikelnummer: Aufgabe 1 (3 Punkte): Aufgabe 2 (4 Punkte): Aufgabe 3 (2 Punkte): Aufgabe 4 (1 Punkt): Aufgabe 5 (3 Punkte): Aufgabe 6 (1 Punkt): Aufgabe 7 (1 Punkt): Aufgabe 8 (2

Mehr

Praxis der Programmierung

Praxis der Programmierung Klassenvariablen und -methoden, Vererbung Institut für Informatik und Computational Science Henning Bordihn 1 Klassenvariablen und -methoden 2 Klassenvariablen und -methoden werden mit dem Schlüsselwort

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Dienstag Inhaltsübersicht Variablen: Membervariablen und lokale Variablen Referenzvariablen: Arrays und Objekte anlegen Definition von Funktionen: Methoden Konstruktoren

Mehr

Objektorientierte Programmierung mit C++

Objektorientierte Programmierung mit C++ Ziel: maximales Code-Sharing -- Weg: gemeinsame (aber ggf. in Ableitungen variierende) Funktionalität in Basisklassen festlegen Problem: die so entstehenden Basisklassen sind oft so rudimentär, dass Objekterzeugung

Mehr

1 Klassen und Objekte

1 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

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren class Vektor public: double k1, k2; // Deklaration der Klasse Vektor // Elementvariablen

Mehr

Allgemeines - Prinzipien

Allgemeines - Prinzipien OOP - Prinzipien Allgemeines - Prinzipien OO modelliert die reale Welt als System interagierender Objekte Objekt = gedankliche oder reale Einheit in der Umwelt und/oder in Software Klar definierte Schnittstellen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:

Mehr

Mapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.

Mapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6. Mapra: C++ Teil 4 Felix Gruber IGPM, RWTH Aachen 6. Mai 2015 Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6. Mai 2015 1 / 22 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien

Mehr

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14 C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung

Mehr

Programmierparadigmen

Programmierparadigmen Programmierparadigmen DEKLARATIV Funktional Logisch IMPERATIV Prozedural Objektorientiert Einsatz der Programmierparadigmen Systemkomplexität von der Komplexität der Algorithmen dominiert deklarativ oder

Mehr

Pods und Objects (Klassen)

Pods 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

Mehr

Programmierkurs. Steffen Müthing. November 30, Interdisciplinary Center for Scientific Computing, Heidelberg University

Programmierkurs. Steffen Müthing. November 30, Interdisciplinary Center for Scientific Computing, Heidelberg University Programmierkurs Steffen Müthing Interdisciplinary Center for Scientific Computing, Heidelberg University November 30, 2018 Objektorientiertes Programmieren Kapselung const und Klassen Initialisierung und

Mehr

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Grundkurs C++ IDE Implementierung von Klassenhierarchien Compiler, Linker Buildsysteme IDE Integrated Development Environment Wir empfehlen: Qt Creator (Bestandteil des Qt SDK) Download unter : http://qt.nokia.com/products/qt-sdk

Mehr

Programmierkurs C++ Konstruktor, Statische Methoden Namespaces

Programmierkurs C++ Konstruktor, Statische Methoden Namespaces Programmierkurs C++ Konstruktor, Statische Methoden Namespaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 (7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik

Mehr

virtual Wertpapier& operator=(const Wertpapier&); // VIRTUELLE ZUWEISUNG protected: static enum {wortfeldlaenge = 20}; char* name_z; double kurs; };

virtual Wertpapier& operator=(const Wertpapier&); // VIRTUELLE ZUWEISUNG protected: static enum {wortfeldlaenge = 20}; char* name_z; double kurs; }; C++ für Anfänger des Programmierens Rieckeheer GSO-Hochschule Nürnberg März 2008 174 a neu Vor Kapitel 24 ist folgender Text einzufügen. Das folgende Programm variiert das Programm VIRTfunktion3.cpp und

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Grundzüge der Programmierung. Wiederverwendung VERERBUNG Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse

Mehr