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

Ähnliche Dokumente
Vererbung und Polymorphie

Beziehungen zwischen Objekten

Konstruktor/Destruktor

C++ - Objektorientierte Programmierung Vererbung

Objektorientierte Programmierung OOP

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Objektorientierte Programmierung OOP

Einstieg in die Informatik mit Java

Angewandte Mathematik und Programmierung

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

Vererbung, Polymorphie

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

Einstieg in die Informatik mit Java

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

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

Java für Bauingenieure

Programmierung und Angewandte Mathematik

11 Vererbung und Klassenhierarchie

Java Vererbung. Inhalt

Vorlesung Datenstrukturen

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

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

Klassenbeziehungen & Vererbung

Einführung in das Objektorientierte Programmieren mit C++

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck

Einführung in die Programmierung mit C++

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Prinzipien der objektorientierten Programmierung (OOP)

Einführung in die STL

Programmieren in Java

Java, OO und UML Fortsetzung

Objektorientiertes Programmieren mit C++ für Fortgeschrittene

Objektorientierte Programmierung

Objektorientierte Programmierung Studiengang Medieninformatik

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Begriffe 1 (Wiederholung)

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

Einführung in C ++ und die Objektorientierte Programierung

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

Vorkurs Informatik: Erste Schritte der Programmierung mit C++

Informationsverarbeitung im Bauwesen

11.3 Virtuelle Methoden

Skriptum Bauinformatik SS 2013 (Vorlesung III)

7. Übung Informatik II - Objektorientierte Programmierung

Vererbung. Oberklassen und Unterklassen

Javakurs für Anfänger

3 Objektorientierte Konzepte in Java

Objektorientierte Programmierung (OOP)

Programmieren - Vererbung & Polymorphie

Vererbung und Polymorphie

Einführung in die Programmiersprache Java II

3 Objektorientierte Konzepte in Java

9. Zurück zur OOP: Vererbung und Polymorphismus

Objektorientierte Programmierung und Klassen

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

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

Java: Vererbung. Teil 3: super()

Programmierkurs Java

Teil 2: OOP und JAVA (Vorlesung 11)

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

Beispiel: (Vererbung) Vererbung. Begriffsklärung: (Vererbung) Feststellungen: Vererben von Attributen: Hinzufügen von Attributen:

Programmierkurs C++ Abstrakte Klassen und Methoden

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

Kapitel 8 Vererbung. Korbinian Molitorisz. IPD Tichy Lehrstuhl für Programmiersysteme

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

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

Statische Methoden, Vererbung, Benutzereingabe

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

Programmieren in Java

Einführung in C# Teil 3. Matthias Nübling

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

6. Globalübung (zu Übungsblatt 8)

Arten von Klassen-Beziehungen

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3

Exceptions und Vererbung

Einstieg in die Informatik mit Java

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

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

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Algorithmen und Programmierung III WS 05/06

7 Vererbung. Modul Programmieren mit C++ Kapitel Vererbung

Objekte wie Hund und Katz

Programmieren in Java

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

Überblick. Überblick zum weiteren Inhalt

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

Einstieg in die Informatik mit Java

Vererbung & Schnittstellen in C#

3. Konzepte der objektorientierten Programmierung

Objektorientierte Programmierung mit C++ SS 2007

"Roman Jachs" PR Überblick C++ Roman Jachs 5 AHD 1998/99. Überblick C++

Javakurs für Anfänger

Informatik 1 MaVt FS Übung 10

Modellierung und Programmierung 1

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

01. Grundprinzipien der Vererbung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Transkript:

1/23 Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15

2/23 Outline 1 2 Formen der C++ Syntax

3/23 Inhaltsverzeichnis 1 2 Formen der C++ Syntax

4/23 und Polymorphie sind fundamentale Konzepte der Objektorientierten Programmierung menschliche Intelligenz findet, erkennt und erzeugt Beziehungen zwischen Begriffen Mensch Hund Säugetier Schäferhund diesen Abstraktionsvorgang bildet C ++ über ab

