Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen
|
|
- Harald Gerstle
- vor 6 Jahren
- Abrufe
Transkript
1 1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen
2 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel: Auto, Lastwagen Beide sind offenbar Fahrzeuge, haben Räder, Gewicht, etc. Anderes Beispiel: Mitarbeiter Chef, Abteilungsleiter, Sekretaerin, etc. sind alle Kern: (abstrakte) Basisklasse Vererbung: eine abgeleitete Klasse erbt die Elemente des Basisklasse (inheritance) und verfügt über zusätzliche Eigenschaften
3 3 Beispiel: Die Basis Klasse Fahrzeug (Header File) #ifndef VEHIKEL_HPP #define VEHIKEL_HPP #include <iostream> using namespace std; class Fahrzeug { protected: int _Raeder; double _Gewicht; public: Fahrzeug (int Raeder, double Gewicht); int Raeder () const {return _Raeder;} double Gewicht () const {return _Gewicht;}
4 4 double Radlast () const; friend ostream& operator << (ostream& s, const Fahrzeug &v); const char *Name() const { return "Fahrzeug"; } }; #endif
5 5 Beispiel: Die Basis-Klasse Fahrzeug (Implementierung) // fahrzeug.cpp #include "fahrzeug.hpp" // Konstruktor Fahrzeug::Fahrzeug(int Raeder, double Gewicht) : _Raeder(Raeder), _Gewicht(Gewicht) {} // Gib das Gewicht pro Rad zurueck double Fahrzeug::Radlast() const { return _Gewicht / _Raeder; } // Ausgabe ostream& operator << (ostream& s, const Fahrzeug &v) {
6 6 s << "Das Fahrzeug hat " << v._raeder << ((v._raeder>1)?" Raeder":" Rad") << " und wiegt " << v._gewicht << " kg. "; } return s << endl;
7 7 Anwendung der Basis-Klasse Fahrzeug #include <iostream> #include "fahrzeug.hpp" using namespace std; int main() { Fahrzeug Auto(4,900.0), Motorrad(2,400.0), Laster(18, ), Ente(4,700.0); cout << Auto; cout << "Der Laster hat ein Gewicht von " << Laster.Radlast() << " kg pro Rad." << endl;
8 8 cout << "Das Motorrad wiegt " << Motorrad.Gewicht() << " kg." << endl; cout << Ente; cout << "Die Ente ist ein " << Ente.Name() << "." << endl; } return 0;
9 9 Das Programm liefert folgende Ausgabe: Das Fahrzeug hat 4 Raeder und wiegt 900 kg. Der Laster hat ein Gewicht von kg pro Rad. Das Motorrad wiegt 400 kg. Das Fahrzeug hat 4 Raeder und wiegt 700 kg. Die Ente ist ein Fahrzeug.
10 10 Die abgeleitete Klasse Auto (Header-File) #ifndef _AUTO_HPP #define _AUTO_HPP #include "fahrzeug.hpp" class Auto : public Fahrzeug { int _Passagiere; public: Auto(int Raeder, double Gewicht, int Leute = 4) : Fahrzeug(Raeder, Gewicht), _Passagiere(Leute) {} int Passagiere () const { return _Passagiere; } const char *Name () const {return "Auto";} int Fuehrerscheinklasse () const {return 3;} };
11 11 #endif
12 12 Die abgeleitete Klasse Laster (Header-File) #ifndef _LASTER_HPP #define _LASTER_HPP #include "fahrzeug.hpp" class Laster : public Fahrzeug { int _Besatzung; double _Ladung; public: Laster(int Raeder, double Gewicht, int Besatzung = 2, double Ladung = ) : Fahrzeug(Raeder, Gewicht), _Besatzung(Besatzung), _Ladung(Ladung) {}
13 13 double Effizienz () const { return _Ladung / (_Ladung + _Gewicht); } int Besatzung () const {return _Besatzung;} const char *Name () const { return "Lastwagen"; } int Fuehrerscheinklasse () const { return 2; } }; #endif
14 14 Anwendung der abgeleiteten Klassen #include <iostream> #include "fahrzeug.hpp" #include "auto.hpp" #include "laster.hpp" using namespace std; int main() { Fahrzeug Hochrad(1, 5.7); cout << Hochrad; cout << "Die Radlast des Hochrades betraegt " << Hochrad.Radlast() << " kg " << endl << "auf dem einzigen Rad." << endl << endl; Auto Ente(4, 700.0, 5);
15 15 cout << Ente; cout << "Die Ente fuehrt " << Ente.Passagiere() << " Passagiere mit sich. " << endl << "Die Radlast der Ente ist " << Ente.Radlast() << " kg pro Rad." << endl << "Die Ente ist ein " << Ente.Name() << "." << endl << endl; Laster Sattelschlepper(18, , 1, ); cout << Sattelschlepper; cout << "Die Effizienz des Sattelschleppers ist " << * Sattelschlepper.Effizienz() << " Prozent." << endl << "Der Sattelschlepper ist ein " << Sattelschlepper.Name() << "." << endl; } return 0;
16 16 Ausgabe des Programms Das Fahrzeug hat 1 Rad und wiegt 5.7 kg. Die Radlast des Hochrades betraegt 5.7 kg auf dem einzigen Rad. Das Fahrzeug hat 4 Raeder und wiegt 700 kg. Die Ente fuehrt 5 Passagiere mit sich. Die Radlast der Ente ist 175 kg pro Rad. Die Ente ist ein Auto. Das Fahrzeug hat 18 Raeder und wiegt 5700 kg. Die Effizienz des Sattelschleppers ist Prozent. Der Sattelschlepper ist ein Lastwagen.
17 17 Konstruktoren/Destruktoren bei Vererbung #include <iostream> using namespace std; class basis { public: basis() { cout << "Konstruktor fuer Klasse basis " << endl; } ~basis() { cout << "Destruktor fuer Klasse basis " << endl; } }; class abgeleitet : public basis { public: abgeleitet() { cout << "Konstruktor fuer Klasse abgeleitet " << endl;} ~abgeleitet() { cout << "Destruktor fuer Klasse abgeleitet " << endl; } };
18 18 int main() { cout << "Zuerst definiere Variable vom Typ basis : " << endl; basis b; cout << "Nun definiere Variable vom Typ abgeleitet : " << endl; abgeleitet a; cout << "Compiler ruft Destruktoren automatisch auf : " << endl; } return 0;
19 19 Ausgabe des Programms Zuerst definiere Variable vom Typ basis : Konstruktor fuer Klasse basis Nun definiere Variable vom Typ abgeleitet : Konstruktor fuer Klasse basis Konstruktor fuer Klasse abgeleitet Compiler ruft Destruktoren automatisch auf : Destruktor fuer Klasse abgeleitet Destruktor fuer Klasse basis Destruktor fuer Klasse basis
20 20 Anmerkungen zur Vererbung -1- Um eine Klasse B von einer Basis-klasse A abzuleiten, verwendet man die Deklaration class B : public A {... }; Die Basisklasse kann in mancherlei Hinsicht als Element der abgeleiteten Klasse aufgefasst werden. Die Basisklasse wird somit quasi in die abgeleitete Klasse eingebettet. Das Schlüsselwort public bedeutet, daß alle öffentlichen Daten von A von allen Funktionen auch außerhalb von B benutzt werden können. Jede Funktion kann einen B* in einen A* konvertieren.
21 21 Anmerkungen zur Vererbung -2- Wird stattdessen das Schlüsselwort private verwendet, so dürfen nur noch die Funktionen von B und friends von B die öffentlichen Daten von A benutzen, und nur diese dürfen einen B* in einen A* konvertieren. Abgeleitete Klassen haben im allgemeinen sowohl zusätzliche Elemente als auch zusätzliche Elementfunktionen, die sie von den anderen von der gleichen Basis- Klasse abgeleiteten Klassen unterscheiden. Die Element-Funktionen der abgeleiteten Klasse können auf die privaten Daten der Basisklasse zugreifen, wenn in deren Deklaration das Schlüsselwort protected anstatt von private verwendet wird. Die Verwendung von protected sollte aber nicht zur Gewohnheit werden. Die sauberere Lösung ist meistens die, bei der abgeleitete Klassen nicht auf die privaten Daten der Basisklasse zugreifen.
22 22 Anmerkungen zur Vererbung -3- Vererbung kann sich über mehrere Generationen erstrecken, d.h., abgeleitete Klassen können selbst wieder als Basisklasse anderer Klassen dienen. Mehrfachvererbung ist ebenfalls möglich, d.h. Klassen können von mehr als einer Basisklasse abgeleitet werden. Eine Klasse Wasserflugzeug könnte z.b. aus den Klassen Boot und Flugzeug abgeleitet werden durch class Wasserflugzeug : public Boot, public Flugzeug {... };
23 23 Beispiel: Problem bei Vererbung #include <iostream> #include "laster.hpp" #include "auto.hpp" using namespace std; int main() { Fahrzeug* Fuhrpark[3]; Fuhrpark[0] = new Fahrzeug( 1, 5.7); Fuhrpark[1] = new Auto ( 4, 700.0); Fuhrpark[2] = new Laster (18, ); } for (int i=0; i<3; i++) { cout << (Fuhrpark[i])->Name() << endl; } return 0;
24 24 Ausgabe des Programms Fahrzeug Fahrzeug Fahrzeug
25 25 Beispiel: Das gleiche Problem bei Vererbung #include <iostream> using namespace std; class basis { public: void name() const { cout << "basis" << endl; } }; class abgeleitet : public basis { public: void name() const { cout << "abgeleitet" << endl; } };
26 26 void AusgabeName(const basis &b){ b.name(); } int main() { basis b; abgeleitet a; cout << "Normale Ausgabe : " << endl; b.name(); a.name(); cout << "Ausgabe ueber Funktion AusgabeName : " << endl; AusgabeName(b); AusgabeName(a); } return 0;
27 27 Ausgabe des Programms Normale Ausgabe : basis abgeleitet Ausgabe ueber Funktion AusgabeName : basis basis
28 28 Beispiel: Ausweg durch virtuelle Funktionen #include <iostream> using namespace std; class basis { public: virtual void name() const { cout << "basis" << endl; } }; class abgeleitet : public basis { public: void name() const { cout << "abgeleitet" << endl; } };
29 29 void AusgabeName(const basis &b){ b.name(); } int main() { basis b; abgeleitet a; cout << "Normale Ausgabe : " << endl; b.name(); a.name(); cout << "Ausgabe ueber Funktion AusgabeName : " << endl; AusgabeName(b); AusgabeName(a); } return 0;
30 30 Ausgabe des Programms Normale Ausgabe : basis abgeleitet Ausgabe ueber Funktion AusgabeName : basis abgeleitet
31 31 Beispiel: Das Fahrzeug Ersetzt man entsprechend in der Deklaration der Klasse Fahrzeug die Deklaration der Funktion Name durch virtual char *Name () const { return "Fahrzeug"; } so wird die Funktion in den abgeleiteten Klassen nicht nur redefiniert, Pointer oder Referenzen auf die abgeleiteten Klassen, die auf die Basisklasse gecastet werden, benutzen die Elementfunktionen der abgeleiteten Klasse. Unser Beispielprogramm der Fuhrparks liefert jetzt das gewünschte Ergebnis: Fahrzeug Auto Lastwagen
32 32 Beispiel: Das Fahrzeug -2- Fügt man dem Programm die Zeile cout << (Fuhrpark[2])->Fahrzeug::Name() << endl; hinzu, so gibt es Fahrzeug aus. Man kann also die Benutzung der Funktion Name der Basisklasse durch Benutzung des Operators :: erzwingen.
33 33 Anmerkungen zu virtuellen Funktionen Virtuelle Funktionen sind Funktionen der Basisklasse, die in einer abgeleiteten Klassen redefiniert werden. Die Deklaration einer virtuellen Funktion in der Basisklasse ist durch das Schlüsselwort virtual gekennzeichnet. Bei der Redefinition in einer abgeleiteten Klasse braucht das Schlüsselwort virtual nicht mehr mitangegeben zu werden. Soll in einer abgeleiteten Klasse ausnahmsweise einmal die virtuelle Funktion der Basisklasse anstatt der redefinierten Funktion aufgerufen werden, so kann man dazu den Bereichsauflösungsoperator :: verwenden, z.b. Fahrzeug::Name();
34 34 Anmerkungen zu virtuellen Funktionen -2- Sobald polymorphe Objekte verwendet werden, sollten die Destruktoren virtuell sein. virtual Fahrzeug();
35 35 Laufzeittypüberprüfung #include <iostream> #include "auto.hpp" #include "laster.hpp" using namespace std; void SicherCasten(Fahrzeug *kfz) { Laster *p = dynamic_cast<laster *>(kfz); if( p ) { cout << "Die Effizienz betraegt " << p->effizienz() << endl; } else { cout << "Das ist kein Laster!" << endl; } } int main()
36 36 { } // Bemerkung: man darf die Variable vom Typ // Auto natuerlich nicht "auto" nennen, so wie // ich es in der Vorlesung versucht habe, weil // auto ein C++ Schluesselwort ist! Auto autom(4, , 5); Laster laster(6, , 3, 12); SicherCasten(&autom); SicherCasten(&laster); return 0;
37 37 Beispiel: Abstrakte Deklaration der Klasse Fahrzeug #ifndef VEHIKEL_HPP #define VEHIKEL_HPP #include <iostream> using namespace std; class Vehikel { protected: int _Raeder; double _Gewicht; public: Vehikel (int Raeder, double Gewicht); int Raeder () const {return _Raeder;} double Gewicht () const {return _Gewicht;} double Radlast () const;
38 38 }; friend ostream& operator << (ostream& s, const Vehikel &v); // Die beiden folgenden Funktionen sind rein virtuell. virtual const char *Name() const = 0; virtual int Fuehrerscheinklasse() const = 0; #endif
39 39 Beispiel: Eine abstrakte Klasse #include <iostream> #include "auto_v.hpp" #include "laster_v.hpp" using namespace std; int main() { // Vehikel Hochrad; // Verboten, da abstrakte Basisklasse Auto Ente(4, 700.0, 5); cout << "Typ : " << Ente.Name() << endl; cout << Ente; cout << "Die Ente fuehrt " << Ente.Passagiere() << " Passagiere mit sich." << endl << "Die Radlast der Ente ist " << Ente.Radlast() << " kg pro Rad." << endl;
40 40 cout << "Man kann ein " << Ente.Name() << " mit Fuehrerscheinklasse " << Ente.Fuehrerscheinklasse() << " fahren.\n\n"; Laster Sattelschlepper(18, , 1, ); cout << "Typ : " << Sattelschlepper.Name() << endl; cout << Sattelschlepper; cout << "Die Effizienz des Sattelschleppers ist " << * Sattelschlepper.Effizienz() << " Prozent.\n"; } cout << "Man kann einen " << Sattelschlepper.Name() << " mit Fuehrerscheinklasse " << Sattelschlepper.Fuehrerscheinklasse() << " fahren.\n"; return 0;
41 41
42 42 Dieses Programm produziert folgende Ausgabe: Typ : Auto Das Fahrzeug hat 4 Raeder und wiegt 700 kg. Die Ente fuehrt 5 Passagiere mit sich. Die Radlast der Ente ist 175 kg pro Rad. Man kann ein Auto mit Fuehrerscheinklasse 3 fahren. Typ : Lastwagen Das Fahrzeug hat 18 Raeder und wiegt 5700 kg. Die Effizienz des Sattelschleppers ist Prozent. Man kann einen Lastwagen mit Fuehrerscheinklasse 2 fahren.
43 43 Abstrakte Klassen Eine virtuelle Funktion, die in der Basisklasse als konstant Null vorinitialisiert ist, wird als rein virtuelle Funktion bezeichnet: virtual int rein virtuell(int, char *) = 0; Die Initialisierung =0 ist wie ein Schlüsselwort zu interpretieren und kann nicht auf normale Funktionen angewendet werden. Eine Klasse mit mindestens einer virtuellen Funktion heißt abstrakte Klasse. Diese werden ausschließlich als Basisklassen verwendet, d.h., um andere Klassen daraus abzuleiten. Objekte einer abstrakten Klasse können nicht erzeugt werden.
44 44 Abstrakte Klassen -2- Rein virtuelle Funktionen, die in einer abgeleiteten Klasse nicht redefiniert werden, bleiben rein virtuell. In diesem Fall ist auch die abgeleitete Klasse abstrakt. Abstrakte Klassen werden typischerweise zur Definition von Schnittstellen eingesetzt.
12. Vererbung. 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!
Mehr13. Vererbung. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012)
13. Vererbung Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012) Vererbung Konzept Protected Section Virtuelle Mitgliedsfunktionen Verwendung von Vererbung Vererbung Vererbung ist ein Mechanismus,
MehrMethoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only
Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer
MehrProgrammieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen
Einleitende Bemerkungen Einleitende Bemerkungen Ideen hinter der objektorientierten Programmierung Objekte (/* Instanzen einer Klasse */) im Mittelpunkt Objekte bilden Einheit aus Daten (/* Attributen,
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
Mehr01. 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
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
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
MehrZiel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind
Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt
MehrC++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern
C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches
Mehr10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)
10. Klassen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Objektorientierte Programmierung!Das Konzept der Klassen!Members!Objekte!Konstruktoren und Destruktoren!this-Pointer!Public und Private
MehrVererbung und Polymorphie
Vererbung und Polymorphie WiMa-Praktikum 1, Teil C++, Tag 5 Christoph Ott, Büro: Helmholtzstr.18, E22 Tel.: 50-23575, Mail: christoph.ott@uni-ulm.de Institut für Angewandte Informationsverarbeitung 29.08.08
MehrC++ - Eine Ubersicht fur Java-Programmierer
C++ - Eine Ubersicht fur Java-Programmierer Daniel Wasserrab Lehrstuhl fur Programmierparadigmen Universitat Karlsruhe 23. April 2008 C++ I Entwickelt Anfang der 80er von Bjarne Stroustrup I Beeinut von
MehrPraktikum Betriebssysteme 1. Aufgabe (1)
FG TECHNISCHE INFORMATIK U BS 041 01 TH 09 Praktikum Betriebssysteme 1. Aufgabe (1) Es wird ein unter LINUX lauffähiges C++-Programm ptab, mit dem Informationen über die Partitionierung von Festplatten
MehrC++-Zusammenfassung. H. Schaudt. August 18, 2005
C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:
MehrCodingstandard. Softwareentwicklung Praktikum Stand: 27.02.2008
I. Einleitung II. Codingstandard Softwareentwicklung Praktikum Stand: 27.02.2008 Wie in der Vorlesung schon ausgeführt wurde, ist die Lesbarkeit und Wartbarkeit des Sourcecodes ein sehr wichtiges Kriterium
MehrFunktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
MehrUnterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur
Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert
MehrGetName(), GetName(), GetGeschlecht() und AelterWerden().
11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
MehrKlausur zu Objektorientierter Softwareentwicklung in C++ 4. Februar 2003 (WS 2002/2003) Beispiellösung
Klausur zu Objektorientierter Softwareentwicklung in C++ 4. Februar 2003 (WS 2002/2003) Beispiellösung Bearbeitungszeit: 120 Minuten NICHT MIT BLEISTIFT SCHREIBEN!!! Name: Vorname: Matrikelnummer: Aufgabe
MehrVererbung. Was versteht man unter dem Begriff Vererbung?
Was versteht man unter dem Begriff Vererbung? Elternkonstrukt - Datenelemente - Methoden o Deklaration o Definition Kindkonstrukt... Main... Elternkonstrukt b = new Kindkonstrukt() b.fn() Komponenten &
MehrProgrammieren - Vererbung & Polymorphie
Programmieren - Vererbung & Polymorphie Reiner Nitsch r.nitsch@fbi.h-da.de Vererbung - Was ist das? Vererbung ist ein wichtiges Konzept zur Unterstützung der Wiederverwendbarkeit, wenn auch nicht das Wichtigste.
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Die Vererbung ermöglicht es, neue Klassen auf der Basis von schon
MehrDAP2-Programmierpraktikum Einführung in C++ (Teil 1)
DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume
Mehr1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung
K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2006/07 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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrKurzeinfü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
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
MehrObjektorientierung: Klassen und Objekte
Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18
Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.
MehrDer C++ Crashkurs v1.0
Der C++ Crashkurs v1.0 Daniel Stöckel, M. Sc. October 14, 2013 1 Grundlegendes 1.1 Das erste Programm Wir beginnen mit einem einfachen Hello world Programm. Listing 1: hello world.cpp // Einbinden der
MehrÜbung HP Beispielaufgaben 3
Beispielaufgaben 3 Aufgabe 1: Implementieren Sie die Klassendeklaration und drei Funktionen der Klasse Lexikon, die Elemente vom Typ wstring speichert. Die Methode rm_punct soll an Anfang und Ende des
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
MehrObjektorientiertes Programmieren für Ingenieure
Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen
MehrJava I Vorlesung Vererbung und Sichtbarkeit
Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.
MehrÜberblick. 7. Überladen von Operatoren
Ü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
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrÜberschreiben von Methoden
Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra
MehrInformationsverarbeitung im Bauwesen
1/21 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 8
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrObjektorientierte Programmierung
Programmierkurs C++ Kapitel 7:Objektorientierte Programmierung Seite 1 Objektorientierte Programmierung If programming in PASCAL is like put in a straightjacket, then programming in C is like playing with
MehrKlassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
Mehr1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
MehrProgrammieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung.
Vorbemerkungen Zur Erinnerung aktueller Standpunkt: Entwickler von (bibliotheken) jetzt sind wichtig interne Repräsentation der Daten Realisierung der gewünschten Funktionalität Bereitstellung geeigneter
Mehr11. Klassen. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012)
11. Klassen Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012) Objektorientierte Programmierung Das Konzept der Klassen Members Objekte Konstruktoren und Destruktoren this-pointer Public und
Mehr1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation des Quellcodes 4. Werte- und Referenzsemantik
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
MehrPass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl
Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt
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
Mehr4. Objektorientierte Programmierung mit C++
4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung/ Sprachfamilie Nicht objektorientierte Erweiterungen von C Grundlagen des Typkonzepts von C++ Ziele der Objektorientierung Objekt
Mehr2. Semester, 2. Prüfung, Lösung
2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter
MehrObjektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11
Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen
MehrTeil 6: Klassenkonzept. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden
Teil 6: Klassenkonzept Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 6 Klassenkonzept...3 6.1 Was ist eine Klasse?... 3 6.2
MehrProgrammieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff
Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
MehrSeminar Softwarereengineering/Merkmale der Programmiersprache C++
Seminar Softwarereengineering/Merkmale der Programmiersprache C++ Martin Aumüller TU Ilmenau 31. Mai 2007 Themen 1 Generelle Probleme Kompatibilität mit C Standardisierung 2 Verständnisprobleme - Präprozessor
MehrVon Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-dortmund.de
Von Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-.de Von Java nach C++, Lehrstuhl Informatik VII, TU Dortmund 1 Übersicht Einleitung Literatur
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und
MehrBetriebssysteme: Konzepte, Dienste, Schnittstellen (Betriebssysteme und betriebssystemnahe Programmierung)
BERGISCHE UNIVERSITÄT WUPPERTAL GAUSS-STRASSE 20 42119 WUPPERTAL TELEFAX (0202) 439-2901 TELEFON (0202) 439-0 WWW www.uni-wuppertal.de Fachbereich C MATHEMATIK UND NATURWISSENSCHAFTEN Fachgruppe Mathematik
MehrC++ Programmierkurs. 5. Klassen. Wintersemester 04 / 05. Christian Hagemeier Lehrstuhl Prof. Dr. Schrader
C++ Programmierkurs Wintersemester 04 / 05 Christian Hagemeier Lehrstuhl Prof. Dr. Schrader Institut für Informatik Universität zu Köln mittwochs 17 18:30 Uhr Hörsaal II der Physikalischen Institute http://www.zaik.de/afs/teachings/
MehrEinführung in die Programmierung (EPR)
Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015) Dr. S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K.
MehrIn der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch
Kapitel Matrizen in C++ In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch 1 const int n=10; 3 double a[n][n]; gegeben. Allerdings gibt es bei dieser Methode eine Reihe
MehrVon Java nach C++ Frank Weichert, Heinrich Müller Informatik VII Universität Dortmund http://ls7-www.cs.uni-dortmund.de
Von Java nach C++ Frank Weichert, Heinrich Müller Informatik VII Universität Dortmund http://ls7-www.cs.uni-dortmund.de Von Java nach C++, LS VII, Universität Dortmund, SS 2006 1 Übersicht Einleitung Literatur
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
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,
MehrTeil 9: Vererbung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden
Teil 9: Vererbung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 9 Vererbung... 3 9.1 Motivation... 3 9.2 Deklaration und Zugriffsrechte...
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
MehrDas Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
Mehr5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS2013/14 Inhalt Übung(Aufklärung) Vererbung(wdh.) Initilisierung bei Vererbung
MehrC++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen
C++ Kurs Teil 1 "hello world" Vergleich von C++ und Java Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Spezialitäten Schlüsselwort 'const', Copy Constructor,
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrKurze Einführung in die Programmiersprache C++ und in Root
Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrProgrammierkurs C++ Kapitel 9, Überladen Seite 1
Programmierkurs C++ Kapitel 9, Überladen Seite 1 Funktionen überladen int datum (int jahr); int datum (char person[]); sind in C++ zwei verschiedene Funktionen, die beide denselben Funktionsnamen haben.
MehrObjects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0
Objects First With Java A Practical Introduction Using BlueJ Mehr über Vererbung Exploring polymorphism 1.0 Zentrale Konzepte dieses Kapitels Methoden-Polymorphie statischer und dynamischer Typ Überschreiben
MehrZählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
MehrVergleich verschiedener OO-Programmiersprachen
Vergleich verschiedener OO-Programmiersprachen - Schnellumstieg in 15 Minuten - C++ Java Visual C++ C# Programmbeispiel in Visual C++, C#, Java und C++ Dr. Ehlert, Juni 2012 1 Inhaltsverzeichnis 1. Problemstellung
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
Mehr1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
MehrKonstruktoren und Destruktoren Initialisierung von Objekten
Konstruktoren und Destruktoren Initialisierung von Objekten Breymann [15] Abschn. 3.3, S. 161ff Konstruktoren Konstruktoren haben keinen Return-Wert, auch nicht void. Methoden sorgen dafür, dass sich das
MehrC vs. C++ Sebastian Meyer. Proseminar C - Grundlagen und Konzepte. Universität Hamburg
C vs. C++ Sebastian Meyer Universität Hamburg Proseminar C - Grundlagen und Konzepte 2013 1 / 31 Gliederung 1 Einführung 2 Vergleich der Spracheigenschaften 3 Neue Sprachelemente in C++ 4 Fazit 5 Zusammenfassung
MehrDie Programmiersprache C Eine Einführung
Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert
Mehr3. Konzepte der objektorientierten Programmierung
3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrKlausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber
Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber 1) Welche Antworten zur Operatorüberladung sind richtig? (1) a) C++ - Operatoren können zusammen mit Objekten funktionieren b) C++ - Operatoren wird
MehrC# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung
C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung 1. "Hai!" [Konsolenanwendung] Console.WriteLine("Hai, wie geht's?"); 2. Muktiplikation mit sich selbst [Konsolenanwendung] // Ausgabe
MehrInformatik I (D-MAVT)
Informatik I (D-MAVT) Übungsstunde 1 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich kurze Stunden mit Stoffueberblick -> mehr Zeit fuer Fragen This semester s menu... Imperative Programmierung
MehrLetztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);
Letztes Mal static int ggt(int a, int b) { if (a == b) return a; else if (a > b) } return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Darf hier nicht stehen! Compiler sagt: Missing return statement
MehrKlausur zur Vorlesung Grundlagen der C++-Programmierung
Institut für Simulation und Graphik Magdeburg, 15.7.2013 Dr. Christian Rössl Klausur zur Vorlesung Grundlagen der C++-Programmierung Name, Vorname Studiengang Matrikelnummer Zusatzblätter Unterschriften
MehrKlausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16
Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier
Mehr1.2 Attribute und Methoden Aufbau einer Java-Klasse:
Aufbau einer Java-Klasse: public class Quadrat { int groesse; int xposition; String farbe; boolean istsichtbar; public void sichtbarmachen() { istsichtbar = true; public void horizontalbewegen(int distance){
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
Mehr5.6 Vererbung. Vererbung
5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
Mehr