Skip to content
Snippets Groups Projects
Chaban, Yevhen's avatar
Chaban, Yevhen authored
6075e8c3
History

SmartHome

Funkční požadavky (podle zadání)

F1: Všechny třídy, se kterými pracujeme, jsou ve složce "alive", "devices", "home". ✔️

F2: Všechna zařízení mají API na ovládání. Devicy mají API na ovladaní přimo ve svých třídách. ✔️

F3: Spotřebiče mají svojí spotřebu ve 4. stavech a to jsou ON, BUSY, BROKEN a OFF. Na regulování těchto stavů použiváme desigh pattern "State Machine", který se nachazí ve složce "devices". ✔️

F4: Devicy, které jsou ve složce "action", "weather" mají API na sběr dat o sobě. ✔️

F5: Osoby a zviířata mohou ovlivňovat třidy spotřebiců pomocí speciálních funkcí , které jsou v těch třídách. ✔️

F6. Jednotlivá zařízení a osoby se v každém okamžiku vyskytují v jedném patře (pokud nesportují nebo nedělají libovolnou další akci) a náhodně generují eventy (ji, používá zařízení, jde sportovat apod.). ✔️

F7: Entira world generuje eventy, krétě jsou odbavovány vhodnými zařízení. V aplikaci jsou alarm zařízení, která taky generuji eventy. Pokud zařízení se rozbije, vygeneruje event, který bude zpracovaný entitou osoby. ✔️

F8: Vygenerování HouseConfigurationReport, EventReport, ActivityAndUsageReport, ConsumptionReport do textového souboru. Třídy generující reporty jsou ve složce "reports". ✔️

F9: Je funkce action() ve třídě "ActionDeviceBrokenState" ve složce "devices.action.state", v teto funkce je logika pro opravu devicy, osoba zkouma manual a pak opravuje devicy. Pokud je to ditě, tak zavola někoho dospeleho pomoct. ✔️

F10: Ve třídě "Creature" jsou proměnna wish, ktera je zodpovědna za použití deviců nebo sportovního vybavení. To všechno kontroluje funkce doSomething(), která je taky ve třídě "Creature". ✔️

Design patterns

SINGLETON
Třída "House" vytvořena právě jednou, jakožto jedina budova.

LISTENER
Předky třídy AlarmListener představují listenery s metodou onApplicationEvent(T event), kde T je předkem AbstractAlarmEvent. Používá se pro změnu štábu při aktivaci alarmu.

VISITOR Visitor je implementovaný mezi třídami dědícími od AbstractAlarmEvent a třídou EmergencyCenterVisitor. Používá se pro detekci, jaké alarmy byli aktivované a jaké služby musejí se zavolat.

STRATEGY
Pattern je implementovaný u třídy House. Používá se pro změnu chování obyvatelů domu a devicu při havarijní situaci.

STATE MACHINE
Slouží při používání spotřebiců k pohybu mezi stavy ON, BUSY, BROKEN a OFF.

Nefunkční požadavky

  • Není autentizace ani autorizace. ✔️
  • Běží pouze v jedné JVM. ✔️
  • JavaDoc je v kořenu repozitáře. ✔️
  • Reporty jsou generovány do textového souboru v kořenove složce. ✔️
  • Konfigurace domu, zařízení a obyvatel domu nahrani z třidy HomeFactory a pomoci metod setUpHouse(int adultsNumber, int childNumbers, int petsNumber, HouseSize houseSize). ✔️

Požadované vystupy

  • Všechny diagramy jsou v hlavní složce projektu na GITu (UML a Use Case). ✔️
  • Podrobní JavaDoc je taky v hlavní složce projektu na GITu. ✔️
  • Ve třidě "HomeFactory" je funkce, která obsahuje konfigurace. ✔️
  • Reporty pro různé konfigurace lze získat spuštěním programu s různými parametry.