Erstelle eine Hundezuchtstation.
Der Hundezucht unterliegt folgende (natürlicherweise haltlose) wissenschaftliche Annahme:
Wenn ein Hundevater ein reinrassiger Pudel ist und die Mutter eine reinrassige Schäferhündin,
werden die Kinder jeweils 50-50 Hunde, also 50% Pudel und 50% Schäferhund.
Nun soll es den Kunden des Züchters möglich sein, Hunde mit bestimmter Aufteilung zu bestellen, also:
(1) Kunde Heinz möchte einen reinrassigen Pudel.
(2) Kunde Karl möchte einen Hund, der zu 50% Schäferhund, 25% Pudel und 25% Golden Retriever ist.
(3) Kunde Franz will einen Hund, der zu einem Drittel Pudel, einem Drittel Golden Retriever und einem Drittel Dogge ist.
Das Interface Hund sieht wie folgt aus:
public interface Hund {
public Hund(Hund mutter, Hund vater); // Eigentlich darf man in Interfaces keine Konstruktoren deklarieren, aber den soll es geben.
public string getRasseAsString();
}
Dabei soll die Methode getRasseAsString() eine Auflistung der prozentualen Anteile der Rassen im Stammbaum des Hundes ausgeben:
100% PUDEL
oder:
50% LABRADOR
50% PUDEL
oder:
25% PUDEL
25% SCHÄFERHUND
50% DACKEL
Erweiterung
Erweitere Dein Programm derart, dass Du mit Hilfe des AbstractFactory Patterns spezielle Hundezuechter für reinrassige Hunde anbietest und aber auch für entsprechende Mischlingshunde.
public class Pudel extends Hund { ... }
public interface PudelZucht {
public Pudel bestellePudel();
}
Analog für die folgenden Rassen:
- Pudel
- Schäferhund
- Dackel
- Labrador
- Golden Retriever
- Dogge
Hier ist meine Lösung: https://www.youtube.com/watch?v=WZkrPABFQKk