Zadání domácích úkolů naleznete níže.
Pro odevzdání semestrálních prací pouzijte GitLab.
Je potřeba odevzdat všechny 4 domácí úlohy.
1. domácí úloha se neboduje, ostatní 3 jsou ohodnoceny každá 5 body pokud ji odevzdáte včas
Zádání domácích úkolů: první, druhý, třetí, čtvrtý
Pokud není řešeno jinak nebo to nevyplývá z kontextu tak, metodami se rozumí instanční metody, můžete definovat svoje pomocné atributy a metody a všechny vámi implementované neabstraktní třídy by měly mít konstruktor bez parametrů.
Hodnocení
Čistota softwarového designu aplikace, použití design patternů (50%)
Množství naimplementovaných funkčních požadavků (50%)
Vlastní inovace - nový funkční požadavek, který jste přidali nebo zajímavý softwarový design (5%)
Logistika
Úloha se vypracovává ve dvou studentech (ze stejného cvičení), přičemž je požadováno, aby každá osoba napsala přibližně stejně komplexní část aplikace a rozuměla i částem, které nepsala (bude kontrolováno v gitu). Semestrální úloha může být znovu otevřena u zkoušky. Skupiny po třech jsou výjimkou, kterou musí explicitně schválit cvičící, přičemž hodnocení bude přísnější.
Odevzdání je do konce semestru. Ideálně před vánoci, maximálně konec semestru.
Minimálně tři týdny před finálním odevzdáním je potřeba cvičícímu zaslat design vaší aplikace. Pokud by byl design špatný, došlo k odchýlení od zadání nebo naopak budete chtít poradit, tak bude konzultace provedena na cvičení, případně mimo cvičení po dohodě s cvičícím.
Zadání
Vyberte si jedno z následujících zadání:
Hinty
Rozpracovanou verzi Use case diagramu a Class diagramu si nechte zrevidovat cvičícím
Zamyslete se kde by se daly aplikovat jaké design patterny. Obvykle se postupuje obráceně, že nejdříve identifikujete problém a pak při hledání řešení se snažíte známé problémy řešit známým design patternem. Tedy cílem návrhu není obvykle snažit se “udat” za každou cenu design patterny, alt tady tomu půjdeme trochu naproti.
Simulaci neřešte pomocí více paralelních threadů, kde by thread např. reprezentoval konkrétní stroj. Problém se dá vyřešit sekvenčně v jednom threadu tím, že v každém “taktu” - diskrétní periodě reprezentující např. 10 minut - provedete po sobě změny na všech entitách a aplikujete reakce na tyto změny. Pak přecházíte k dalšímu taktu …