Inhalt
Sichtbarkeiten, etc.
Übungsaufgabe: Das Zoo-Verwaltungssystem
Teil 1: Sichtbarkeit und Kapselung (Access Modifiers)
In diesem Teil geht es darum, den Zugriff auf Daten zu kontrollieren.
Szenario: Wir erstellen eine Basisklasse Tier.
- Erstelle eine Klasse
Tierim Paketzoo.basis. - Füge folgende Attribute hinzu und wähle die korrekte Sichtbarkeit:
name: Sollte nur innerhalb der KlasseTierdirekt änderbar sein (private).alter: Sollte für die Klasse selbst und alle Unterklassen (auch in anderen Paketen) direkt zugänglich sein (protected).art: Sollte von überall her lesbar, aber nicht änderbar sein (public).
- Erstelle eine Unterklasse
Loewein einem anderen Paketzoo.raubtiere. - Experiment: Versuche in der Klasse
Loeweauf alle drei Attribute vonTierzuzugreifen. Welche sind sichtbar? Dokumentiere, warum der Zugriff aufnamescheitert und wie man ihn über Getter/Setter lösen könnte.
Teil 2: Abstraktion und Interfaces
Nun verfeinern wir das System. Ein allgemeines “Tier” gibt es im Zoo nicht, es ist immer eine konkrete Art. Zudem haben manche Tiere spezielle Fähigkeiten.
- Abstrakte Klasse: Ändere die Klasse
Tierin eineabstract class.- Füge eine abstrakte Methode
public abstract void macheGeräusch();hinzu. Warum macht es Sinn, dass diese Methode abstrakt ist?
- Füge eine abstrakte Methode
- Interfaces: Erstelle zwei Interfaces:
Schwimmfähigmit der Methodeschwimme().Jagdfähigmit der Methodejage().
- Implementierung:
- Lasse die Klasse
LoewevonTiererben und implementiereJagdfähig. - Erstelle eine Klasse
Pinguin, die vonTiererbt undSchwimmfähigimplementiert. - Beide Klassen müssen die Methode
macheGeräusch()konkret umsetzen.
- Lasse die Klasse
Teil 3: Polymorphismus (Vielgestaltigkeit)
In der Zoo-Verwaltung wollen wir alle Tiere gemeinsam behandeln, egal ob Löwe oder Pinguin.
- Die Liste: Erstelle eine
Main-Klasse mit einer Liste (z.B.ArrayList<Tier>), in die du sowohlLoeweals auchPinguinObjekte einfügst. - Iterieren: Gehe die Liste in einer Schleife durch und rufe für jedes Objekt
macheGeräusch()auf. Beobachte, wie Java zur Laufzeit entscheidet, welches Geräusch abgespielt wird. - Typprüfung: Nutze innerhalb der Schleife den Befehl
instanceof, um zu prüfen, ob ein TierSchwimmfähigist. Wenn ja, caste das Objekt und rufe die Methodeschwimme()auf.
Vorbereitung sRDP
- Sichtbarkeiten, etc.