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