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

Ähnliche Dokumente
9. Vererbung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Java Einführung Vererbung und Polymorphie. Kapitel 13

Java Vererbung. Inhalt

Grundlagen der Programmierung Prof. H. Mössenböck. 11. Objektorientierung

Objektorientierte Programmierung Studiengang Medieninformatik

4. Vererbung Die Klasse Object. Die Klasse Object

Liste Programmieren Java Überblick

Einstieg in die Informatik mit Java

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

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

6. Globalübung (zu Übungsblatt 8)

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor:

1 Abstrakte Klassen, finale Klassen und Interfaces

Einstieg in die Informatik mit Java

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

Javakurs für Anfänger

Einführung in die Programmierung für NF. Vererbung

Programmieren 2 Java Überblick

Überschreiben von Methoden

Objektorientierung (OO)

14. Java Objektorientierung

Begriffe 1 (Wiederholung)

Tafelübung 07 Algorithmen und Datenstrukturen

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

14 Abstrakte Klassen, finale Klassen, Interfaces

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

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

Javakurs für Anfänger

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

12 Abstrakte Klassen, finale Klassen und Interfaces

Vererbung, Polymorphie

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

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

Programmierkurs Java

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

Vererbung. Oberklassen und Unterklassen

Vererbung und Polymorphie

Vererbung und Polymorphie

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

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots IT I - VO 5 1

Statische Methoden, Vererbung, Benutzereingabe

Informatik II Übung 06. Benjamin Hepp 5 April 2017

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Vererbung, Polymorphismus

Kapitel 6. Vererbung

Einführung in die Programmierung

Statische Methoden, Vererbung, Benutzereingabe

Arten von Klassen-Beziehungen

Listing 1: Cowboy. Listing 2: Woody

Vererbung in der objektorientieren Programmierung

Einstieg in die Informatik mit Java

Tücken der dynamischen Bindung

Kapitel 6. Vererbung

SWE1 / Übung 9 ( )

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Kapitel 6. Vererbung

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Algorithmen und Datenstrukturen

Vererbung. Martin Wirsing. Ziele. Vererbung

Exceptions und Vererbung

Vorlesung Datenstrukturen

C++ - Objektorientierte Programmierung Vererbung

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs für Anfänger

Java I Vorlesung Vererbung und Sichtbarkeit

Fragen zur OOP in Java

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Objektorientierte Programmierung Studiengang Medieninformatik

II.4.1 Unterklassen und Vererbung - 1 -

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

13. Tutorium zu Programmieren

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

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

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern

2. Vererbung und Kapselung

Wiederholung. Jedes Objekt hat seinen eigenen Zustand/seine eigenen Variablen (gilt auch für mehrere Objekte, die zur gleichen Klasse gehören).

III. Objektorientierte Programmierung. Aufruf einer Methode. Definition einer Methode. Bezug zur aufrufenden Instanz. Instanzen einer Klasse

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

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

Tutorial zu Einführung in die Informatik für LogWi- Ings und WiMas Wintersemester 2015/16. 1 Zauberer und Zwerge, Aufgabenteil 1

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

Objektorientierte Programmierung. Kapitel 14: Interfaces

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

Einführung in das Programmieren Probeklausur Lösungen

Kapitel 4: Klassen und Unterklassen

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

Vererbung & Schnittstellen in C#

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

Programmieren 1 09 Vererbung und Polymorphie

Transkript:

2.13 Vererbung Klassen modellieren Objekte der realen Welt. Diese sind oft hierarchisch gegliedert. Beispiel: Ein Verlag bietet Bücher und CDs an. Beide Medien sind Artikel des Verlages. Book author: String year: int Article code: int price: int label: String getarticleline() CD artist: String song: String[] Die Klasse Article enthält die gemeinsamen Felder code, price, label sowie einen Konstruktor und zwei weitere Methoden. getarticleline() stellt eine Artikelzeile auf code, price, label für die Anzeige im Warenkorb zusammen. zeigt ausführliche Informationen über den Artikel an. Java erlaubt mit dem Vererbungsprinzip die Bildung hierarchischer Klassenstrukturen mit denen Varianten von Objekten gleichbehandelt werden können. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 272

