9. Vererbung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2008. 11.6.2008
Übersicht über den Kurs Einordnung in den gesamten Kurs 1. Einführung 2. Operationen 3. Variablen 4. Kontrollstrukturen 5. Klassen und Objekte 6. Konstruktoren 7. Klassenmethoden 8. Datentypen 9. Vererbung 2 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2008. 11.6.2008
Agenda Vererbung Dynamisches Binden Literatur
Klassifikation Dinge der realen Welt lassen sich oft klassifizieren z.b. Artikel eines Web-Shops Artikel Buch Audio Kamera... HardCover SoftCover ebook CD Cassette Digital Analog Man beachte Ein ebook hat alle Eigenschaften eines Buchs; zusätzlich hat es... Ein Buch hat alle Eigenschaften eines Artikels; zusätzlich hat es... Vererbung CD und Cassette lassen sich gleichermaßen als Audio behandeln Buch, Audio und Kamera lassen sich gleichermaßen als Artikel behandeln 4 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2008. 11.6.2008
Vererbung class Article { int code; int price; boolean available() {... void {... Article(int c, int p) {... Oberklasse (Basisklasse) Schlüsselwort extends zeigt Vererbung an Article code price available() Article(c, p) class Book extends Article { String author; String title; void {... Book(int c, int p, String a, String t) {... Unterklasse erbt: code, price, available, print ergänzt: author, title, Konstruktor überschreibt: print Book author title Book(c, p, a, t) Wenn keine Oberklasse angegeben wird, ist sie Object (implizite Oberklasse aller Java-Klassen) 5 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2008. 11.6.2008
Klassenhierarchien Article code price available() Jedes Buch ist ein Artikel Aber: nicht jeder Artikel ist ein Buch Book author title Audio songs Camera supplier... CD tracks Cassette lengh... 6 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2008. 11.6.2008
Kompatibilität zwischen Klassen Unterklassen sind Spezialisierungen ihrer Oberklassen Book-Objekte können Article-Variablen zugewiesen werden Article a = new Book(code, price, author, title); a code price author title nur Article-Felder sind über a zugreifbar a.code a.price if (a instanceof Book) Book b = (Book) a; // Laufzeittyptest // Typumwandlung mit Laufzeittypprüfung (Type Cast) b code price author title alle Book-Felder sind über b zugreifbar b.code b.price b.author b.title 7 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2008. 11.6.2008
Agenda Vererbung Dynamisches Binden Binden Literatur
Überschreiben von Methoden class Article {... void { Out.print(code + " " + price); class Book extends Article {... void { super.; Out.print(" " + author + ": " + title); Article(int c, int p) { code = c; price = p; Book(int c, int p, String a, String t) { super(c, p); author = a; title = t; Benutzung Book book = new Book(code, price, author, title); erzeugt Book-Objekt Book-Konstruktor Article-Konstruktor (code = c; price = p;) author = a; title = t; code price author title 9 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2008. 11.6.2008 book book.; print aus Book print aus Article Out.print(...); code price author: title Ausgabe: code price author: title
Dynamische Bindung Heterogene Datenstruktur Article[ ] a; Article available() Book CD Book CD Camera Book Audio Camera Alle Varianten können als Artikel behandelt werden void printarticles() { for (int i = 0; i < a.length; i++) { if (a[i].available()) { a[i].; ruft geerbtes available() aus Article auf ruft je nach Artikelart das aus Book, CD oder Camera auf Dynamische Bindung obj. ruft die print-methode des Objekts auf, auf das obj gerade zeigt 10 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2008. 11.6.2008
Agenda Vererbung Dynamisches Binden Literatur
Zum Weiterlesen Java Tutorial interaktiv Programmieren lernen mit Java (http://www.gailer-net.de/tutorials/java/) 4. Objektorientierte Programmierung Guido Krüger: Handbuch der Java-Programmierung (kostenloser Download unter http://www.javabuch.de/) 7.5.1 Beziehungen (Generalisierung und Spezialisierung) 7.1.6 Polymorphismus 8.1 Vererbung 12 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2008. 11.6.2008