11.3 Virtuelle Methoden
|
|
- Achim Lenz
- vor 5 Jahren
- Abrufe
Transkript
1 11.3 Virtuelle Methoden Überdeckte Methoden: Betrachten wir noch einmal unsere Klassen Employee und Manager. class Employee{ //... void print() const{ //... cout << "Employee: " <<...; class Manager : public Employee{ //.. void print() const{ //... cout << "Manager: " <<...; Die Methode print() ist in diesem Falle überdefiniert. print() in Manager überdeckt die Methode aus Employee. WS 2001/02 Programmierkurs C++ Seite 188
2 Sind im Programm zwei Objekte Employee e(...); Manager m(...); definiert, dann verhält sich das Programm wie erwartet: e.print() ruft Employee::print() m.print() ruft Manager::print() Überdefinition ist auch für Attribute möglich. und auf. Bei dem Zugriff auf eine Methode oder ein Attribut erfolgt die Suche nach der gültigen Deklaration/Definition erst in der Klasse selbst und dann in der direkten Oberklasse. Ist eine Methode auch in der direkten Basisklasse nicht sichtbar, wird sie nicht gefunden - es tritt ein Fehler auf. Folge von Überdefinition: Methoden der Objekte der Basis- und Unterklasse besitzen unterschiedliche Funktionalität unter gleichem Namen. Das Objekt der Unterklasse kennt immer auch die Methode der Basisklasse (Namensauflösung!). aber: Nicht das Objekt trifft die Auswahl als Experte sondern der Betrachter Typ bestimmt ausgeführte Methode! WS 2001/02 Programmierkurs C++ Seite 189
3 Entscheidend ist hier, daß der Typ von e und m bereits zur Compilezeit feststellbar waren. Was passiert aber bei folgender Funktion void ausgabe(employee& emp) { } emp.print(); wenn ausgabe(e) oder ausgabe(m) aufgerufen werden? Das ist möglich, da an jeder Stelle wo ein Employee steht auch ein Manager stehen darf. Hier wird aber immer die Methode Employee::print() aufgerufen. Normalerweise entscheidet der Compiler, welchen Methodenaufruf er zur Compilezeit ausführt. Dies gilt auch, wenn Funktionen überladen sind. In diesem Fall kann diese Entscheidung aber erst zur Laufzeit getroffen werden. WS 2001/02 Programmierkurs C++ Seite 190
4 Polymorphismus: Darunter versteht man die Fähigkeit, zur Laufzeit auf der Basis der Objekttypen zu entscheiden, welche von unterschiedlichen überladenen Elementfunktionen aufgerufen werden soll. Es ist der Schlüssel zur Leistungsstärke der objektorientierten Programmierung und ohne ihn macht die Vererbung wenig Sinn. C++ unterstützt dies. Hierzu werden Methoden als virtual deklariert: class Employee{ virtual void print() const{... class Manager : public Employee{ virtual void print() const{... Das Schlüsselwort virtual darf nur in der Klassendeklaration verwendet werden. Bei der Methodendefinition ist es wegzulassen. WS 2001/02 Programmierkurs C++ Seite 191
5 Dies bewirkt, daß unabhänigig vom Typ eines Zeigers, der auf ein Objekt verweist, das Objekt zu einer Signatur genau eine Methode anbietet. Hierfür muß auch in der Basisklasse die in der abgeleiteten Klasse definierte Funktion bekannt sein. Beim Aufruf einer virtuellen Methode wird in jedem Fall zunächst in den abgeleiteten Klassen und dann in der Oberklasse nach eine Beschreibung gesucht. Eine virtuelle Methode ist in allen erbenden Klassen virtuell, das Schlüsselwort kann dort wahlweise entfallen (üblicherweise schreibt man es aber immer). Dies bewirkt, daß Methoden objektspezifisch (re)definiert werden können und die Auswahl der Methode vom Objekt getroffen wird. ausgabe(e); Employee... ausgabe(m); Manager... WS 2001/02 Programmierkurs C++ Seite 192
6 Der Polymorphismus funktioniert aber nur, wenn mit Zeigern auf Objekte und Referenzen gearbeitet wird. Eine Änderung des Funktionskopfes von ausgabe(employee& e) nach void ausgabe(employee emp){...} bewirkt, daß unabhängig vom übergebenen Objekt die Methode Employee::print() aufgrufen wird. Im letzten Fall wird von dem Objekt, das der Methode übergeben wird, eine lokale Kopie angelegt (Call-by-Value). Wird ein Objekt vom Typ Manager übergeben, so wird in emp nur der Teil kopiert, der beiden Klassen bekannt ist (Slicing). Es wird ja auch nur Speicherplatz für ein Objekt Employee reserviert. Employee e; Manager m; e = m; e Employee Employee Manager m Kennt die Member von Manager nicht mehr (Entnommen aus Programmierkurs C++, C. Veltmann und S. Dißman, FB Informatik, Universität Dortmund, wie auch die folgenden) WS 2001/02 Programmierkurs C++ Seite 193
7 Zur Erinnerung: Zeiger sind Variable, in denen Adressen von Objekten abgelegt werden können. Deshalb gilt: Eine Variable reserviert genau den Speicherplatz, den das zugehörige Objekt belegt. Größere Objekte haben nicht genug Platz. Ein Zeiger benötigt genau den Speicherplatz einer Adresse, die Größe des Objekts spielt keine Rolle. Vereinbarung von Zeigervariablen: Employee *pe; Dereferenzierung: pe->print(); dynamische Erzeugung: pe = new Employee; Speicherfreigabe: delete pe; Wie hilft das hier weiter?: Ein Zeiger auf eine Basisklasse kann auch auf Objekte der zugehörigen abgeleiteten Klasse verweisen: Employee *pe = new Manager; Verweist ein Zeiger der Basisklasse auf ein Objekt der abgeleiteten Klasse, so bleibt das gesamte Objekt der Unterklasse erhalten. WS 2001/02 Programmierkurs C++ Seite 194
8 Es ist daher möglich, ein Objekt wechselweise ohne Verlust Zeigern aus seiner Klasse sowie Zeigern aus allen seinen Basisklassen zuzuweisen. Verweist ein Zeiger der Basisklasse auf ein Objekt der abgeleiteten Klasse, so sind über den Zeiger jedoch nur die Methoden der Basisklasse sichtbar. Employee *e; Manager *m; e = new Manager; m = static_cast<manager*>(e); m Employee Manager e Das ist auch der Grund, warum Objekte als Zeiger und Referenzen übergeben werden sollen, damit der Polymorphismus nicht außer Kraft gesetzt wird. Mit virtuellen Methoden läßt sich echte Polymorphie realisieren: Das Objekt entscheidet, welche Methode ausgeführt wird. WS 2001/02 Programmierkurs C++ Seite 195
9 Hinweise: Immer wenn davon auszugehen ist, daß eine Funktion in einer abgeleiteten Klasse überschrieben wird, sollte man die Funktion in der Basisklasse als virtual deklarieren. Nicht virtuelle Methoden sollten nicht überschrieben werden, um das Verhalten überschaubar zu gestalten. Immer wenn Objekte einer Klasse dynamisch genutzt werden sollen, ist es ratsam virtuelle Destruktoren zu verwenden: Virtuelle Destruktoren Konstruktoren können nicht virtuell sein, weil es kein (vollständiges) Objekt gibt, das zur Festlegung des Typs dienen könnte. Der Destruktor kann aber virtuell deklariert werden, und dies sollte man in der Regel auch tun: class Base{ int bvalue; Base(int v){bvalue = v;} virtual ~Base(){cout << "~Base" << endl; WS 2001/02 Programmierkurs C++ Seite 196
10 class SubClass : public Base{ int svalue; SubClass(int bv, int sv) : Base(bv), svalue(sv) { virtual ~SubClass() { cout << "~SubClass" << endl; int main() { Base *pb = new SubClass(1,2); } // OK nur mit virtuellem Destruktor delete pb; Ohne eine Deklaration des Destruktors als virtual wäre das folgende passiert: Das dynamisch erzeugte Objekt der Klasse SubClass wird mit einem Zeiger *pb auf die Basisklasse Base gespeichert. Bei der Freigabe des Objekts mit delete, wird der Destruktor der Basisklasse aufgerufen (ausprobieren!). Dieser kennt nur die Member der Basisklasse und gibt deshalb zu wenig Speicher frei. WS 2001/02 Programmierkurs C++ Seite 197
11 11.4 Abstrakte Klassen Abstrakte Methoden sind solche, die nur aus der Deklaration einer Schnittstelle ohne die Definition ausführbaren Programmcodes bestehen. Gewünscht ist eine Beschreibung ähnlich einem Prototyp, bei dem aber Compiler/Linker keine Funktionsdefinition erwarten. Solche Methoden sollen in einer Oberklasse bekannt sein, aber erst in Unterklassen definiert werden, da nur dort eine sinnvolle Ausgestaltung möglich ist. Solche abstrakten Methoden müssen immer virtuell vereinbart werden. Eine abstrakte Methode führt zu einer abstrakten Klasse. Diese kann nicht verwendet werden, um Objekte zu erzeugen. So etwas ist z.b. notwendig, wenn abstrakte Konzepte wie z.b. Formen (als Oberbegriff zu Dreiecken, Kreisen, Vierecken...) realisiert werden sollen. Eine andere Anwendung sind Schnittstellen zu peripheren Geräten. Das System kann eine abstrakte Methode anbieten, ohne, daß Details dahinter bekannt sein müssen. WS 2001/02 Programmierkurs C++ Seite 198
12 Beispiel: Es sollen verschieden Formen verwaltet werden können. Der Flächeninhalt und notwendige Attribute zur Beschreibung sind von der speziellen Form abhängig. class Shape{ virtual double area() = 0; virtual void draw() = 0; virtual ~Shape() { Rein virtuelle Methoden werden durch =0 gekennzeichnet. Eine abstrakte Klasse besitzt keine Datenmember. Abstrakte Klassen können nur als Schnittstelle oder als Basisklasse für andere Klassen verwendet werden. Shape s; führt zu einer Fehlermeldung. class Circle : public Shape{ double radius; Circle(double r) : radius(r) { virtual double area(); virtual void draw(); virtual ~Circle(){ WS 2001/02 Programmierkurs C++ Seite 199
13 double Circle::area(){ return radius*2*m_pi; } void Circle::draw(){ // draw cirlce } oder eine weiter Klasse für Rechtecke: class Rectangle : public Shape{ double a,b; Rectangle(double x, double y) : a(x), b(y) { virtual double area() {return a*b; virtual void draw(); virtual ~Rectangle(){ int main() { Shape *s1 = new Circle(2.3); Shape *s2 = new Rectangle(2.0,3.0); cout << "Flaeche s1 = " << s1->area() << endl; cout << "Flaeche s2 = " << s2->area() << endl; delete s1; delete s2; } WS 2001/02 Programmierkurs C++ Seite 200
14 11.5 Geschachtelte Klassen Klassen können selbst wieder Klassen enthalten: 1. Der Name einer in einer Klasse vereinbarten Klasse ist dort lokal. 2. Auf solche Klassen kann aber mit dem Bereichsoperator zugegriffen werden. Insbesondere können so auch Instanzen ohne ein Objekt der umgebenden Klasse erzeugt werden: Es darf daher nicht auf ein Element von Objekten der umgebenden Klasse zugegriffen werden, sondern nur auf Klassenmember. 3. Die eingebettete Klasse hat keine besonderen Zugriffsrechte auf die umgebende Klasse. 4. Die umgebende Klasse hat keine besonderen Zugriffsrechte auf die eingebettete Klasse. 5. Die umgebende Klasse enthält zunächst nur die Definition der eingebetteten Klasse Objekte dieser Klasse müssen in der umgebenden Klasse explizit erzeugt werden. WS 2001/02 Programmierkurs C++ Seite 201
15 class Aussen { Aussen(int aus=0, int in=0) : zahl(aus), inobj(in) { int summe(){ return zahl + inobj.lieswert(); class Innen { Innen () { Innen (int i) {wert = i; int lieswert() {return wert; void setzewert (int i) {wert = i; protected: int wert; } protected: Innen inobj; int zahl; WS 2001/02 Programmierkurs C++ Seite 202
16 zu 1./2.: Innen Obj; führt zu einer Fehlermeldung des Compilers ( Innen undeclared). Aussen::Innen Obj; ist erlaubt. Obj besitzt dann nur Member, die zur Klasse Innen gehören: Obj.summe() führt zur Fehlermedlung no matching function for call to Aussen::Innen::summe () zu 3./4.: Eine Instanz Aussen ausobj; zu 5.: besitzt kein Member ausobj.wert. kann nicht über ausobj.inobj.wert auf das Datenmember wert von inobj zugreifen. Ohne den Konstruktoraufruf von inobj enthält ausobj; eine Instanz von Innen, die nicht definiert initialisiert ist. Eine nachträgliche Initialisierung ist nicht möglich ausobj.inobj.setzewert(5); class Aussen::Innen Aussen::inObj is protected in this context WS 2001/02 Programmierkurs C++ Seite 203
17 11.6 Einfach-/Mehrfachvererbung Einfachvererbung: Es können soviele Klassen wie nötig aus einer bestimmten Klasse abgeleitet werden, auch wenn es sich bei der letzteren selbst um eine abgeleitete Klasse handelt: class A {... class B : A {... class C : A {... class D : B {... class E : B {... A B C D E Jede abgeleitete Klasse erbt ihre Attribute von genau einer Basisklasse. Generalisierung/Spezialisierung einer Klasse durch Hinzufügen bzw. Entfernen von Attributen. Bereitstellung einer Alternativschnittstelle (z.b. Redefinition von Methoden) WS 2001/02 Programmierkurs C++ Seite 204
18 Mehrfachvererbung: Es gibt auch Probleme, deren Lösung eine unterschiedliche Form der Vererbung verlangen. class A {... class B {... class C {... class D : A, B {... class E : B, C {... class F : D, C, E {... A B C D E F Beispiel: Eine Benutzeroberfläche mit Fenstern, Scroll Leisten, Dialogboxen, usw.. Diese Elemente sollen von einer Klasse unterstützt werden. Jetzt sollen ein Fenster und eine Scroll Leiste so kombiniert werden, daß ein verschiebbares Fenster entsteht. Gegeben seien die Klassen Window und ScrollBar: WS 2001/02 Programmierkurs C++ Seite 205
19 class Window{ //... Window(int top, int left, ~Window(); class ScrollBar{ //... int bot, int right); ScrollBar(int top, int left, ~ScrollBar(); class ScrollableWind: //... int bot, int right); public Window, ScrollBar{ ScrollableWind (int top, int left, ~ScrollableWind(); int bot, int right); ScrollableWind kann neben den von Window und ScrollBar angebotenen Membern auch neue Member aufweisen. WS 2001/02 Programmierkurs C++ Seite 206
20 Durch die Vererbung als public werden die public Member der Basisklasse auch in der abgeleiteten Klasse public. Bei den Zugriffsrechten gilt alles analog zur Einfachvererbung. Eine abgeleitete Klasse kann eine beliebige Anzahl von Basisklassen besitzen. Diese müssen sich aber voneinander unterscheiden. Die naheliegendste Implementierung eines abgeleiteten Klassenobjekts ist, daß es ein Objekt aus jeder seiner Basisklassen enthält. Wenn die Basisklassen Konstruktoren besitzen, die Argumente übernehmen, dann sollte die abgeleitete Klasse diese explizit aufrufen: Scrollable Window:ScrollableWindow (int top, int left, int bot, int right) : Window(top,left,bottom,right), { //...} ScrollBar(top,,left,bottom,right) Die Reihenfolge der Aufrufe entspricht der angegebenen. WS 2001/02 Programmierkurs C++ Seite 207
21 Mehrfachvererbung kann die Regeln zum Ansprechen der Member einer Klasse verkomplizieren. Angenommen die Klassen Window und ScrollBar besitzen beide eine öffentliche Memberfunktion void move (int x, int y); Die abgeleitete Klasse ScrollableWind enthält beide Member und der Aufruf ScrollableWind sw; sw.move(10,20); ist nicht eindeutig. Deshalb muß entweder der Aufruf explizit gemacht werden sw.window::move(10,20); oder man definiert in der abgeleiteten Klasse eine solche Methode void Move(int x, int y){ Window::Move(x,y); ScrollBar::Move(x,y); } Dies ist hier auch deshalb sinnvoll, da das Fenster selbst als auch die Scroll Leiste verschoben werden müssen. WS 2001/02 Programmierkurs C++ Seite 208
22 Für jede abgeleitete Klasse gibt es eine implizite Umwandlung von der abgeleiteten zu jeder ihrer public Basisklassen. Diese können zur Umwandlung der Objektzeiger (oder Referenzen) von abgeleiteten Klassen in Objektzeiger (oder Referenzen) von Basisklassen verwendet werden: ScrollableWind sw1(10,10,200,200); Window* w1 = &sw1; // object pointer Window& w2 = sw1; // object reference Für die Objekte selbst ist eine solche Umwandlung (wie gehabt) unzulässig: Window w3 = sw1; // ERROR! Es gibt keine explizite Umwandlung von einer Basisklasse in eine abgeleitete Klasse: ScrollableWind* sw2 = w1; // ERROR! Dies geht aber explizit über eine Typkonvertierung: ScrollableWind* sw3 = (ScrollableWind*) w1; // o.k. aber die zur Basisklasse ScrollBar gehörenden Member sind in diesem Falle nicht initialisiert! WS 2001/02 Programmierkurs C++ Seite 209
11.3 Virtuelle Methoden
11.3 Virtuelle Methoden Überdeckte Methoden: Betrachten wir noch einmal unsere Klassen Employee und Manager. class Employee void print() const cout
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
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
MehrProgrammierkurs. Steffen Müthing. January 18, Interdisciplinary Center for Scientific Computing, Heidelberg University
Programmierkurs Steffen Müthing Interdisciplinary Center for Scientific Computing, Heidelberg University January 18, 2019 Konzepte Standard-Konzepte für Code Reuse: Polymorphie/Vererbung Funktionalität
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
MehrC++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
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
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
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
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
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 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,
MehrOOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
(Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Friend Klassen In einigen Fällen kann es notwendig werden, dass andere Klassen oder Funktionen
Mehr3D Programmierpraktikum: Einführung in C++ - Teil 2
3D Programmierpraktikum: Einführung in C++ - Teil 2 Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 4. Mai 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum
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
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
MehrC++ - Objektorientierte Programmierung Konstante und statische Elemente
C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja
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
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
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.)
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
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.
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
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
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
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.
MehrDie abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge,
Kompaktkurs C++ Vererbung (inheritance) 1 Oft besitzen verschiedene Datentypen einen gemeinsamen Kern: Kreis und Viereck sind geometrische Figuren; sie haben eine Kantenzahl, eine Fläche, einen Umfang
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
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:
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
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
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:
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Objektorientierung in C++ (2) Beziehungen zwischen Klassen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 530 Beziehungen zwischen Klassen Assoziation
Mehr8. Referenzen und Zeiger
8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen
MehrProgrammierkurs. SoSe Markus Geveler Inst. f. Applied Mathematics, TU Dortmund.
Programmierkurs SoSe 2013 Markus Geveler Inst. f. Applied Mathematics, TU Dortmund markus.geveler@math.tu-dortmund.de Lesson 5 Was machen wir heute hier? weiter mit Objektorientierter Programmierung viel
MehrEinführung in die Programmierung mit C++
1 Seite 1 Einführung in die Programmierung mit C++ Teil III - Objektorientierte Programmierung 9. Klassen und Methoden Was sind Klassen? Seite 2 sprachliches Mittel von C++ um objektorientierte Programmierung
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. Oberklassen und Unterklassen
Vererbung Oberklassen und Unterklassen Vererbung ist ein zentrale Bestandteil der Objektorientierung. Man beschreibt damit die Möglichkeit, Eigenschaften und Methoden vorhandener Klassen auf andere (neue)
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
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
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
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
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
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
MehrEinstieg 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
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
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
MehrObjektorientierte Programmierung III
Objektorientierte Programmierung III OOP Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten. Vererbung: Erlaubt Code zwischen verwandten Typen
MehrPolymorphie und UML Klassendiagramme
Polymorphie und UML Klassendiagramme Prof. Dr.-Ing. Thomas Schwotzer 1 Einführung Vererbung hat einen sehr interessanten und effektiven Effekt: die Polymorphie. Darum geht es in dieser Veranstaltung. 2
Mehr12 Abstrakte Klassen, finale Klassen und Interfaces
12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
MehrProgrammierkurs C/C++
Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Donnerstag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Structs Blockkurs: "Einführung in C/C++" 2 Structs sind Bündel von Variablen (unter
Mehr3 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
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
MehrEinstieg in die Informatik mit Java
1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen
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 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung
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
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
MehrVorkurs Informatik: Erste Schritte der Programmierung mit C++
Vorkurs Informatik WS 14/15 Vorkurs Informatik: Erste Schritte der Programmierung mit C++ Tag 3: Objektorientiere Programmierung 8. Oktober 2014 Vorkurs Informatik WS 14/15 > Einführung Agenda 1 Einführung
MehrVererbung, Polymorphismus
Vererbung, Polymorphismus INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Automobilbau Firma produziert Limousine Kunde möchte Kombi Wielösen? Möglichkeiten Neudesign
MehrC++ Klassen weitere Funktionen
C++ Klassen weitere Funktionen Übersicht static Elemente const Elemente Zusätzliches zu Konstruktoren Kopier-Konstruktor Konvertierung-Konstruktor Initialisierungslisten Friend Funktionen 2 Statische Klassenkomponenten
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
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
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
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch
MehrOOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
(Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Klassen in C++ Beispiele, mit Aufzeigen der Trennung von Spezifikation und Implementierung
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
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
MehrProgrammierkurs C++ Polymorphismus
Programmierkurs C++ Polymorphismus Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Polymorphismus Methoden von Oberklassen können in
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:
MehrPraxisorientierte Einführung in C++ Lektion: "Virtuelle Methoden"
Praxisorientierte Einführung in C++ Lektion: "Virtuelle Methoden" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ April 24, 2014
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,
MehrMikrorechentechnik 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
MehrInnere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11
MehrJavakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
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,
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
MehrPräsentation Interfaces
Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.
MehrWiederholung. Klassenhierarchie:
Wiederholung Klassenhierarchie: class Unter extends Ober {... Die Unterklasse Unter erweitert die Funktionalität ihrer Oberklasse Ober. Objekte der Klasse Unter können anstelle von Objekten der Klasse
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
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
MehrProgrammierkurs C/C++
Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Freitag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Blockkurs: "Einführung in C/C++" 2 Vererbung Klassen erben die Member von Basisklassen:
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
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
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
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
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
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
MehrKlassen. Kapitel Klassendeklaration
Kapitel 4 Klassen Wir kommen nun zu einem sehr wichtigen Aspekt der OOT: zu den Klassen. Eine Klasse ist eine vom Benutzer definierte Datenstruktur, eine Sammlung von Variablen (unterschiedlichen Typs)
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,
MehrProgrammierparadigmen
Programmierparadigmen DEKLARATIV Funktional Logisch IMPERATIV Prozedural Objektorientiert Einsatz der Programmierparadigmen Systemkomplexität von der Komplexität der Algorithmen dominiert deklarativ oder
MehrProgrammieren in C++ Vererbung
Programmieren in C++ Vererbung Inhalt Vererbung Konstruktoren und Destruktor von abgeleiteten Klassen Typkonvertierung von Zeigern Identifikation der Klasse eines Objekts Überladen von Methoden Verdecken
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
MehrRü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
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
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens mit C++ und Matlab SS2013 Inhalt Bis jetzt: Heute: Entwicklungsumgebung
MehrObjektorientierte Programmierung
C++ Objektorientierte Programmierung Erweiterung von selbstdefinierten Datentypen (struct) zu Klasse. Eine Klasse besteht dann aus - Attributen (Untertypen wie struct) und zusätzlich - aus Methoden (Funktionen
MehrProgrammierung III. Pointer für Fortgeschrittene Marc Ruberg. Arrays von Pointern ( Zeigervektoren ): Pointer auf Pointer:
Programmierung III Marc Ruberg 1 Pointer für Fortgeschrittene Arrays von Pointern ( Zeigervektoren ): long *zahlenptr[25]; char *strptr[1000]; Pointer auf Pointer: char **sp Zeiger auf Funktionen: Typ
Mehr"Roman Jachs" PR Überblick C++ Roman Jachs 5 AHD 1998/99. Überblick C++
Überblick C++ 1. GRUNDLAGEN UND KONZEPTE DER OBJEKTORIENTIERTEN PROGRAMMIERUNG 2 2. KLASSEN UND OBJEKTE 2 2.1 WAS IST EINE KLASSE? 2 2.2 WAS IST EIN OBJEKT? 2 2.3 KONSTRUKTOREN 3 COPY KONSTRUKTOR 3 2.4
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
Mehr