Probeklausur „Zoo"

Gleiche Struktur wie 24.04.2026, andere Domäne. Empfohlen: erst Übungen 01–08 abschließen.

Domäne
Tier · Käfig · Zoo

Modell:

  • Animal (Interface) – Diet getDiet()
  • Diet – Klasse mit type (z.B. "MEAT", "PLANT") und boolean isHerbivore
  • Lion implements Animal – Konstruktor nur Name, Diet erzeugt sich selbst ("MEAT", false)
  • Sheep implements Animal – Konstruktor Name + Diet
  • Cage (abstract) – analog Room: floor, max, list, statisches CAGES, Comparable
  • Aquarium extends Cage – mit Animal keeper, MAX 5
  • Pen extends Cage – mit String name, Eintritt nur bei Herbivore oder MEAT-Diet "ALLACCESS"
  • ClosedCage extends Cage – immer geschlossen
  • Zoo – Name + Cages, überladene Konstruktoren, Floors 2/4/6 = Aquarium
  • ZooMain – main

Schreib alle Klassen in einen Editor und prüfe pro Aufgabe wie in der Original-Klausur.

Aufgabe 1 – Diet 2 P

Klasse Diet mit String type, boolean isHerbivore, Konstruktor mit beiden Parametern, Getter getType() und isHerbivore().

Aufgabe 2 – Lion 3 P

Lion implements Animal mit Name, intern erzeugter Diet ("MEAT", false), Getter getDiet(). Konstruktor nur Name.

Aufgabe 3 – Cage (abstract) 9 P

Wie Room: static CAGES, floor, maxAnimals, animals, isFree(), enter(Animal) mit Exception, compareTo.

Aufgabe 4 – Aquarium 5 P

Aquarium extends Cage, MAX 5. Hat Animal keeper. isKeeperPresent() mit null-Check. enter: wenn keeper schon da und neuer Animal ist Lion → Exception. Sonst super.enter.

Aufgabe 5 – Pen 4 P

Pen extends Cage. Eintritt nur wenn diet.isHerbivore() oder "ALLACCESS".equals(diet.getType()).

Aufgabe 6 – Zoo 6 P

Überladene Konstruktoren (Zoo(String)this(name, 4)). Voll-Konstruktor füllt cages: Floors 2/4/6 → Aquarium, sonst Pen.

Aufgabe 7 – ZooMain 3 P

main: Zoo erzeugen, Lion + Sheep erzeugen, for-Each über cages, enter mit try/catch.