Foto von Juli
Kosolapova auf Unsplash
Rudi ist hauptamtlicher Hundesitter, das heißt er führt beruflich Hunde aus. Das Bild zeigt ihn mit
Joe, ein Jack Russel Terrier. Heute ist Diddi, ein kleiner Dackel zu versorgen.
Das folgende Klassendiagramm beschreibt die Situation.
Setze das Klassendiagramm in der Online-IDE (Datei: 2-polymorphie) um.
Hinweise:
nimmAnDieLeine(Dackel d)
der Klasse Hundesitter wird eine Referenz auf eine
Dackelobjekt erzeugt.Schreibe Testanweisungen, so dass Rudi Diddi ausführt und ihn bellen und fressen lässt.
Rudi hat natürlich nicht nur Dackel auszuführen. Er kümmert sich zum Beispiel um
Bello, den vegetarischen, meist schlafenden Schäferhund von Frau Schnorr, der aber recht laut bellt. Als
Wachhund
kann er auch mal etwas anhänglich werden.
Image by Viveka
Rosin from Pixabay
Implementiere die Klasse Schäferhund geeignet und erzeuge ein Objekt für Bello.
Will Rudi nun auch Bello ausführen, gibt es ein Problem, weil im Klassendiagramm des Hundesitters nur Referenzen zu Objekten der Klasse Dackel vorgesehen sind. Es wäre also eine Veränderung der Implementierung der Klasse Hundesitter notwendig.
Eine Lösung wäre, eine weiteres Referenzattribut für Objekte der Klasse Schäferhund hinzuzufügen.
Das wäre aber nur eine kurzzeitige Lösung bis eine neue Hunderasse zu versorgen ist.
Ein Ausweg bietet die Vererbung:
Wir bilden eine neue Klasse Hund, die Attribute und Methoden aller Hunde erhält, davon erben die
Klassen Dackel und Schäferhund. Die erbenden Klassen überschreiben gegebenenfalls Methoden (z. B.
bellen Hunde unterschiedlich) und erweitern die Klasse Hund um Methoden (ein Dackel kann z. B. Männchen
machen, während ein Schäferhund auch fassen kann).
Ergänze die bestehende Implementierung um die Klasse Hund und lasse erstelle die
Vererbungshierarchie.
Implementiere die Klasse Schäferhund geeignet und erzeuge ein Objekt für Bello.
Will Rudi nun auch Bello ausführen, gibt es ein Problem, weil im Klassendiagramm des Hundesitters nur Referenzen zu Objekten der Klasse Dackel vorgesehen sind. Es wäre also eine Veränderung der Implementierung der Klasse Hundesitter notwendig.
Eine Lösung wäre, eine weiteres Referenzattribut für Objekte der Klasse Schäferhund hinzuzufügen.
Das wäre aber nur eine kurzzeitige Lösung bis eine neue Hunderasse zu versorgen ist.
Ein Ausweg bietet die Vererbung:
Wir bilden eine neue Klasse Hund, die Attribute und Methoden aller Hunde erhält, davon erben die
Klassen Dackel und Schäferhund. Die erbenden Klassen überschreiben gegebenenfalls Methoden (z. B.
bellen Hunde unterschiedlich) und erweitern die Klasse Hund um Methoden (ein Dackel kann z. B. Männchen
machen, während ein Schäferhund auch fassen kann).
Ergänze die bestehende Implementierung um die Klasse Hund und lasse erstelle die
Vererbungshierarchie.