27.7 Die
Klassen KQuadrat und Ballon |
|
OOD |
Beim Einschätzungstest
wird zunächst ein Quadrat mit zufälliger Seitenlänge auf dem Bildschirm
dargestellt. Nach wenigen Sekunden verschwindet es und ein Ballon mit
zunehmenden Radius erscheint. Wir hatten uns schon bei der ersten
Modellierung dafür entschieden,
dass wir Ballon
als eine von Kreis
abgeleitete Klasse modellieren wollen. Der Bediener des Programms (Akteur)
versucht das Wachsen des Ballons dann zu beenden, wenn der Durchmesser
gleich der Seitenlänge des zuvor gezeigten Quadrats ist. Danach
erscheint eine Figur, die aus einem Kreis und einem Quadrat besteht. Kreis
und Quadrat haben die Maße des Ballons und des ursprünglichen Quadrats, so
dass man leicht erkennen kann, wie gut man geschätzt hatte. Klar ist auch,
dass, je nach dem wie der Akteur reagiert hat, einmal das Quadrat, einmal
der Kreis 'oben' liegen muss. Bei dieser Kombination handelt sich also um
eine Figur die manches mit einem Kreis aber auch mit einem Quadrat
gemeinsam hat. Da in Java keine Mehrfachvererbung möglich ist, modellieren
wir eine Klasse, die von Quadrat erbt und einen Kreis aggregiert. Wir
nennen diese Klasse deshalb
KQuadrat. Wir weichen hier von
der ursprünglichen Modellierung ab. Tatsächlich nutzen wir hier einige
Besonderheiten der Sprache Java und insofern gehört das, was wir jetzt tun
schon eher zum Objekt orientierten Design (OOD). |
Ballon | Die
Klasse Ballon erbt alle Eigenschaften von Kreis, verfügt aber zusätzlich
über die beiden öffentlichen Methoden
start()
und stop(),
die, wie ihre Namen nahe legen, das Wachsen des Ballons auslösen und
beenden können. Zusätzlich brauchen wir eine Methode
wachseRadius(),
die das Wachsen des Radius' organisiert und von
start()
aufgerufen wird. Außer der Methode
start()
in der Klasse Ballon
soll die Methode wachseRadius()
soll sonst niemanden zur Verfügung stehen, nicht einmal einem potenziellen
Erben von Ballon,
weshalb wir sie mit
private
schützen. |
KQuadrat | Die
Methode zeigeDich(Graphics g)
ursprünglich in der abstrakten Klasse
Figur
implementiert, steht auf Grund der Vererbung automatisch allen Erben, also
den Instanzen der Klassen Kreis,
Quadrat,
Ballon
und auch KQuadrat
zur Verfügung, wo sie nichts anderes tut, als die Farbe zu setzen und die
jeweilige Methode
zeichne(Graphics g) aufzurufen.
Das letztere wollen wir aber in der Klasse
KQuadrat
nicht haben, vielmehr soll
zeigeDich(Graphics g) hier die
Methoden zeichne(Graphics g)
der Kreis-
und eine Quadrat-Instanzen
aufrufen, weshalb wir die Methode
zeigeDich(Graphics g)
mit einer neuen Funktionalität versehen wollen. Deshalb müssen wir die
Methode zeigeDich(Graphics g)überschreiben.
Wir haben damit ein weiteres Beispiel dafür, wie Polymorphie das
Modellieren flexibel gestaltet. |
Neue Klassen-hierarchie | Das unten
stehende Klassendiagramm zeigt die ergänzte Kassenbeziehung. Das Paket ist
damit für unser Projekt komplett. In den nächsten Unterkapiteln werden wir die beiden neuen Klassen implementieren. |
![]() |
|
zu | 27.7.1 Implementierung von KQuadrat |
zur Startseite | www.pohlig.de (C) MPohlig 2004 |