
(Lizenz)
10.6.1 Haustierpolymorphismus

Klasse Haustier
- abstrakte Klasse
- Attribute
- privat: name
- privat: steuerpflichtig
- privat: jahreskostenTierarzt
- Methoden
- Lese und Schreibmethode für Namen
- Lesemethode für Steuerpflicht
- Konstruktor der Namen, Steuerpflicht und Jahreskosten Tierarzt erfasst
- Methode beschreibung() Typ String. Gibt Text mit Namen und eventueller Steuerpflicht aus
Klasse Hund
- abgeleitet aus Haustier
- Hunde sind steuerpflichtig
- privates Attribut: rasse
- Methoden
- Konstruktor der Namen, Jahreskosten Tierarzt und Rasse erfasst
- Lesemethode für Rasse
- Überschriebene Methode beschreibung() die zusätzlich hundespezifische Daten ausgibt
Klasse Katze
- abgeleitet aus Haustier
- Katzen sind nicht steuerpflichtig
- privates Attribut: lieblingsVogel (Referenz auf Vogel)
- Methoden
- Konstruktor der Namen des Katze, Jahreskosten Tierarzt und die Referenz des Lieblingsvogels erfasst
- vogel() Ausgabe ist der Name des Vogels als Zeichenkette
- Überschriebene Methode beschreibung() die zusätzliche katzenspezifische Daten ausgibt
- setzen des Lieblingsvogelattribut
Klasse Vogel
- abgeleitet aus Haustier
- Vögel sind nicht steuerpflichtig
- privates Attribut: singvogel (boolscher Wert)
- Methoden
- Konstruktor der Namen des Vogels, JahresKosten Tierarzt und Singvogeleigenschaft erfasst
- Lesemethode für Singvogeleigenschaft
- Überschriebene Methode beschreibung() die zusätzliche vogelspezifische Eigenschaften ausgibt
Klasse TierTest
Schreiben Sie ein Hauptprogramm das folgende Aufgaben ausführt:
- Verwaltung von mindestens 2 Haustieren pro Tierart einem gemeinsamen statischen Feld vom Typ Haustier
- Methoden
- populate(): Anlegen von mindestens 2 Tieren pro Tierart im statischen Haustierfeld
- neuerLieblingsvogel(): Benutzen Sie einen zweiten Vogel, der aus dem Haustierfeld geholt und weisen Sie ihn einer Katze aus dem Haustierfeld zu
- prüfen Sie vor den Zuweisungen, dass Sie eine Katze, beziehungsweise einen Vogel aus dem Feld ausgelesen haben
- iterate(): Itererieren über das Feld und folgende Information ausdrucken
- Typ des Tieres
- Inhalt von beschreibung()
- Summerien Sie die Tierarztkosten auf und geben Sie sie am Ende aus.
- Benutzen Sie den unten angebenen Rumpf für Ihre Implementierung
package block10.TierVererbung;public class TierTest {private static Haustier hausTiere[];public static void main(String[] args) {populate();neuerLieblingsvogel();iterate();}public static void populate() {hausTiere = new Haustier[6];/* Implementierung */}public static void neuerLieblingsvogel() {/* Implementierung */}public static void iterate() {/* Implementierung */
}}
Optional
Versuch der Zuweisung eines inkompatiblen Instanz als Lieblingvogel zu einer Katze. Die Routine soll durch casten übersetzen. Zur Laufzeit soll die Zuweisungweisungsmethode der Katze den Fehlversuch auf der Konsole dokumentieren
Tipp:
Die Methode .getClass() der Klasse Object liefert eine Referenz auf die Beschreibung der Klasse. Man kann diese Referenz direkt ausdrucken. Es wird der Name der Klasse inklusive eventueller Paketzugehörigkeit ausgedruckt.
Will man nur den Klassennamen ausdrucken muss man von einer Instanz vom Typ Class die Methode .getSimpleName()aufrufen.
