Index

5. Problemlösetechniken

Objektorientierte Programmierung (6)


Projekt: Tauglichkeitstester

4. Vererbung und Polymorphie - Die Klasse Figur

Diagramm Ampel
Teil-Diagramm Ampel
Ampel Ampel

Als nächstes soll eine für den Reaktionstest einsetzbare Ampel gebaut werden.

Aus diesen Informationen kann man die Klassen Quadrat und Kreis modellieren.

Quadrat
- Farbe
- xMitte
- yMitte
- Seite
+ setFarbe()
+ setMittelpunkt()
+ getSeite()
+ setSeite()
+ zeigeDich()
 
Kreis
- Farbe
- xMitte
- yMitte
- Radius
+ setFarbe()
+ setMittelpunkt()
+ getRadius()
+ setRadius()
+ zeigeDich()

Die Klassen Quadrat und Kreis haben gemeinsame Attribute und Methoden (farbig hinterlegt). So haben beide Klassen z.B. die Mittelpunktskoordinaten und Zeichenfarbe als Attribute und z.B. setFarbe als Methode gemeinsam. Diesen Gemeinsamkeiten kann bei der Implementierung Rechnung getragen werden.

Was beiden gemeinsam ist, wird in einer Verallgemeinerung der beiden Klassen als Oberklasse Figur definiert. Kreis und Quadrat sind dann Nachkommen (Unterklassen) von Figur. Sie erben alle Attribute und Methoden der Oberklasse und unterscheiden sich lediglich in den Attributen Radius / Seite sowie darin, wie sie gezeichnet werden. Man sagt: Die Klassen Quadrat und Kreis entstehen durch Vererbung aus der Klasse Figur.

Von der Oberklasse Figur werden keine Objekte erzeugt, man spricht von einer abstrakten Klasse.
Die Attribute der Klasse Figur werden als protected (#) angegeben. Der Zugriff auf die Attribute ist somit in den Unter-klassen gewährleistet.

Zudem wollen wir die Modellierung etwas ändern. Die Methode zeigeDich setzt die Zeichenfarbe und ruft die private Methode zeichnen auf. In dieser wird der eigentliche Zeichenvorgang durchgeführt.
Die Methode zeigeDich kann also bereits in der Oberklasse Figur implementiert werden. Die Methode zeichnen unterscheidet sich bei Quadrat und Kreis in der Ausführung. Sie wird daher in der Oberklasse abstrakt deklariert, d.h. sie wird dort nicht implementiert. Sie wird aber bei den Nachkommen überschrieben, da sie dort implementiert werden kann.

Darstellung in UML:
Vererbung

Die Klassen Quadrat bzw. Kreis reagieren auf die Methode zeichnen verschieden. Dies wird als Polymorphie (Vielgestaltigkeit) bezeichnet.
In diesem Fall spricht man von einer dynamischen Polymorphie. Voraussetzung für die dynamische Polymorphie ist die sogenannte späte Bindung einer Methode. Dabei wird der genaue Speicherort der Methode erst dann ermittelt, wenn der Aufruf stattfindet.

Übung

Implementieren Sie die Klassen Figur, Quadrat, Kreis und schreiben Sie ein Programm Figur (GUI) zum Testen der Klassen.

Die Klasse Ballon

Bei unserem Tauglichkeitstester wird auch ein spezieller Kreis, der sich vergrößern kann, benötigt.

Übung

Ordnen Sie die Klasse Ballon in die Klassenhierarchie der Figuren ein. Implementieren Sie die Klasse Ballon.
Schreiben Sie ein Programm zum Testen eines Objektes der Klasse Ballon.

[Index] [Zurück/TT 3] [Fortsetzung/TT 5]


Autor: Jürgen Dehmer, A. Sessler, G. Liebrich
Letzte Änderung: