23 Der Zwerg nimmt Gestalt an.

Die Klasse ZWERG ist als Wesen der Konsole schon recht eigen, verfügt er doch über einen Namen, eine Alter und eine Größe. Nun soll er noch ein Aussehen, eine Gestalt bekommen.

Abb. 1: Das vereinfachte Aussehen des Zwergs.

Wie in Abbildung 1 zu erkennen ist, besteht das Bild des ZWERGs aus einem Körper, einem Kopf und einem Hut. Man kann das modellieren, indem man die Klasse ZWERG aus den Klassen HUT, KOPF und KOERPER zusammensetzt. Das nennt man Komposition: Die Klasse ZWERG hat / enthält ein Objekt der Klasse HUT, ein Objekt der Klasse KOPF und ein Objekt der Klasse KOERPER.

Abb. 2.: Detailliertes Klassendiagramm der Klasse ZWERG

Zur Implementierung dieser „Komposition“ werden drei weitere Attribute der Klasse ZWERG angelegt (self.hut, self.kopf, self.koerper) und mit geeigneten Objekten belegt.

Aufgabe

  1. Welche Eigenschaften müssten die Klassen HUT, KOPF und KOERPER haben, damit sie als Gestalt angezeigt werden können?
  2. Welche Methode müssten die Klassen HUT, KOPF und KOERPER haben, damit sie angezeigt werden können? Wie könnte man diese Methode mit den Mitteln der Turtle implementieren?

22 Aufstrebender Zwerg

Zwerge verändern sich. Sie werden nicht nur älter, sondern sie nehmen auch an Einsicht und Körpergröße zu. Lassen wir mal die Einsicht beiseite.

Aufgabe

Der Zwerg soll seine Größe verändern können.

  1. Implementiere eine Methode wachse(), bei der die Größe bei jedem Aufruf um die Eigenschaft self.wachstum zunimmt.
  2. Der Zwerg soll mit jedem Jahr, das er altert, auch um self.wachstum größer werden.
  3. Zwerge bleiben aber in der Regel recht klein. Daher soll die Methode wachse() unterscheiden: [1] Bei einem Alter bis 40 soll die Größe um self.wachstum zunehmen. [2] Bei einem Alter zwischen 40 und 60 soll er gleich groß bleiben. [3] Ab 60 Jahren soll der Zwerg um die Hälfte von self.wachstum kleiner werden.

Entwicklertipps

Aufgabe 1: Die Methode wachse() funktioniert sehr ähnlich wie die Methode altere(). Aufgabe 2: Es ist besser, die Fähigkeiten der Methoden altere() und wachse() nicht grundsätzlich zu ändern. Aber die eine Methode kann intern die andere aufrufen. Aufgabe 3: Die Methode wachse() braucht eine if-Abfrage, die drei Fälle unterscheidet.