06 Správa zoologické zahrady
Vytvořte systém pro správu zoologické zahrady v Javě, který bude zahrnovat správu zvířat, zaměstnanců a zařízení. Systém by měl umožňovat přidávání, odebírání a vyhledávání zvířat a zaměstnanců, správu veřejných ploch a výběhů pro zvířata, a organizaci událostí pro veřejnost.
Struktura projektu
Projekt bude rozdělen do balíčků podle funkcionalit: animals, collection, employees, facilities, a základní třídy a rozhraní budou ve výchozím balíčku ssmg.exercise.
Základní třídy a rozhraní
- Animal (Abstraktní třída pro všechna zvířata)
- Diet (Rozhraní definující metodu pro jídlo)
- Employee (Třída pro všechny zaměstnance)
- Facility (Základní třída pro všechna zařízení v zoologické zahrady)
- Maintenance (Rozhraní definující metodu pro údržbu)
Specifické třídy
- Pro zvířata: Bird, Mammal, Reptile
- Pro zaměstnance: Technician, ZooKeeper
- Pro zařízení: Enclosure, PublicArea
- Pro kolekce: Zoo, ZooFacility, ZooStaff
Funkcionalita systému
-
Abstraktní třída Animal
- Atributy:
- protected String name
- protected int age
- protected String species
- Metody:
- Konstruktor: public Animal(String name, int age, String species)
- Abstraktní metoda: public abstract void makeSound();
- public String getName()
- public String getSpecies()
- Atributy:
-
Rozhraní Diet
- Metody:
- void eat();
- Metody:
-
Třída Employee
- Atributy:
- protected String name
- protected String position
- Metody:
- Konstruktor: public Employee(String name, String position)
- public String getName()
- public void setName(String name)
- public String getPosition()
- public void setPosition(String position)
- Atributy:
-
Třída Facility
- Atributy:
- protected String location
- protected String type
- Metody:
- Konstruktor: public Facility(String location, String type)
- public String getLocation()
- public void setLocation(String location)
- public String getType()
- public void setType(String type)
- Atributy:
-
Rozhraní Maintenance
- Metody:
- void maintain();
- Metody:
-
Třída Bird (dědí z Animal, implementuje Diet)
- Atributy:
- private String dietType
- Metody:
- Konstruktor: public Bird(String name, int age, String species, String dietType)
- public void eat() - výpis: "[name] the [species] (Bird) eats [dietType]."
- public void makeSound() - výpis: "[name] the [species] (Bird) sings."
- Atributy:
-
Třída Mammal (dědí z Animal, implementuje Diet)
- Atributy:
- private String dietType
- Metody:
- Konstruktor: public Mammal(String name, int age, String species, String dietType)
- public void eat() - výpis: "[name] eats as a [dietType]."
- public void makeSound() - výpis: "[name] says: 'Generic mammal sound!'"
- Atributy:
-
Třída Reptile (dědí z Animal, implementuje Diet)
- Atributy:
- private String dietType
- Metody:
- Konstruktor: public Reptile(String name, int age, String species, String dietType)
- public void eat() - výpis: "[name] the [species] (Reptile) eats [dietType]."
- public void makeSound() - výpis: "[name] the [species] (Reptile) hisses."
- Atributy:
-
Třída Technician (dědí z Employee, implementuje Maintenance)
- Metody:
- Konstruktor: public Technician(String name)
- public void maintain() - výpis: "[name], the Technician is performing maintenance."
- Metody:
-
Třída ZooKeeper (dědí z Employee)
- Metody:
- Konstruktor: public ZooKeeper(String name)
- public void feedAnimals(Animal[] animals) - výpis pro každé zvíře: "[name], the ZooKeeper feeds [animal's name]."
- Třída Enclosure (dědí z Facility, implementuje Maintenance)
- Atributy:
- private String environmentType
- Metody:
- Konstruktor: public Enclosure(String location, String type, String environmentType)
- public void simulateEnvironment() - výpis: "Simulating [environmentType] environment in enclosure located at [location] of type [type]"
- public void upgradeFacility() - výpis "Upgrading the [type] facility at [location]"
- Třída PublicArea (dědí z Facility)
- Atributy:
- private String description
- Metody:
- Konstruktor: public PublicArea(String location, String type, String description)
- public void organizeEvent(String eventName) - výpis: "Organizing event: [eventName] at the [type] located at [location]"
- public void maintainCleanliness() - výpis: "Maintaining cleanliness at the [type] located at [location]"
- Třída Zoo
- Atributy:
- private List<Animal> animal
- private ZooFacilities facilities
- private ZooStaff staff
- Metody:
- public void addAnimal(Animal animal) - přidává zvíře do seznamu.
- public void removeAnimal(Animal animal) - odebírá zvíře ze seznamu.
- public List<Animal> getAnimals() - vrací seznam zvířat.
- public void addFacility(Facility facility) - přidává zařízení do seznamu.
- public void removeFacility(Facility facility) - odebírá zařízení ze seznamu.
- public void addEmployee(Employee employee) - přidává zaměstnance do seznamu.
- public void removeEmployee(Employee employee) - odebírá zaměstnance ze seznamu.
- public Animal findAnimalBySpecies(String species) - hledá zvíře podle druhu.
- Třída ZooStaff
- Atributy:
- public List<Employee> employees
- Metody:
- void hireEmployee(Employee employee)
- void fireEmployee(String name)
- Třída ZooFacilities
- Atributy:
- public List<Facility> facilities
- Metody:
Hodnocení
Hodnocení je založeno na počtu průchozích testů. V případě
pochybností o implementaci bude žák prozkoušen s dvojnásobnou váhou
známky.
- 27 testů: známka 1
- 26 - 23 testů: známka 2
- 22 - 17 testů: známka 3
- 16 - 12 testů: známka 4
- 11 a méně testů: známka 5
- 7. listopadu 2023, 21.10
- 7. listopadu 2023, 21.10
- 7. listopadu 2023, 21.10