5/23 Inhaltsverzeichnis 1 2 Formen der C++ Syntax

6/23 Was ist? bildet in der OOP eine ist-ein-beziehung ab Der Mensch ist ein Säugetier Systematische Spezialisierung von oben nach unten Die Unterklasse erbt damit alle Merkmale der Oberklasse Terminologie Oberklasse Basisklasse, Elternklasse, Superklasse Unterklasse Kindklasse, Subklasse Ableitung, Spezialisierung

7/23 Was wird vererbt und was nicht? Unterklassen erben alle zugreifbaren Member der Basisklasse: Konstruktor und Destruktor Attribute / Klassenvariablen Methoden und Operatoren Was wird nicht vererbt? friend Funktionen Member die als private deklariert sind

8/23 Beispiel Ohne Säugetier + string lunge; + atmen(); + bewegen(); Mensch + string lunge; + atmen(); + bewegen(); + sprechen(); Hund + string lunge; + atmen(); + bewegen(); + bellen(); Schäferhund + string lunge; + atmen(); + bewegen(); + bellen(); + schwanzwedeln();

8/23 Beispiel Ohne Säugetier + string lunge; + atmen(); + bewegen(); Mensch + string lunge; + atmen(); + bewegen(); + sprechen(); Säugetier + string lunge; + atmen(); + bewegen(); Hund + string lunge; + atmen(); + bewegen(); + bellen(); Schäferhund + string lunge; + atmen(); + bewegen(); + bellen(); + schwanzwedeln(); Mensch + sprechen(); Hund + bellen(); Schäferhund + schwanzwedeln();

9/23 Vorteile von Klassen sind besser wiederverwendbar bessere Wartbarkeit weniger Code dadurch weniger Bugs

10/23 Einfache A B

11/23 Mehrfach A B C nur in wenigen Sprachen möglich: C++, Perl, Python sollte vermieden werden

12/23 Hierarchische A B C D

13/23 MultiLevel A B C

14/23 Hybride A B C D

