I nicht verwechseln mit überladen
|
|
- Katja Hoch
- vor 5 Jahren
- Abrufe
Transkript
1 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 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), 3 color(c) 4 { 5 cout << "car-konstruktor" << endl; } I Funktionen können in der abgeleiteten Klasse komplett neu gestaltet (redefiniert) werden 1 void Fortbewegungsmittel::print() 3 cout << "Geschwindigkeit: " << getspeed() 4 << endl; 5 } 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 Funktionen redefinieren 2/2 I Problem: Basismethoden werden verdeckt eine redefinierte Methode verdeckt alle Basismethoden 1 void Fortbewegungsmittel::print(); 2 void Fortbewegungsmittel::print(int s); 3 void Fortbewegungsmittel::print(int s, double c); 4 5 void Car::print(); 7 /* Implementierung */ 8 9 int main() 10 { 11 Car mycar; 12 mycar.print(); // OK 13 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 1/3 1 #include <iostream> 2 using namespace std; 3 4 class Punkt{ 5 protected: 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 13 void bewegen(int x); 14 void bewegen(); 15 void print(); 1 void center(); 17 }; class Kreis : public Punkt{ 20 private: 21 int radius; 22 public: 23 Kreis(int x, int y, int radius); 24 int getrad(){return radius;}; 25 void bewegen(int r); //redefiniert 2 void print(); 27 }; I unterscheide zwischen überladen und redefinieren 93 94
2 Ein Beispiel 2/3 1 Punkt::Punkt(int x, int y){ 2 this->x = x; 3 this->y = y;} 4 5 void Punkt::bewegen(int x, int y){ 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(){ 13 this->x = this->x-3; 14 this->y = this->y-4;} 15 1 void Punkt::print(){ 17 cout << "X: " << getx() << ", Y: " 18 << gety() << endl;} void Punkt::center(){ 21 x=0; y=0;} Kreis::Kreis(int x, int y, int radius): 24 Punkt(x,y) 25 { 2 this->radius = radius; 27 } void Kreis::bewegen(int r){ 30 x = x+radius+r;} void Kreis::print(){ 33 cout << "X: " << getx() << ", Y: " << 34 gety() << ", Radius: " << getrad() << endl;} Ein Beispiel 3/3 1 int main() 3 Punkt P1(3,7); 4 P1.print(); 5 P1.bewegen(13); P1.print(); 7 8 Kreis K1(3,7,12); 9 K1.print(); 10 K1.bewegen(3); 11 K1.print(); 12 K1.Punkt::bewegen(3,4); 13 K1.print(); 14 K1.center(); 15 K1.print(); 1 } I Ausgabe:X: 3, Y: 7 X: 1, Y: 7 X: 3, 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: 95 9 Vererbung mit Matrizen 1/3 Vererbung mit Matrizen 2/3 1 #include <iostream> 2 #include <string> 3 #include <vector> 4 #include <assert.h> 5 using namespace std; 7 class Matrix{ 8 protected: 9 int m,n; //dimensions 10 vector<vector<double> > entries; 11 public: 12 int getm(){return m;}; 13 int getn(){return n;}; 14 double getentry(int i, int j); 15 void setentry(int i, int j, double entry); 1 void plot(); 17 Matrix(); 18 Matrix(int m, int n, int init); 19 }; class SquareMatrix : public Matrix{ 22 // stores square matrices 23 public: 24 SquareMatrix computelu(); 25 double computedet(); 2 SquareMatrix(int n, int init); 27 }; 1 /* class definitions*/ 2 /* get & set implementation*/ 3 4 void Matrix::plot(){ 5 for(int i = 0; i < getm(); i++){ for(int j = 0; j < getn(); j++){ 7 cout << "Eintrag " << i << ", " << j 8 << ": " << getentry(i,j) << endl; 9 } 10 } 11 } Matrix::Matrix(): 14 m(1), n(1), 15 entries(vector<vector<double> >(m, vector<double>(n, 0))){} 1 17 Matrix::Matrix(int m, int n, int init): 18 m(m), n(n), 19 entries(vector<vector<double> >(m, vector<double>(n, init))){} SquareMatrix SquareMatrix::computeLU(){ 22 // Implementation LU decomposition 23 } double SquareMatrix::computeDet(){ 2 // Implementation determinant 27 } SquareMatrix::SquareMatrix(int n, int init): 30 Matrix(n, n, init){} 97 98
3 Übersicht - Vererbung Vererbung mit Matrizen 3/3 1 int main() 3 Matrix mat1(3,4,2); 4 mat1.plot(); 5 SquareMatrix mat2(2,1); mat2.plot(); 7 } I Ausgabe:Eintrag 0, 0: 2 Eintrag 0, 1: 2 Eintrag 0, 2: 2 Eintrag 0, 3: 2 Eintrag 1, 0: 2 Eintrag 1, 1: 2 Eintrag 1, 2: 2 Eintrag 1, 3: 2 Eintrag 2, 0: 2 Eintrag 2, 1: 2 Eintrag 2, 2: 2 Eintrag 2, 3: 2 Eintrag 0, 0: 1 Eintrag 0, 1: 1 Eintrag 1, 0: 1 Eintrag 1, 1: 1 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 One more thing I es muss nicht immer public vererbt werden Vererbung 2 Basisklasse abgeleitete Klasse public protected private public public protected private protected protected protected private private hidden hidden hidden I Sichtbarkeit ändert sich durch Art der Vererbung Zugriff kann nur verschärft werden andere außer public machen selten Sinn I Polymorphie I virtuelle Methoden I abstrakte Klassen I Mehrfachvererbung
4 in Code gegossen I Wir betrachten die Klasse Sortierverfahren: Polymorphie I jedes Objekt der abgeleiteten Klasse ist auch ein Objekt der Basisklasse Vererbung impliziert immer ist-ein-beziehung I Jede Klasse definiert einen Datentyp Objekte können mehrere Typen haben abgeleitete Klassen haben mindestens zwei I In C++ kann der jeweils passende Typ verwendet werden Diese Eigenschaft nennt man Polymorphie (griech. Vielgestaltigkeit) 1 class Sortierverfahren{ 2 protected: 3 int N; //Anzahl 4 int* a; //zu sort. Zahlen 5 public: Sortierverfahren(); 7 Sortierverfahren(int); 8 virtual ~Sortierverfahren(){delete[] a;}; 9 virtual void sort(){cout << "Hallo" << endl;}; 10 void ausgabe(); 11 }; I und die Methode sortme: 1 void sortme(sortierverfahren &s) 3 s.sort(); 4 s.ausgabe(); 5 } I sortme übernimmt Referenz auf Sortierverfahren I virtuelle Methoden durch Schlüsselwort virtual ermöglichen späte Bindung (late binding) Einsprungadresse wird zur Laufzeit ermittelt dies geschieht intern mittels V-tables in Code gegossen - 2 I restliche Implementierung: 1 Sortierverfahren::Sortierverfahren(int n) 3 N = n; 4 a = new int[n]; 5 for (int i = 0; i<n; i++) a[i] = 1+rand() % 99; 7 } 8 9 void Sortierverfahren::ausgabe() 10 { 11 cout << "aktuelle Sortierung: " << endl; 12 for (int i = 0; i<n; i++) 13 cout << a[i] << endl; 14 } I und abgeleitete Klasse BubbleSort: 1 class BubbleSort : public Sortierverfahren{ 2 public: 3 BubbleSort(int N):Sortierverfahren(N){}; 4 void sort(); 5 }; 7 void BubbleSort::sort() 8 { 9 for (int i = N-1; i>=1; i--){ 10 for(int j = 0; j<i; j++) 11 {if (a[j] > a[j+1]) swap(a[j], a[j+1]);} 12 } 13 } Polymorphie- 2 I BubbleSort redefiniert die Methode sort I Nun ist BubbleSort auch ein Sortierverfahren I ) folgende Anweisung macht Sinn Sortierverfahren *mysort = new BubbleSort(10); I Bei Zeigern und Referenzen können alle Typen des jeweiligen Objektes verwendet werden I intern wird Zeiger auf Sortierverfahren gespeichert zunächst einmal kann nur auf diese Methoden und Felder zugegriffen werden I Frage: Was passiert bei Aufruf von mysort->sort()? I Antwort: genau das Richtige! durch Einsatz virtueller Methoden V-table wird angelegt zur Laufzeit wird entsprechende Funktion aufgerufen
5 in Code gegossen - 3 Andere Aspekte der Polymorphie I Aufrufender Code: 1 void sortme(sortierverfahren& s) 3 s.sort(); 4 s.ausgabe(); 5 } 7 int main() 8 { 9 BubbleSort mysort(10); 10 mysort.ausgabe(); 11 sortme(mysort); 12 } I Ausgabe: aktuelle Sortierung: aktuelle Sortierung: (Zufallszahlen) I Methode sortme kennt nur s (Referenz auf Sortierverfahren) I Bei Aufruf von sort wird Einsprungstelle aus V-table gelesen I es wird tatsächlich sort von BubbleSort aufgerufen I Achtung: Klappt nur bei Zeigern und Referenzen I polymorphes Verhalten ermöglicht Behandlung des abgeleiteten Objektes wie ein Basisobjekt Compiler betrachtet das Objekt als Basisobjekt (Slicing) Zugriff auf zusätzliche Methoden nicht möglich I Zugriff auch nicht sinnvoll I zumindest programmiertechnisch unsauber I Problem: was wenn man doch Zugriff braucht? I Lösung: dynamic cast fortbewegungsmittel *A = new car(); car *mycar = dynamic cast <car *> (A); mycar->fahren(); I gibt Nullpointer zurück wenn cast fehlschlägt I nur bei polymorph verwendeten Objekten möglich I es gibt auch noch andere casts: static cast const cast reinterpret cast virtuelle Methoden #include <iostream> 2 #include <string> 3 #include <vector> 4 #include <assert.h> 5 using namespace std; 7 class Matrix{ 8 protected: 9 int m,n; //dimensions 10 vector<double> entries; 11 public: 12 int getm(){return m;}; 13 int getn(){return n;}; 14 virtual double getentry(int i, int j); 15 void setentry(int i, int j, double entry); 1 void plot(); 17 Matrix(); 18 Matrix(int m, int n, int init); 19 }; class TriangularMatrix : public Matrix{ 22 // lower triangular matrix 23 public: 24 double getentry(int i, int j); 25 void setentry(int i, int j, double entry); 2 void test(); 27 TriangularMatrix(int n, int init); 28 }; virtuelle Methoden double Matrix::getEntry(int i, int j){ 2 if(i < getm() && j < getn()){ 3 return entries[i+j*getm()]; 4 }else{ 5 cout << "Index exceeds matrix dimensions" << endl; 7 assert(0); 8 } 9 } void Matrix::setEntry(int i, int j, double entry){ 12 if (i >= m j >= n){ 13 cout << "Index exceeds matrix dimensions" 14 << endl; 15 }else{ 1 entries[i+j*getm()] = entry; 17 } 18 } void Matrix::plot(){ 21 for(int i = 0; i < getm(); i++){ 22 for(int j = 0; j < getn(); j++){ 23 cout << "Eintrag " << i << ", " << j 24 << ": " << getentry(i,j) << endl; 25 } 2 } 27 }
6 virtuelle Methoden - 2 virtuelle Methoden Matrix::Matrix(): 2 m(1), n(1), 3 entries(vector<double>(m*n, 0)){} 4 5 Matrix::Matrix(int m, int n, int init): m(m), n(n), 7 entries(vector<double>(m*n, init)){} 8 9 double TriangularMatrix::getEntry(int i, int j){ 10 if(j > i) 11 return 0; 12 else 13 return entries[i+j*getm()-0.5*j*(j+1)]; 14 } 15 1 TriangularMatrix::TriangularMatrix(int n, int init): 17 Matrix(n, n, init){} 1 int main() 3 Matrix mat1(3,4,2); 4 mat1.plot(); 5 TriangularMatrix mat2(3,4); mat2.plot(); 7 } I Ausgabe:Eintrag 0, 0: 2 Eintrag 0, 1: 2 Eintrag 0, 2: 2 Eintrag 0, 3: 2 Eintrag 1, 0: 2 Eintrag 1, 1: 2 Eintrag 1, 2: 2 Eintrag 1, 3: 2 Eintrag 2, 0: 2 Eintrag 2, 1: 2 Eintrag 2, 2: 2 Eintrag 2, 3: 2 Eintrag 0, 0: 4 Eintrag 0, 1: 0 Eintrag 0, 2: 0 Eintrag 1, 0: 4 Eintrag 1, 1: 4 Eintrag 1, 2: 0 Eintrag 2, 0: 4 Eintrag 2, 1: 4 Eintrag 2, 2: 4 I durch virtual wird richtige Methode aufgerufen was es zu wissen gibt I virtuelle Methoden erlauben Polymorphie abgeleitetes Objekt verhält sich wie Basisobjekt I dies geschieht durch dynamische Bindung Implementierung wird zur Laufzeit ausgewählt I Methoden als virtuell deklarieren wenn sie polymorph verwendet werden sollen wenn Implementierung überschrieben wird I in diesem Fall auch virtueller Destruktor Objekt wird sonst evtl. nicht richtig bereinigt I Konstruktoren können nicht virtuell sein I in Java sind Methoden standardmäßig virtuell I in C++ explizit durch Benutzer I generell: Erzeugung von V-tables kostet Code wird dadurch langsamer nicht alles als virtual deklarieren abstrakte Datentypen I Die Methode sort von Sortierverfahren ist sinnlos bietet keinerlei Sortierung Objekte können in Wahrheit nicht sortieren I überhaupt sind Objekte dieser Klasse sinfrei von Sortierverfahren wird nur abgeleitet I das sollte sich auch im Code wiederspiegeln I abstrakte Klassen bieten genau das dienen als Schablone für abgeleitete Klassen können gemeinsame Funktionen implementieren müssen nicht alle Details implementieren I abstrakte Datentypen können nicht instanziiert werden! erleichtert Fehlersuche
7 Beispiel I abstrakte Klasse Sortierverfahren: 1 class Sortierverfahren{ 2 protected: 3 int N; //Anzahl 4 int* a; //zu sort. Zahlen 5 public: Sortierverfahren(); 7 Sortierverfahren(int); 8 virtual ~Sortierverfahren(){delete[] a;}; 9 virtual void sort() = 0; 10 void ausgabe(); 11 }; I abstrakte Methode in Zeile 9 I Abstraktion durch =0 nach virtueller Methode I AM müssen nicht implementiert werden I AM nennt man auch rein virtuell I durch eine AM wird die ganze Klasse abstrakt abstrakte Kl. können nicht instanziiert werden Beispiel I abgeleitete Klasse InsertionSort: 1 class InsertionSort : public Sortierverfahren{ 2 public: 3 InsertionSort(int N):Sortierverfahren(N){}; 4 void sort(); 5 }; 7 void InsertionSort::sort() 8 { 9 int key,i; 10 for(int j=1;j<n;j++) 11 { 12 key=a[j]; 13 i=j-1; 14 while(a[i]>key && i>=0) 15 { 1 a[i+1]=a[i]; 17 i--; 18 } 19 a[i+1]=key; 20 } 21 } I InsertionSort redefiniert die AM sort alle AM müssen redefiniert werden Beispiel 1 int main() 3 BubbleSort mysort(10); 4 InsertionSort mysort2(10); 5 Sortierverfahren testsort(10); mysort.ausgabe(); 7 mysort2.ausgabe(); 8 sortme(mysort); 9 sortme(mysort2); 10 } I Ausgabe: aktuelle Sortierung: aktuelle Sortierung: aktuelle Sortierung: aktuelle Sortierung: (Zufallszahlen) Übersicht - abstrakte Klassen I dienen als Schablone / Schnittstelle für Vererbung I können nicht instanziiert werden Fehlerfindung durch Compiler! I Was Sie tun sollten: Verwenden Sie AK für gemeinsame Funktionen (delegieren nach oben) jedoch nur wenn sie für alle Kinder relevant sind redefinieren Sie alle abstrakten Methoden definieren Sie alle Methoden abstrakt die zu redefinieren sind I Eigentlich gelogen: Fehler in Zeile 5 error: cannot declare variable testsort to be of abstract type Sortierverfahren
8 Diamantvererbung Mehrfachvererbung I Es könnte eine gemeinsame Oberklasse geben I C++ erlaubt Vererbung mit multiplen Basisklassen I Syntax: class Auto : public Wertgegenstand, public Fortbew{... } I Vertieft Konzept der Objektorientierung erhöht Wiederverwendbarkeit von Code I Problem: Mehrdeutigkeiten (nächste Folie) I führt zu Mehrdeutigkeit Felder und Methoden sind mehrfach vorhanden unklar worauf zugegriffen werden soll Speicherverschwendung schlimmstenfalls: Objekte inkonsistent Diamantvererbung 2 I Klasse Matrix hat ein Feld int n I beide abgeleiteten Klassen erben int n I SPD erbt von zwei Klassen SPD hat int n doppelt I Lösung 1: Zugriff mittels vollem Namen symmmat::n bzw. posdefmat::n I unschön, da Speicher dennoch doppelt unübersichtlich schlimmstenfalls sogar verschiedene Werte I Lösung 2: virtuelle Basisklassen class symmmat : virtual public matrix class posdefmat : virtual public matrix I virtuelle Basisklasse wird nur einmal eingebunden I Literatur: Uneinigkeit ob Mehrfachvererbung sinnvoll I Konzept nicht möglich in Java, C# 121
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
MehrI 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
MehrVererbung. 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
MehrC++ 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
MehrI 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
MehrI Operatoren selbst können überladen werden. I Methode add funktioniert auch. I Überladen sollte nur dafür verwendet werden
Ü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;};
MehrBeispiel 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
MehrOOP 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
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
MehrVererbung 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
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:
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.)
MehrVererbung 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.
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
MehrProf. 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!
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
MehrSchlü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
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
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Objektorientierung in C++ (3) Aspekte der Vererbung (1) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 546 Zuweisung bei Vererbung Dr. Frank Seifert Vorlesung
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
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
MehrOOP. Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten.
Polymorphismus OOP Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten. Vererbung: Erlaubt Code zwischen verwandten Typen wiederverwendet sein.
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
MehrSchriftlicher 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
MehrEinstieg 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
MehrPraxis 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
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
MehrVererbung, 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
MehrProgrammieren 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
MehrProgrammierkurs C++ Abstrakte Klassen und Methoden
Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double
MehrGrundkurs 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
MehrEinführung in C# Teil 3. Matthias Nübling
Einführung in C# Teil 3 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,
MehrVorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3
Vorausgesetzte Grundkenntnisse Einführung in C# Teil 3 Matthias Nübling Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,
Mehr3 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
MehrGrundkurs 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
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
MehrProgrammieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware
MehrInformatik II Übung 6
Informatik II Übung 6 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 11.4.2018 Carina Fuss 11.4.2018 1 Übung 6 Nachbesprechung Übung 5 Objektorientierung Vererbung, Polymorphie, abstrakte Klassen, Interfaces,
MehrEinfü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++
MehrHSR 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
MehrVererbung. 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
MehrEinfü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Ü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
MehrInformatik - Ü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
MehrDie Welt in unseren Programmen false -1.4E-12. false. Klassen
Algorithmen und Datenstrukturen Die Welt in unseren Programmen Die Welt in unseren Programmen Wintersemester 2012/13 9. Vorlesung Sortieren von Objekten 1.357374356 25236748458 true "HalloWelt!" 14136.23462
MehrÜ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
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:
MehrEinführung in die Programmiersprache Java II
Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden
MehrProgrammieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, Polymorphie und innere Klassen 2 Vererbung im Klassendiagramm (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Object
MehrAlgorithmen 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
MehrTafelübung 07 Algorithmen und Datenstrukturen
Tafelübung 07 Algorithmen und Datenstrukturen Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Vererbung Grundlagen Abstrakte
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
MehrÜ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
MehrPolymorphie. 15. Java Objektorientierung II
432 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 433 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen
MehrEinstieg 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
MehrPolymorphie. 15. Java Objektorientierung II
446 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 447 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen
MehrProgrammierpraktikum 3D Computer Grafik
Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Einführung in C++ Teil II: Klassen, Objekte, Funktionen und Vererbung. Funktionen [Rückgabetyp] [Name] ([Parameter]) { } Wichtig: Funktionen
MehrSchriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 25. Jänner 2016
Familienname: Vorname: Matrikelnummer: Aufgabe 1 (3 Punkte): Aufgabe 2 (4 Punkte): Aufgabe 3 (2 Punkte): Aufgabe 4 (2 Punkte): Aufgabe 5 (2 Punkte): Aufgabe 6 (1 Punkte): Aufgabe 7 (3 Punkte): Aufgabe
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
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
MehrVererbung 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
MehrGrundlagen 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,
MehrDas Interface-Konzept am Beispiel der Sprache Java
Das Interface-Konzept am Beispiel der Sprache Java Klaus Kusche, November 2013 Inhalt Motivation: Wozu braucht man Interfaces? Interfaces in Java Was spricht gegen die große Lösung? Voraussetzungen Kenntnisse
MehrDie verschiedenen Programmierparadigmen von C++ Software-Technik: Vom Programmierer zur erfolgreichen
Software-Technik: Vom Programmierer zur erfolgreichen 1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation des Quellcodes 4. Werte- und Referenzsemantik 5. Entwurf
MehrProgrammierkurs Java
Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie
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
MehrProgrammierung Nachklausurtutorium
Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel
MehrNeben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
MehrEinführung in die Programmierung mit C++
1 Seite 1 Einführung in die Programmierung mit C++ Teil III - Objektorientierte Programmierung 10. Vererbung und Polymorphie Vererbung und Polymorphie in C++ Seite 2 Klassen können von anderen Klassen
MehrGrundlagen der Informatik
Grundlagen der Informatik Polymorphie, Abstrakte Klassen, Mehrfachvererbung Prof. Dr.-Ing. Thomas Wiedemann Prof. Dr. rer.nat. Ralph Großmann Fachgebiet Informatik / Mathematik Überblick zum Inhalt Klassen-3
MehrObjektorientiertes 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
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 3 29.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klassen ableiten
MehrKapitel 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
MehrProgrammieren 1 09 Vererbung und Polymorphie
Programmieren 1 09 Vererbung und Polymorphie Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 I. VERERBUNG 2 2 Vererbung Von Interfaces übernehmen
MehrJava Einführung Vererbung und Polymorphie. Kapitel 13
Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces
10 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Interfaces Aber: Mehrfachvererbung von Klassen ist in Java nicht erlaubt. Ausweg Definition eines Interfaces, z.b.:
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
MehrEinstieg in die Informatik mit Java
1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung
MehrVererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.
Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 14.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung 14.1.08 1 / 11 Übersicht 1
Mehr7 Vererbung. Modul Programmieren mit C++ Kapitel Vererbung
7.1 7 Vererbung Eine von der Basisklasse B abgeleitete Klasse A erbt alle Attribute und Methoden von B. Ein Objekt der Klasse A besitzt ein Slice der Klasse B und ein Slice der Klasse A. Jeder Konstruktor
Mehr11.3 Virtuelle Methoden
11.3 Virtuelle Methoden Überdeckte Methoden: Betrachten wir noch einmal unsere Klassen Employee und Manager. class Employee void print() const cout
MehrObjektorientierung (OO)
Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members
MehrSchriftlicher 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
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
MehrPrinzipien 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
MehrEinführung in die Programmiersprache Java II
Einführung in die Programmiersprache Java II ??????????? UML Klassendiagramm zeigt Klassen und ihre Beziehungen untereinander Visualisierung und Modellierung der statischen Struktur eines Systems Klassen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
MehrProgrammierung und Angewandte Mathematik
Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ziele Sie wissen, was Vererbung
Mehr11 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
MehrC++ - 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.
MehrExceptions und Vererbung
Exceptions und Vererbung Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter 2. Exceptions Eigene Exceptions Handling
Mehr1 Einleitung Generizität Syntax... 2
Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung 1 1.1 Generizität................................ 1 1.2 Syntax.................................. 2 2 Realisierung 2 2.1 Compilierung generischer Klassen...................
MehrKapitel 8 Vererbung. Korbinian Molitorisz. IPD Tichy Lehrstuhl für Programmiersysteme
Kapitel 8 Vererbung Korbinian Molitorisz IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Vererbung im Fall von Klassen
MehrEinführung in das Objektorientierte Programmieren mit C++
BEREICH DATENTECHNIK I CP 700 00 TH 03 Einführung in das Objektorientierte Programmieren mit C++ Kapitel 7 7. Laufzeit-Polymorphie 7.1. Frühes und spätes Binden 7.2. Virtuelle Funktionen FG TECHNISCHE
Mehr14. Java Objektorientierung
Objektorientierung: Verschiedene Aspekte Daten Typhierarchie Objekte 14. Java Objektorientierung Code Vererbung Unter- und Oberklassen Klassen, Vererbung, Kapselung Methoden überschreiben Unterklassen
MehrObjektorientierte 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
MehrAnwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie
Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,
MehrAbend 7 Vererbung und Polymorphie, Abstrakte Klassen
Abend 7 Vererbung und Polymorphie, Abstrakte Klassen Ziel, Inhalt Wir sehen heute weitere Beispiele für Polymorphie und virtuelle Methoden. Wir lernen auch Klassen kennen, von denen man keine Objekte erzeugen
MehrEinstieg 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