Setze das Klassendiagramm der Tiere in Java-Code um und teste deine Klassen mit einem eigenen Hauptprogramm. Neue Dateien legst du in der IDE mit dem „+“ neben „Dateien“ an, zum Beispiel Hund.java.
Tipp: Speichere nach jedem funktionierenden Teil eine Kopie deines Codes, bevor du ihn für den nächsten Teil erweiterst.
Abschlussquiz
Kreuze alle richtigen Antworten an. In manchen Fragen sind mehrere Antworten richtig.
Übersicht: alle Teilaufgaben und Ergebnisse
Hier stehen alle Arbeitsaufträge dieser Aufgabe mit ihren Ergebnissen – gut geeignet für die gemeinsame Besprechung.
a) Klassen programmieren
Wandle das Klassendiagramm in Java-Code um. Lege für Hund, Katze und Delfin je eine eigene Datei an; Tätigkeiten wie bellen() geben nur einen Text mit println aus.
- Richtiges Ergebnis
- Hund, Katze und Delfin erben mit extends Tier die Attribute name und alter sowie zeigeDaten(). Jede Unterklasse deklariert nur ihr eigenes Attribut und ihre eigene Methode; Hund und Katze überschreiben zeigeDaten().
class Tier { int alter; String name; void zeigeDaten() { println("Das Tier " + name + " ist " + alter + " Jahre alt."); } } class Hund extends Tier { String rasse; void bellen() { println(name + " bellt: Wuff!"); } @Override void zeigeDaten() { println("Der Hund " + name + " ist " + alter + " Jahre alt. Rasse: " + rasse); } }
b) Eigenes Testprogramm
Erzeuge in Hauptprogramm.java Objekte von Tier, Hund, Katze und Delfin, gib ihnen Werte und rufe ihre Methoden auf. Baue mindestens einen polymorphen Aufruf ein: eine Variable vom Typ Tier, die auf einen Hund oder eine Katze verweist. Vergleiche die Ausgabe von zeigeDaten() bei Hund und Delfin.
- Richtiges Ergebnis
- Ein Testprogramm erzeugt Objekte aller vier Klassen, weist Werte mit der Punktnotation zu und ruft ihre Methoden auf. Polymorph:
Tier t = new Katze(); t.zeigeDaten();führt zeigeDaten() aus Katze aus.
Beobachtung zu zeigeDaten()
Was beobachtest du bei zeigeDaten()? Kreuze alle zutreffenden Aussagen an.
- Richtiges Ergebnis
- Delfin nutzt die geerbte zeigeDaten() aus Tier, Hund und Katze nutzen ihre eigene.
c) Bonus (freiwillig): eigene Unterklassen
Erstelle eine weitere Unterklasse von Tier und eine Unterklasse von Hund nach deiner Wahl und teste beide im Hauptprogramm.
- Richtiges Ergebnis
- Beispiel:
class Pferd extends Tierundclass Welpe extends Hund. Ein Welpe erbt alles von Hund und damit auch von Tier.
Abschlussquiz – Frage 1
Welche Attribute besitzt ein Hund-Objekt?
- Richtiges Ergebnis
- rasse · name · alter
Abschlussquiz – Frage 2
Was passiert bei d.zeigeDaten();, wenn d auf ein Delfin-Objekt verweist?
- Richtiges Ergebnis
- Es wird zeigeDaten() aus der Klasse Tier ausgeführt.
Abschlussquiz – Frage 3
Welche Anweisungen sind im Hauptprogramm erlaubt?
- Richtiges Ergebnis
Tier t = new Hund();·t.zeigeDaten();nachTier t = new Hund();
Abschlussquiz – Frage 4
Warum muss Hund die Attribute name und alter nicht selbst deklarieren?
- Richtiges Ergebnis
- Weil Hund mit extends Tier alle Attribute von Tier erbt. · Weil ein Hund ein Tier ist und deshalb alles hat, was ein Tier hat.
Abschlussquiz – Frage 5
Welche Aussagen über Tier t = new Katze(); t.zeigeDaten(); stimmen?
- Richtiges Ergebnis
- Es wird zeigeDaten() aus Katze ausgeführt. · Das ist ein Beispiel für Polymorphie.