Implementierung von Article, Book und CD in Java class Article { int code, price; String label; Article(int code, String label, int price) {... } void {... } void getarticleline() {... } } class Book extends Article { /* Book ist ein Spezialfall von Article */ String author; int year; void {... } } class CD extends Article { /* CD ist ein Spezialfall von Article */ string artist; String[] song; void {... } } Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 273

Oberklasse und Unterklasse Book author: String year: int Article code: int price: int label: String getarticleline() CD artist: String song: String[] Book (bzw. CD) ist eine Erweiterung von Article. Wir sagen auch: Book (bzw. CD) ist von Article abgeleitet. Book (bzw. CD) erbt alle Felder und Methoden von Article als ob sie in Book (bzw. CD) selbst deklariert worden wären. So hat z.b. jedes Book- Objekt (bzw. CD-Objekt) ein Feld price und eine Methode getarticleline(). Article ist die Oberklasse von Book (bzw. CD), und Book, CD sind Unterklassen von Article. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 274

Hierarchische Gliederung und Überschreiben von Methoden Article code: int price: int label: String getarticleline() Unterklassen können weiter hierarchisch untergliedert werden: class Hardcover extends Book {... } class Softcover extends Book {... } Book author: String year: int Hardcover Softcover CD artist: String song: String[] Ist eine Klasse nicht explizit von einer anderen abgeleitet, so wird sie als Unterklasse einer vordefinierten Klasse Object betrachtet. Unterklassen können Methoden ihrer Oberklasse überschreiben. Z.B. überschreibt die Klasse Book (bzw. CD) die Methode von Article. Im Beispiel gibt es fünf Methoden, die sich alle unterscheiden können. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 275

super-aufrufe Article code: int price: int label: String getarticleline() Mit dem Schlüsselwort super kann man auf die Oberklasse zugreifen. So kann z.b. ein Book-Objekt die - Methode von Article mit super. Book author: String year: int CD artist: String song: String[] aufrufen. Der Konstruktor Article(int code, String label, int price) {} der Oberklasse Article kann z.b. mit super(code,author+title,price); Hardcover Softcover aufgerufen werden. Der Aufruf des Kontruktors der Oberklasse muss die erste Anweisung im Konstruktor der Unterklasse sein. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 276

Warum Vererbung? Jedes Programm, das in der Lage ist, mit Objekten der Oberklasse zu arbeiten, kann automatisch auch mit Objekten der Unterklasse arbeiten. Im Beispiel des Verlagshauses: Gibt es bereits ein Programm, das Artikel in den Warenkorb legen kann, den Warenkorb ausdrucken kann, Artikel im Warenkorb anzeigen kann, etc. so kann dieses Programm automatisch Bücher (CDs) in den Warenkorb legen, den Warenkorb ausdrucken, Bücher (CDs) im Warenkorb anzeigen, etc. Jedes Objekt der Unterklasse ist auch ein Objekt der Oberklasse. Die Umkehrung gilt jedoch nicht. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 277

Kompatibilität zwischen Ober- und Unterklasse Man kann ein Objekt der Unterklasse auch einer Variablen der Oberklasse zuweisen: Article a = new Book(); a zeigt jetzt auf ein Book-Objekt. Da a Variable der Klasse Article ist, können über a nur die Felder der Klasse Article angesprochen werden. Mit if (a instanceof Book)... können wir prüfen, ob a auf ein Book-Objekt zeigt. In diesem Fall können wir den Typ von a nach Book umwandeln: Book b = (Book) a; Zeigt a bei der Umwandlung nicht auf ein Book-Objekt, bricht das Programm mit einem Laufzeitfehler ab. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 278

Dynamische Bindung Article a = new Book(); Frage: Was geschieht bei einem Aufruf a.;? Dynamische Bindung: Eine Nachricht var.m() führt immer zum Aufruf der Methode m(), die zum dynamischen Typ von var gehört. Article a = new Book();... a.; /* von Book */... a = new CD();... a.; /* von CD */ Im Programmfragment links werden zwei unterschiedliche Methoden aufgerufen: Zuerst das der Klasse Book, dann das der Klasse CD. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 279