| Termin oddania | Punkty |
|---|---|
| 13.06.2024 23:00 | 20 |
Przekroczenie terminu o n zajęć wiąże się z karą:
- punkty uzyskania za realizację zadania są dzielone przez 2n.
W katalogu LivingWorld
znajduje się szkic programu implementującego dwuwymiarowy świat.
Poniższe zadania dotyczą refaktoringu kodu tam przedstawionego.
-
[5 punktów] Każdy
Organizmpowinien posiadać pole przechowujące historię jego przedków. Historia jest zaimplementowana jako lista numerów tur narodzin i śmierci przodków. WyposażyćOrganizmyw odpowiedznie konstruktory, także kopiujące, oraz destruktory. Obiekty powinny posiadać również odpowiednie mechanizmy aktualizacji nowych danych. Jak powinny się zachowywać operatory przypisania? -
[5 punktów] Do świata dodać nowe organizmy zgodnie z opisem świata z projektu
PythonWorld, katalogiWorld01-World04. Wszystkie klasy (także istniejące) wyposażyć w odpowiedni model dziedziczenia oraz odpowiednie metody polimorficzne. -
[5 punktów] Po realizacji zadania z poprzedniogo punktu spowodować by klasy
Organizm,AnimaliPlantbyły klasami abstrakcyjnymi i nie było możliwe tworznie obiektów tych klas. -
[5 punktów] W klasie
Worldmamy naiwny mechanizm serializacji świata. Nie jest on zgodny z SOLID. Przebudować ten mechanizm tak by, każdy obiekt sam zajmował się swoją serializacją / deserializacją. Przetestować nowy mechanizm na wybranych przykładach.