Objektovo orientované programovanie

2. zadanie

Stiahnite si projekt, kde je vypracovaná časť kódu.

V balíku oop.zadanie2 vytvorte dve triedy: CityWeb a DayWeb simulujúce webové aplikácie. Tieto triedy budú od AbstractWeb dediť implementáciu autentifikácie používateľov a predpis abstraktných metód, ktoré treba implementovať.

CityWeb bude poskytovať informácie o mestách. Bude obsahovať dve web stránky (simulované metódami):

DayWeb bude poskytovať informácie o dňoch v týždni (pondelok, utorok, atď.). Bude obsahovať dve web stránky (simulované metódami):

Požiadavky, odosielané do web aplikácie, budú zabalené v inštanciách triedy Request. Každá požiadavka na získanie obsahu web stránky obsahuje:

Z web aplikácie dostaneme odpoveď v inštancii Response. Tá obsahuje:

Pri vytváraní inštancii tried CityWeb a DayWeb, nové inštancie dostanú ako parameter konštruktora databázu používateľov. Databáza používateľov je reprezentovaná polom prvkov typu User, kde je prihlasovacie meno a heslo.

Nová inštancia triedy CityWeb dostane ako parameter konštruktora aj databázu miest, ktorá je reprezentovaná poľom prvkov typu String, ktoré obsahujú názvy miest. ID mesta je indexom do tohto poľa.

Inštancie triedy DayWeb majú dni v týždni zabudované v ich kóde, nedostávajú ich ako parameter konštruktora.

Príklad vytvorenia inštancii:

new CityWeb(/* parameter typu User[] */, /* parameter typu String[] */);
new DayWeb(/* parameter typu User[] */);

Pri implementácii dbajte na návrh a dobrú štruktúru programu. Vhodne použite princípy objektovo orientovaného programovania. Použite zapuzdrenie. Statické členy môžete použiť len tam, kde to má dôvod. V podtriedach implementujte len to, čo je potrebné. Využite kód z nadtriedy.

Zverejnený projekt obsahuje aj unit testy. Tieto slúžia na základnú kontrolu vypracovania, prípadne aj vyjasnenie špecifikácie. Do riešenia môžete doplniť aj vlastný testovací kód. Pre unit testy je použitá knižnica org.junit.jupiter:junit-jupiter:5.14.3.

Použite Javu verzie 25.

Odovzdajte komprimovaný projekt vo formáte .zip! Zdrojové súbory projektu musia byť v adresári src alebo src/main/java, podľa toho, aký "buildovací" nástroj používate.

Poznámka: Pre spojene textov v poli String[] do jedného textu (String-u) môžete použiť metódu String.join()

Za riešenie môžete získať 2 body.