Auftrag

Die Firma "SuperSoft" hat in einer Studie gelesen, dass die meisten Kinder heute mehr Zeit vor dem Computer als im Freien verbringen und dementsprechend nur noch wenig Ahnung von der Tierwelt haben. Sie beschließt deshalb einen Tiersimulator zu entwickeln, durch den die Kids wenigstens virtuell ein paar Tiere kennen lernen sollen. (Abgesehen von dem erzieherischen Nutzen lässt sich mit so einer Software bestimmt eine Menge Geld verdienen :-) )

Damit die Kinder wenigstens die wichtigsten Bauernhoftiere kennen, soll es ein Huhn, ein Schaf, eine Kuh und eine Sau geben.

Aufgabe - Unsere kleine Farm

Implementiere die Klassen Henne, Schaf, Kuh und Sau. Jedes Tier soll wenigstens eine typische Fähigkeit besitzen. Die Aktionen sollen durch entsprechende Ausgaben auf dem Bildschirm simuliert werden.

Aufgabe - UML für die EWS

Dank der rasanten Fortschritte in der Gentechnik, ist es gelungen die eierlegende Wollmilchsau zu züchten. Auch dieses Tier muss natürlich in das System integriert werden. Erstelle ein UML-Diagramm wie es für die Modellierung der eierlegenden Wollmilchsau wünschenswert wäre. Wo liegt die Problematik?

Delegate-Pattern

Bei der Delegation verwendet eine Klasse die Dienste von Objekten, von denen sie nicht abgeleitet ist, obwohl diese Dienste eigentlich inhaltlich zur Klasse gehören und dort vermutet werden. Die explizite Übertragung der Aufgaben per Delegate macht den Code verständlicher. Sinn macht dies zum Beispiel, wenn identische Funktionalität in verschiedenen Klassen benötigt wird, die nicht in einer gemeinsamen Vererbungslinie stehen. Nach außen wirkt es als ob die Klasse die Funktionalität selbst bereit stellen würde. (Geändert nach http://www.torsten-horn.de/techdocs/sw-patterns.htm)

Dadurch lässt sich z.B. Mehrfachvererbung indirekt umsetzen. Das Objekt, das mehrere Oberklassen besitzen müsste, delegiert dann die Aufgaben an Objekte der Obertypen. Außerdem kann man (und muss) die zur Verfügung gestellten ("geerbten") Methoden explizit auswählen.

Wichtig: Die Obertypen sind zwar semantisch Obertypen, aber nicht syntaktisch!

UML-Diagramm

Aufgabe - Delegierende Wollmilchsau

Erstelle das UML-Diagramm und implementiere die eierlegende Wollmilchsau.

Aufgabe - Probleme und Nachteile

Welche Probleme sind durch die "Vererbung per Hand" denkbar? Wie lassen sich diese lösen? (Tipps: Kann ein Schweinebauer eine eierlegende Wollmilchsau kaufen? Welches Entwurfsprinzip kann hier nützlich sein?)