Zoo

Do následující ukázky doplňte alespoň definice tříd Jidlo, Zvire, Antilopa a Lev tak, aby program prováděl a vypisoval výpisy, dle toho, jak je to naznačeno v komentářích. Další třídy, funkce, procedury, konstruktory, destruktory, doplňte podle toho, jaké bude váš program potřebovat. Dále program upravte tak, aby splňoval následující podmínky:

  1. Každé jídlo má metodu vypis.
  2. Každé zvíře musí umět sníst libovolné jídlo.
  3. Každé zvíře se umí rozmnožit a metoda RozmnozSe vrací mládě zvířete stejného typu.
  4. Metoda zvire.snez přepočítá hmotnost zvířete a dealokuje jídlo.
  5. Pokud je snězeno zvíře, tak před zkonzumováním umře.
  6. Výjimkou je červ. Ti se jedí zaživa.
  7. Abstraktní metody, které se nemají volat budou nadefinované jako RunError.
  8. Když umírá antilopa tak program napíše 'Antilopa {jmeno} se pokousi utect.'. To je výjimka, která se týká pouze antilop. Ostatní zvířata jen vypíší úmrtní oznámení, dle ukázky.
  9. Pokuste se nedefinovat proceduru vypis znovu pro každé zvíře.
  10. Používejte správně public, protected, private.
  11. Správné řešení této úlohy nikde nepoužívá podmínky a ani cykly.
  12. Vše musí fungovat i po doplnění tříd pro další jídla a zvířata. To by mělo jít udělat snadno bez nutnosti kopírovat kód už napsaných metod, měnit kód v jiných třídách atd.
  13. Všechna dynamicky alokovaná paměť musí být správně uvolněna.

Za úlohu můžete získat 25 bodů