Programmieren in C++ Vererbung

Größe: px
Ab Seite anzeigen:

Download "Programmieren in C++ Vererbung"

Transkript

1 Programmieren in C++ Vererbung

2 Inhalt Vererbung Konstruktoren und Destruktor von abgeleiteten Klassen Typkonvertierung von Zeigern Identifikation der Klasse eines Objekts Überladen von Methoden Verdecken und Überschreiben Polymorphie Überschreiben von Methoden Vererbung bzw. Überschreiben unterbinden Zuweisungsoperator in abgeleiteten Klassen Zugriffsrechte Mehrfachvererbung 6-2

3 Vererbung: Beispiel Person/Student Superklasse (Basisklasse, Oberklasse, Vaterklasse) Klasse Person mit Eigenschaften Datenfelder: Nachname, Vorname Methoden: setnachname(), setvorname(), print() Subklasse (abgeleitete Klasse, Unterklasse, Sohnklasse) erbt Eigenschaften der Superklasse fügt eigene Eigenschaften dazu matrikelnummer setmatrikelnummer() printmatrikelnummer() 6-3

4 Realisierung der Klasse Person in C++ // in h-datei class CPerson { string m_nachname; string m_vorname; // Aggregation: Person hat einen Nachnamen // Aggregation: Person hat einen Vornamen public: void setnachname(const string& nachname) { m_nachname = nachname; } void setvorname(const string& vorname) { m_vorname = vorname; } void print() const; }; // in cpp-datei void CPerson::print() const { cout << "Nachname: " << m_nachname << endl; cout << "Vorname: " << m_vorname << endl; } 6-4

5 Realisierung der Klasse Student in C++ // in h-datei: Vererbung: ein Student ist eine Person class CStudent : public CPerson { // die Klasse CStudent wird von der Klasse CPerson abgeleitet // und erbt alle Attribute und Methoden der Klasse CPerson int m_matrikelnummer; public: // neue Methoden der Klasse CStudent void setmatrikelnummer(int nr) { m_matrikelnummer = nr; } void printmatrikelnummer() const; }; // in cpp-datei void CStudent::printMatrikelnummer() const { cout << "Matrikelnummer: " << m_matrikelnummer << endl; } 6-5

6 Einsatz der Klasse CStudent int main () { CPerson pers; pers.setnachname("mueller"); pers.setvorname("peter"); pers.print(); CStudent student; student.setnachname("maier"); student.setvorname("fritz"); student.setmatrikelnummer(56123); student.print(); student.printmatrikelnummer(); } CPerson pers2 = student; pers2.print(); // nicht aber: pers2.printmatrikelnummer(); return 0; 6-6

7 Konstruktoren in abgeleiteten Klassen Idee jeder abgeleitete Konstruktor initialisiert nur die neuen Datenfelder vererbte Datenfelder werden vom Konstruktor der Basisklasse initialisiert Umsetzung in C++ In der Initialisierungsliste des Konstruktors wird der Konstruktor der Basisklasse aufgerufen falls kein expliziter Aufruf eines Konstruktors der Basisklasse erfolgt, wird der Standardkonstruktor der Basisklasse implizit aufgerufen möglicher Inhalt der Initialisierungsliste Attribute der Klasse, aber keine geerbten Attribute Konstruktoraufruf der Basisklasse 6-7

8 Beispiel zu abgeleiteten Konstruktoren class CPerson { string m_name; string m_vorname; public: } CPerson(const string& name, const string& vname) : m_name(name), m_vorname(vname) { } cout << "K. von CPerson" << endl; class CStudent: public CPerson { int m_matnr; public: } CStudent(const string& name, const string& vname, int m) : CPerson(name, vname), m_matnr(m) { } cout << "K. von CStudent" << endl; im Testprogramm: CStudent studi("uwe", "Ochsenknecht", ); Ausgabe: K. von CPerson K. von CStudent 6-8