15/23 Public C ++ Syntax class UnterKlasse : public Oberklasse { /* */ Oberklasse public protected private Unterklasse public protected private

16/23 Protected C ++ Syntax class UnterKlasse : protected Oberklasse { /* */ Oberklasse public protected private Unterklasse protected protected private

17/23 Private C ++ Syntax class UnterKlasse : private OberKlasse { /* */ class UnterKlasse : OberKlasse { /* */ Oberklasse public protected private Unterklasse private private private

18/23 Mehrfachvererbung C ++ Syntax class UnterKlasse : public OberKlasse, public OberKlasse2 { /* */

Zusammenfassung der Zugriffsschlüsselwörter private Nur für Attribute/Methoden die innerhalb (intern) der Klassen verwendet werden. public Stellen Schnittstellen nach außen (Main) dar. protected Dort zu benutzen, wo eine Subklasse (abgeleitete Klasse) die Methoden/Attributen nochmals benötigt. Tabelle: Zugriffserlaubnis der einzelnen Typen¹ Zugriffstyp Eigene Klasse Abgeleitete Klasse Fremde Klasse private ja nein nein public ja ja ja protected ja ja nein 19/23 ¹Aus C++-Programmierung, Andre Willms, Addision-Wesley, S.180

20/23 Aufruf des Konstruktors der Oberklasse Example (Klassen) class BasisKlasse { BasisKlasse() { cout << "Eltern" << endl; class UnterKlasse : public BasisKlasse { UnterKlasse(int x) { cout << "Kind" << endl;

20/23 Aufruf des Konstruktors der Oberklasse Example (Klassen) class BasisKlasse { BasisKlasse() { cout << "Eltern" << endl; Example (Main) int main(void) { UnterKlasse kind(23); class UnterKlasse : public BasisKlasse { UnterKlasse(int x) { cout << "Kind" << endl;

20/23 Aufruf des Konstruktors der Oberklasse Example (Klassen) class BasisKlasse { BasisKlasse() { cout << "Eltern" << endl; Ausgabe $./programm Eltern class UnterKlasse Kind : public BasisKlasse { UnterKlasse(int x) { cout << "Kind" << endl; Example (Main) int main(void) { UnterKlasse kind(23);

20/23 Aufruf des Konstruktors der Oberklasse Example (Klassen) class BasisKlasse { BasisKlasse() { Wird automatisch aufgerufen, wenn Konstruktor keine Argumente erwartet cout << "Eltern" << endl; Example (Main) int main(void) { UnterKlasse kind(23); class UnterKlasse : public BasisKlasse { UnterKlasse(int x) { cout << "Kind" << endl;

21/23 Aufruf des Konstruktors der Oberklasse mit Argumente Example (Klassen) class BasisKlasse { BasisKlasse(int x) { cout << "Eltern" << endl; class UnterKlasse : public BasisKlasse { UnterKlasse(int x) : BasisKlasse(x) { cout << "Kind" << endl;

21/23 Aufruf des Konstruktors der Oberklasse mit Argumente Example (Klassen) class BasisKlasse { BasisKlasse(int x) { cout << "Eltern" << endl; Example (Main) int main(void) { UnterKlasse kind(23); class UnterKlasse : public BasisKlasse { UnterKlasse(int x) : BasisKlasse(x) { cout << "Kind" << endl;

21/23 Aufruf des Konstruktors der Oberklasse mit Argumente Example (Klassen) class BasisKlasse { BasisKlasse(int x) { Konstruktor der Basisklasse mit Argumente cout << "Eltern" << endl; Example (Main) int main(void) { UnterKlasse kind(23); class UnterKlasse : public BasisKlasse { UnterKlasse(int x) : BasisKlasse(x) { cout << "Kind" << endl;

21/23 Aufruf des Konstruktors der Oberklasse mit Argumente Example (Klassen) class BasisKlasse { BasisKlasse(int x) { cout << "Eltern" << endl; Example (Main) int main(void) { UnterKlasse kind(23); class UnterKlasse : public BasisKlasse { UnterKlasse(int x) : BasisKlasse(x) { cout << "Kind" << endl; Aufruf des Konstruktors der Basisklasse über die Initialization-List (siehe Folien zu Konstruktor/Destruktor)

22/23 Kompatibilität zur Basisklasse Example (Klassen) class Person { string Name; class Student : public Person { int MatrikelNr;

22/23 Kompatibilität zur Basisklasse Example (Klassen) class Person { string Name; class Student : public Person { int MatrikelNr; Example (Main) int main(void) { Person person; Student student; student.name = "Heribert"; student.matrikel = 2342; person = student; student = person;

22/23 Kompatibilität zur Basisklasse Example (Klassen) class Person { string Name; class Student : public Person { int MatrikelNr; Example (Main) int main(void) { Person person; Student student; student.name = "Heribert"; student.matrikel = 2342; person = student; student = person; Kein Problem: Attribute und Methoden von Student werden abgeschnitten (public wichtig)

22/23 Kompatibilität zur Basisklasse Example (Klassen) class Person { string Name; class Student : public Person { int MatrikelNr; Example (Main) int main(void) { Person person; Student student; student.name = "Heribert"; student.matrikel = 2342; person = student; student = person; Compilefehler!

23/23 Zusammenfassung Eine Klasse (Oberklasse) kann folgende Elemente an eine andere Klasse (Unterklassen) vererben: Konstruktor und Destruktor Attribute / Klassenvariablen Methoden und Operatoren Es gibt einfache, mehrfache, hierarchische und hybride Mit den access specifiern public, protected und private regelt man den Zugriffsschutz der vererbten Elemente Der Konstruktor der Oberklasse wird automatisch aufgerufen wenn dieser keine Argumente erwartet ansonsten muss dieser explizit über die Initialization List aufgerufen werden