5.
Vererbung - Turtle 2te Generation 5.1 Was heißt vererben? |
|
In den
letzten Stunden haben wir die Kontrollstrukturen einer Programmiersprache
kennen gelernt. Dabei benutzen wir die fertige Klasse
Turtle
und ihre Methoden. Nebenbei haben wir einen guten Überblick über die
Funktionalität dieser Klasse (die Summe dessen was ein Objekt dieser
Klasse kann) kennen gelernt. Uns ist schon zur Gewohnheit geworden, dass
man, will man mit einer Turtle zeichnen, ein Objekt dieser Klasse
benötigt. Turtle t1;
Steht ein solches Objekt zur Verfügung, können wir auch Methoden für dieses Objekt aufrufen. t1.forward(100.0); |
|
Die Funktionalität einer Turtle ist
natürlich beschränkt. So gibt es keine Methode, die ein Turtle-Objekt
veranlassen könnte, ein Quadrat mit der Kantenlänge 100 zu zeichnen.
t1.zeichneQuadrat(100); würde vom Compiler abgelehnt. Wir müssen uns mit t1.forward(100); oder einer Schleife wie etwa behelfen. Eleganter wäre jedoch die einzeilige Alternative t1.quadrat(100); . Wir müssten also dafür sorgen, dass die Klasse Turtle zusätzlich über die Methode quadrat(double kantenLaenge) verfügt. Nun besitzen wir den Quellkode der Turtle nicht, denn der Programmierer der Klasse Turtle hat uns lediglich das Kompilat zur Verfügung gestellt, weil er gerade nicht will, dass jemand in in dem von ihm erstellten Quellkode 'reinpfuscht'. Wir müssen also eine neue Turtle, wir nennen sie MeineTurtle, programmieren und das können wir tun, ohne dass wir die ursprüngliche Turtle nachprogrammieren. Uns hilft dabei das Konzept der Vererbung. Unsere Klasse MeineTurlte soll alle Eigenschaften der Turtle erben und nur die neuen, zusätzlichen Methoden beinhalten. Wie das geht, wollen wir jetzt lernen. Die UML-Notation von Klassen, wie wir sie in Kapitel '3.2 die Turtle in UML' kennen gelernt haben wird uns dabei beim Verstehen helfen. Abbildung 5.1.1 zeigt noch einmal den allgemeinen Aufbau einer Klasse .
Abb. 5.1.1 UML-Notation einer Klasse
|
|
Vererbung | Abbildung 5.1.2 veranschaulicht eine Vererbung. Der Pfeil, der von der Klasse B zur Klasse A zeigt, soll uns sagen, dass die Klasse B von der Klasse A erbt. |
![]()
Einem Objekt der Klasse B stehen alle Methoden (Einschränkungen lernen wir später kennen) der Klasse A zur Verfügung. Konkret heißt das: Wir deklarieren und erzeugen ein Objekt der Klasse B. B b = new B(); dann können wir z.B. die Methode methodeB1(double x, double y) aufrufen mit: b.methodeB1(10, 12.5); Wir können für das Objekt b aber auch die geerbte Methode methodeA1(double x, double y) mit b.methodeA1(15, 10); aufrufen, obwohl sie, wie die
Abbildung 5.1.2 zeigt nicht in B
implementiert ist. So wie die Methoden von
A
den Objekten von B
zur Verfügung stehen, als wären sie in der Klasse
B
implementiert, so sind auch die Attribute von
A
auch Attribute von B,
ohne dass wir sie in B
implementieren müssten. |
|
zu | 5.2 MeineTurtle erbt von Turtle |
zur Startseite | www.pohlig.de (C) MPohlig 2004 |