9 Konstruktoren erben (C++11) Grundsatz normalerweise erbt eine Klasse C keine Konstruktoren ihrer Basisklassen somit stehen nur die Konstruktoren der Klasse C zur Initialisierung von Instanzen der Klasse C zur Verfügung In C++11 können alle Konstruktoren der Basisklasse geerbt werden class CStudent: public CPerson { int m_matnr = 0; public: } using CPerson::CPerson; // Initialwert ist hier wichtig CStudent(const string& name, const string& vname, int m) // erbt alle Konstruktoren der Klasse CPerson : CPerson(name, vname, m_matnr(m) { cout << "K. von CStudent" << endl; } Das System verwendet den geerbten Konstruktor der Klasse CPerson und erzeugt einen Konstruktor für die Klasse CStudent mit der gleichen Deklaration. Der erzeugte Konstruktor der Klasse CStudent ruft den Konstruktor der Klasse CPerson mit den gleichen Argumenten auf. 6-9

10 Destruktor einer abgeleiteten Klasse Konzept der Destruktor einer abgeleiteten Klasse ruft nach Ausführung seines Methodenkörpers den Destruktor der Basisklasse implizit auf dynamische Attribute können im Destruktor zuerst gelöscht werden, bevor Attribute der Basisklasse gelöscht werden Wann soll ein Destruktor ausprogrammiert werden? wenn die Klasse Attribute enthält, welche dynamisch erzeugt worden sind, so sollen diese Attribute im Destruktor wieder gelöscht werden Wird der Destruktor auch bei einem statisch erzeugten Objekt aufgerufen? Ja! Beim Verlassen des Blocks, in dem das Objekt erstellt worden ist, wird zuerst der Destruktor aufgerufen, bevor das Objekt vom Stack entfernt wird. 6-10

11 Typkonvertierungen von Zeigern Typ einer Zeiger- oder Referenzvariable muss nicht gleich dem Typ des Objektes sein, auf welches die Zeiger-/Referenzvariable verweist bisher: neu: CStudent *pstud = new CStudent(); CPerson *ppers = new CStudent(); implizite (automatische) Zeigertypkonvertierung (Cast) Sohn *psohn = new Sohn(); Vater *pvater = psohn; explizite Zeigertypkonvertierung (Cast) Sohn *psohn = new Sohn(); Vater *pvater = psohn; Sohn *psohn2 = static_cast<sohn *>(pvater); // implizite Typkonvertierung // implizite Typkonvert. // explizite Typkonvert. 6-11

12 Gültige Up- und Down-Casts Up-Cast Konvertierung in einen Zieltyp, der in der Vererbungshierarchie weiter oben liegt implizite Konvertierung immer möglich, wenn der Zieltyp ein Vorfahre ist Down-Cast Konvertierung in einen Zieltyp, der in der Vererbungshierarchie weiter unten liegt nur explizite Konvertierung möglich nur möglich, wenn die Referenz auf ein Objekt des Zieltyps oder einer abgeleiteten Klasse des Zieltyps zeigt Unzulässige explizite Typkonvertierung Verwendung von C-Cast oder static_cast kann zu einem Fehler zur Laufzeit führen Verwendung von dynamic_cast gibt 0 zurück, bei Zeigervariablen wirft bad_cast Exception bei Referenzvariablen 6-12

13 Beispiele zu (un-)gültigen Casts class A { int m_a; }; class B: public A { int m_b; }; class C: public B { int m_c; }; class D { int m_d; }; public static void main(string[] args) { B *b = new C(); // Referenz vom Typ B auf ein neues // Objekt der Klasse C. // Impliziter Cast nach B. A *a = b; C *c = (C *) b; // Impliziter Cast zu einer Basisklasse. // Expliziter Cast zur ursprüngl. Klasse C *c2 = (C *) a; // Expliziter Cast von A zur // ursprünglichen Klasse. } D *d = (D *) b; // Fehler, da D nichts mit C zu tun hat. 6-13

14 Identifikation der Klasse eines Objektes Problem ein Down-Cast muss gültig sein, sonst kann es zu einem Laufzeitfehler kommen wie kann man erkennen, ob ein Down-Cast gültig ist? Lösung Verwendung von Run-Time Type Information (RTTI) dynamic_cast < Zieltyp >( Zeigervariable ) bei ungültiger Konvertierung wird 0 zurückgegeben Beispiele Vater *pv1 = new Vater(); Vater *pv2 = new Sohn(); Sohn *s1 = dynamic_cast<sohn *>(pv2); // gültiger Down-Cast s1 == pv2 Sohn *s2 = dynamic_cast<sohn *>(pv1); // ungültiger Down-Cast s2 ==

15 Typinformation (bei RTTI) Wie funktioniert dynamic_cast? Für jeden verwendeten Typ existiert eine Typinformation. Diese Typinformation kann in einem speziellen Typinformationsobjekt abgelegt sein. Operator typeid Syntax: type_info& t = typeid(* Zeigervariable); gibt Referenz auf Typ-Informationsobjekt zurück Voraussetzungen RTTI wird verwendet #include <typeinfo> Beispiel Vater *pvater = new Vater(); Vater *psohn = new Sohn(); const type_info& t1 = typeid(*pvater); const type_info& t2 = typeid(*psohn); if (t1 == t2) cout << "beide Typen sind gleich" << endl; if (t1.before(t2)) cout << "t1 ist eine Basisklasse von t2" << endl; 6-15

16 Überladen von Methoden Methoden überladen Methoden mit dem gleichen Namen, aber mit unterschiedlicher Parameterliste werden angeboten Szenario Basisklasse und abgeleitete Klasse enthalten beide eine Methode f void Vater::f(char) void Sohn::f(int) Welche Methode wird aufgerufen? Sohn s; s.f(5); s.f( A ); // Sohn::f wird aufgerufen, ok! // Sohn::f wird aufgerufen, warum? Wie kann f von Vater aufgerufen werden? wenn die Sohn-Klasse die Methode f ihres Vaters anbietet: using Vater::f; oder explizit aufrufen: s.vater::f( A ); 6-16

17 Verdecken und Überschreiben Verdecken abgeleitete Klassen können Datenfelder enthalten, die den gleichen Namen haben wie Datenfelder in den Basisklassen sollte wenn möglich vermieden werden Überschreiben abgeleitete Klassen können Methoden enthalten, die die genau gleichen Signaturen haben wie Methoden in den Basisklassen wird sinnvoll eingesetzt 6-17

18 Verwendung verdeckter Attribute class Vater { protected: int x; }; class Sohn: public Vater { int x; public: Sohn(int xx) : x(xx) { cout << "x des Sohnes: " << x << endl; cout << "x des Sohnes: " << this->x << endl; cout << "vom Vater geerbtes x: " << Vater::x << endl; cout << "vom Vater geerbtes x: " << static_cast<vater *>(this)->x<< endl; } }; 6-18

19 Polymorphie (Vielgestaltigkeit) Polymorphie von Operationen gleiche Methodenaufrufe in verschiedenen Klassen führen zu klassenspezifischen Anweisungsfolgen Beispiel: pperson->print() vs. pstudent->print() Polymorphie von Objekten (nur bei Vererbungshierarchien) an die Stelle eines Objektes in einem Programm kann auch ein Objekt einer abgeleiteten Klasse treten ein abgeleitetes Objekt ist polymorph: es kann sich auch als Objekt einer Basisklasse ausgeben Beispiel: ein Student verhält sich wie ein Student, kann sich aber auch wie eine Person verhalten 6-19

20 Überschreiben von Methoden (1) Idee in einer abgeleiteten Klasse wird eine Methode überschrieben die überschriebene Methode hat die gleiche Signatur (Name und Parameterliste) Beispiel und den gleichen Rückgabetyp oder bei Referenz-/Zeigertyp auch eine Spezialisierung davon class CPerson { virtual void print() { } }; class Cstudent : public CPerson { }; virtual void print() override { // in C++11 soll die Methode explizit als } CPerson::print(); // überschrieben gekennzeichnet werden // Aufruf der Methode print() aus der Basisklasse 6-20

21 Überschreiben von Methoden (2) statische Bindung: Methoden sind nicht virtual der statische Typ des Objekts, Zeigers oder Referenz entscheidet über die Wahl der aufgerufenen Methode dynamische Bindung: Methoden sind virtual Polymorphie kommt nicht zum Einsatz falls die Methode nicht über einen Zeiger bzw. Referenz aufgerufen wird Polymorphie kommt zum Einsatz und der dynamische Typ des Zeigers oder der Referenz entscheidet über die Wahl der aufgerufenen Methode Beispiele Vater v, *pv; Sohn s, *ps = new Sohn(); v = s; v.do_it(); pv = ps; pv->do_it(); Vater& rv = s; rv.do_it(); // do_it() der Klasse Vater wird aufgerufen // do_it() der Klasse Sohn wird aufgerufen // do_it() der Klasse Sohn wird aufgerufen 6-21

22 Vererbung unterbinden (C++11) Vererbung einer Klasse verunmöglichen mit final markierte Klasse kann nicht abgeleitet werden Beispiel class B { }; class C final : B { }; class D : C { }; // führt zu einer entsprechenden Fehlermeldung Überschreiben von Methoden verunmöglichen mit final markierte Methode darf in abgeleiteter Klasse nicht überschrieben werden Beispiel struct B { virtual void f(int) {} }; struct C : B { void f(int) final override {} }; struct D : C { void f(char) {} void f(int) {} }; // neue Methode, weil andere Signatur // führt zu einer entsprechenden Fehlermeldung 6-22

23 Zuweisungsoperator und Vererbung anonymes Subobjekt der Oberklasse wird als Element aufgefasst falls für eine abgeleitete Klasse kein eigener Zuweisungsoperator definiert ist, so wird das anonyme Subobjekt der Oberklasse mit seinem zugehörigen Zuweisungsoperator zugewiesen und für die neuen Attribute gilt der übliche Ansatz Probleme im Zusammenhang mit Polymorphie Beispiel: CSohn sohn1, sohn2; CVater& rvater1 = sohn1; CVater& rvater2 = sohn2; rvater1 = sohn2; // CVater::operator=(const CSohn&)? Fehlermeldung virtueller Zuweisungsoperator in C++03 implizit generierter Zuweisungsoperator ist nie virtuell virtuelle Methode assign() stattdessen verwenden virtueller Zuweisungsoperator in C++11 virtual CVater& operator=(const CVater&) = default; 6-23

24 Statische und dynamische Bindung Bindung Zuordnung eines Methodenrumpfes zum Aufruf einer Methode statische (frühe) Bindung Zuordnung erfolgt zum Kompilierzeitpunkt wird für alle nicht-virtuellen Methoden verwendet dynamische (späte) Bindung Zuordnung erfolgt erst zur Laufzeit des Programms sehr mächtiges Konzept, weil es die Wiederverwendung von Programmcode drastisch erhöht muss explizit mit dem Schlüsselwort virtual deklariert werden 6-24

25 Schlüsselwort virtual Sinnvolle Verwendung wird eine Methode in einer Basisklasse als virtual deklariert, so sind auch alle überschriebenen Varianten davon virtual Destruktoren von Klassen, welche dynamischen Speicher verwenden, sollten virtual sein, um sicherzustellen, dass die Objekte vollständig gelöscht werden, auch dann wenn der statische Typ eines Zeigers nicht vom gleichen Typ wie das zu löschende Objekt ist eine virtuelle Methode kann (pure virtual) also ohne Implementierung und somit abstrakt sein virtual void methodname() = 0; eine Klasse mit mindestens einer abstrakten Methode ist selber abstrakt Unsinnige bzw. unerlaubte Verwendung Konstruktoren können nicht virtual sein virtuelle private Methoden sind unsinnig, da die Zugriffsrechte nicht ausreichen, um überschriebene Methoden der Basisklasse aufzurufen 6-25

26 Zugriffsrechte Zugriffsrechte der Basisklasse Basisklasse geerbt als Zugriffsrechte der abgeleiteten Klasse public protected private public protected private public protected private public protected private public protected No access 1 protected protected No access 1 private private No access 1 1 Unless friend declarations within the base class explicitly grant access. 6-26

27 Mehrfachvererbung Beispiels aus der Welt der grafischen Objekte hier mit gemeinsamer Basisklasse (ist nicht notwendig) Probleme: Namenskonflikte, Mehrdeutigkeiten - text «abstract» ObjMitText + zeichnen() «abstract» GraphObj - position + getpos() + zeichnen() Rechteck - breite, hoehe + zeichnen() RechteckMitText + zeichnen() 6-27

28 Probleme der Mehrfachvererbung Beispiel Rechteck r(0, 0, 20, 50); RechteckMitText br(10, 5, 60, 60, "Text"); r.zeichnen(); // ruft zeichnen() von Rechteck auf br.zeichnen() // ruft zeichnen() von RechteckMitText auf Position rpos = r.getpos(); Position brpos = br.getpos(); GraphObj *pobj = &br; // gibt Ursprung des Rechtecks zurück // Compiler-Fehler // Compiler-Fehler Warum ein Compiler-Fehler? br.getpos() ist nicht eindeutig, denn es könnte getpos() von RechteckMitText oder von Reckteck aufgerufen werden Ursache: Teilobjekt position ist zweimal vorhanden und nicht beide Teilobjekte müssen identisch sein 6-28

29 Lösung: Virtuelle Basisklassen class Rechteck : virtual public GraphObj { }; // Rest normal class ObjMitText : virtual public GraphObj { }; // Rest normal class RechteckMitText : public ObjMitText, public Rechteck { public: RechteckMitText(int x, int y, int w, int h, string text) : ObjMitText(-2, -2, text), Rechteck(-1, -1, w, h), GraphObj(x, y) {} // Rest normal }; 6-29

30 Virtuelle Basisklassen und Initialisierung Definition vollständiges Objekt: Objekt, das nicht als Teilobjekt dient, also nicht in einem andern Objekt durch Vererbung enthalten ist Ausgangslage virtuelle Basisklassen bewirken, dass nur 1 Teilobjekt dieser Basisklasse in Instanzen einer abgeleiteten Klasse angelegt wird Problem welcher Konstruktor ist für die Initialisierung dieses einen Teilobjekts zuständig? im Beispiel: Rechteck( ) oder ObjMitText( )? Antwort Konstruktor der Basisklasse, welcher im Konstruktor eines vollständigen Objektes aufgerufen wird wird kein Konstruktor der Basisklasse explizit aufgerufen, so wird der Standardkonstruktor der Basisklasse verwendet im Beispiel: GraphObj(x, y) wird verwendet 6-30

7 Vererbung. Modul Programmieren mit C++ Kapitel Vererbung

7 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

Mehr

Einstieg in die Informatik mit Java

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

Mehr

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

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

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

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

Mehr

3D Programmierpraktikum: Einführung in C++ - Teil 2

3D 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

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

Mehr

11.3 Virtuelle Methoden

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

Mehr

Vererbung. Was versteht man unter dem Begriff Vererbung?

Vererbung. 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 &

Mehr

Vorkurs Informatik: Erste Schritte der Programmierung mit C++

Vorkurs 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

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Objektorientierung in C++ (2) Beziehungen zwischen Klassen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 530 Beziehungen zwischen Klassen Assoziation

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

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

Mehr

Überschreiben von Methoden

Ü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

Mehr

Einführung in C++ Vererbung und Polymorphismus

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

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung Teil 2 2 Übersicht der heutigen Inhalte Vererbung Abstrakte Klassen Erweitern von Klassen Überladen von Methoden Überschreiben von

Mehr

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

1. 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:

Mehr

5.6 Vererbung. Vererbung

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

Mehr

Programmieren - Vererbung & Polymorphie

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

Mehr

3 Objektorientierte Konzepte in Java

3 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

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert

Mehr

Repetitorium Informatik (Java)

Repetitorium 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

Mehr

Programmierkurs C++ Abstrakte Klassen und Methoden

Programmierkurs 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

Mehr

C/C++-Programmierung

C/C++-Programmierung 1 C/C++-Programmierung new/delete, virtual, Typumwandlungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 new/delete

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, 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:

Mehr

Programmieren in C++ Überladen von Methoden und Operatoren

Programmieren in C++ Überladen von Methoden und Operatoren Programmieren in C++ Überladen von Methoden und Operatoren Inhalt Überladen von Methoden Überladen von Operatoren Implizite und explizite Konvertierungsoperatoren 7-2 Überladen von Methoden Signatur einer

Mehr

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

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 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

Mehr

Programmieren in Java

Programmieren 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

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

Vererbung & Schnittstellen in C#

Vererbung & 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

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

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

Mehr

Java I Vorlesung Vererbung und Sichtbarkeit

Java 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

Angewandte Mathematik und Programmierung

Angewandte 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

Mehr

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus Vorlesung Programmieren Vererbung und Polymorphismus Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Bisher: Klassen und Objekte Haupteigenschaften:

Mehr

Aufbau von Klassen. class punkt {...

Aufbau von Klassen. class punkt {... Einführung in C++ Aufbau von Klassen Eine wird mit dem Schlüsselwort class eingeleitet, und endet mit einem Semikolon. Der Inhalt wird zwischen geschweiften Klammern geschrieben. class punkt {... ; Im

Mehr

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung 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,

Mehr

Präsentation Interfaces

Prä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.

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester 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

Mehr

Interfaces und Vererbung

Interfaces und Vererbung Interfaces und Vererbung Einführung in Java Folie 1 von 31 12. Mai 2011 Ivo Kronenberg Inhalt Interfaces Statische und dynamische Typen Visiblitätsmodifier Vererbung Überschreiben von Methoden Konstruktoren

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

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

Mehr

Prof. W. Henrich Seite 1

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

Mehr

Kapitel 6. Vererbung

Kapitel 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

Mehr

Beziehungen zwischen Objekten

Beziehungen zwischen Objekten 1/19 Beziehungen zwischen Objekten Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/19 Outline 1 Vererbung (Wiederholung)

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs 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

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 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

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Themen. 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 Themen Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren Statische Methoden Klassenmethoden Merkmal der Klasse nicht eines einzelnen Objekts

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie 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

Mehr

GetName(), GetName(), GetGeschlecht() und AelterWerden().

GetName(), 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

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

Vererbung. Martin Wirsing. Ziele. Vererbung 2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Verwendung von Klassen in C++

Verwendung von Klassen in C++ Verwendung von Klassen in C++ Heute: Benutzerdefinierte Datentypen (Konkrete Klassen) Vektoren Komplexe Zahlen Adressdatei Morgen: Objektorientierte Programmierung (Abstrakte Klassen) Vererbung Polymorphie

Mehr

Lexikalische Konventionen

Lexikalische Konventionen # 17 Kap. 3 Lexikalische Konventionen Kap. 3.1 Kap. 3.1.1 Kap. 3.1.2 Kap. 3.2 Kap. 3.2.1 Kap. 3.2.2 Kap. 3.2.3 Kap. 3.2.4 Kap. 3.2.5 Kap. 3.2.6 Zeichenvorrat von Java Programmier-Styleguide Der Unicode

Mehr

Kapitel 10: Subklassen / Vererbung

Kapitel 10: Subklassen / Vererbung 10. Subklassen/Vererbung 10-1 Objektorientierte Programmierung (Winter 2006/2007) Kapitel 10: Subklassen / Vererbung Deklaration von Subklassen Vererbung von Daten und Funktionen Überschreiben/Redefinition,

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Vererbung und Polymorphie

Vererbung 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

Mehr

SWE1 / Übung 9 (11.01.2012)

SWE1 / Übung 9 (11.01.2012) SWE1 / Übung 9 (11.01.2012) Vererbung Zugriffskontrolle Motivation für Vererbung (1) Objekte in der realen Welt kommen oft in ähnlichen Varianten (Attribute, Verhalten) vor Gliederung durch hierarchische

Mehr

Angewandte Mathematik und Programmierung

Angewandte 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

Mehr

2. Vererbung und Polymorphie. Vererbung (1/2) Beispiel (1/2) Vererbung (2/2) Eine Unterklasse wird folgendermaßen definiert

2. Vererbung und Polymorphie. Vererbung (1/2) Beispiel (1/2) Vererbung (2/2) Eine Unterklasse wird folgendermaßen definiert 2. Vererbung und Polymorphie Vererbung (1/2) Vererbung mit extends Konstruktoren bei der Vererbung Überladen von Methoden - statische Polymorphie Casten Dynamische Polymorphie Klasse Object Eine Unterklasse

Mehr

EINI I. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 10/11

EINI I. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 10/11 EINI I Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 10/11 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Programmieren I. Kapitel 8. Vererbung

Programmieren I. Kapitel 8. Vererbung Programmieren I Kapitel 8. Vererbung Kapitel 8: Vererbung Ziel: Wesentliches objektorientiertes Konzept kennenlernen Subtypen Idee Probleme und Varianten Vererbung in Java dynamische Bindung abstrakte

Mehr

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

Mehr

Klassen in Java. Klassen

Klassen in Java. Klassen Klassen in Java Klassen Klassen beschreiben Objekte, die abstakte oder konkrete Sachverhalte modellieren. Objekte sind durch einen Status gekennzeichnet (State). Der Status eines Objektes ergibt sich aus

Mehr

Java, OO und UML Fortsetzung

Java, OO und UML Fortsetzung Java, OO und UML Fortsetzung Das Objektorientierte Paradigma OO bildet keine geschlossene theoretisch abgegrenzte Basis (wie z.b. das Relationsmodell relationaler Datenbanken) OO ist eine Sammlung und

Mehr

Die abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge,

Die 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

Mehr

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

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Templates Nochmal zusammengefasst Die Basis der OOP- Zusammengefasst 2 Templates Programmiersprachen

Mehr

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode

Mehr

Wiederholung zur Vorlesung Programmieren

Wiederholung zur Vorlesung Programmieren Wiederholung zur Vorlesung Jan 2007 Wintersemester 2007/2008 Computerlinguistik, Campus DU Einstieg Erläutern sie in knappen Worten die notwendigen Schritte um ein einfaches Java-Programm zu schreiben

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

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

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon.

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon. Der Operator this Wir betrachten nochmals die Klassendefinition von Ballon. public class Ballon { private int durchmesser; private int x1, y1; private Color farbe =Color.black; // Konstruktor ohne Farbe

Mehr

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

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

Mehr

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

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

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck. Programmierkurs Java Vererbung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Ähnlichkeiten zwischen Klassen? Beispiel: Klassen Auto

Mehr

Einstieg in die Informatik mit Java

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

Mehr

01. Grundprinzipien der Vererbung

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

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009 PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2008/2009 FB Informatik

Mehr

Objektorientierung: Klassen und Objekte

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

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 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

Mehr

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

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Stefan Brass: OOP (Java), 15. Überladene Methoden 1/22 Objektorientierte Programmierung Kapitel 15: Überladene Methoden Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

C++ - Eine Ubersicht fur Java-Programmierer

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

Mehr

Teil 2: OOP und JAVA (Vorlesung 11)

Teil 2: OOP und JAVA (Vorlesung 11) Teil 2: OOP und JAVA (Vorlesung 11) Modul: Programmierung B-PRG Grundlagen der Programmierung II Prof. Dot.-Ing. Roberto Zicari Professur für Datenbanken und Informationssysteme (FB 12) 28.06.06 1 Teil

Mehr

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

Programmierung mit C Zeiger

Programmierung 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

Mehr

Kurs OPR. Objektorientierte Programmierung

Kurs OPR. Objektorientierte Programmierung Kurs OPR Objektorientierte Programmierung Lektion: 005-Vererbung, Polymorphismus Zürcher Hochschule für Angewandte Wissenschaften Mitglied der Fachhochschule Zürich Version 1.4 Inhaltsverzeichnis 1 Vererbung

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive

Mehr

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

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

Mehr

C++ - Einführung in die Programmiersprache Objektorientierte Programmierung

C++ - Einführung in die Programmiersprache Objektorientierte Programmierung C++ - Einführung in die Programmiersprache Objektorientierte Programmierung hat Kanten hat eine Farbe hat eine Kantenfarbe Rechteck zeichnen Rechteck einfärben Rechteck drehen Modulare Programmierung Projekt

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

3. Konzepte der objektorientierten Programmierung

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

Mehr