====== 3 - Dědičnost, polymorfismus, objektový návrh ====== ===== Referenční řešení z minulého cvičení ===== 4.10. Bude zveřejněno tento týden - https://gitlab.fel.cvut.cz/B221_B6B36OMO/seminar/-/tree/main/cv2_solution ===== Teorie ===== * Dědičnost a polymorfismus * Abstraktní třída, abstraktní metoda * Rozhraní (Interface), rozdíl mezi abstraktní třídou a rozhraním ===== Rozehřívačka před cvičením ===== * Jaký je rozdíl mezi Overriding a Overloading? * Co je SOLID? * Co znamená DRY? * Jak zajistíte zapouzdření? * Co je na následujících kódech špatně {{:courses:b6b36omo:labs:dto.png?800|}} {{:courses:b6b36omo:labs:dedicnost.png?800|}} ===== Objektový návrh ===== ==== Popis systému ==== * Blog reprezentuje jednoduchou webovou stránku, která umožňuje sdílet články, které se týkají určitého tématu. * Pro použití blogu je nutné si nejprve vytvořit uživatelský účet, uživatelský účet může být dvou druhů: Uživatelský a Administrátorský. Uživatelský účet má právo na prohlížení seznamu témat, čtení a komentování článků, Uživatelský účet navíc může být zablokován (v případě nevhodného chování). * Administrátorský účet může zobrazovat a vytvářet témata, číst, vytvářet a komentovat články. * Před možností provádět výše uvedené akce s účty je nutné se k aplikaci přihlásit pomocí svého uživatelského jména a hesla. * Téma má svůj název a stručný popis, pod téma je možné registrovat libovolný počet článků. * Článek má svůj název, obsah, autora, datum poslední změny, stav a seznam Témat, pod která byl zařazen. * Stavy Článku jsou následující: rozpracovaný, publikovaný, neaktuální. Články lze mezi stavy přesouvat, zobrazit si lze pouze publikované články. * Blog má důležitou část Dashboard, který slouží pro zobrazování komponent uživateli. Zobrazovat jdou témata a články. Pro zobrazení na Dashboardu musí komponenty splňovat určité rozhraní. * Další částí je Editor, který slouží k úpravě komponenty. Upravovat jdou pouze články. Pro úpravu v Editoru musí komponenty splňovat určité rozhraní. **1. Vytvořte UML Class diagram reprezentující výše popsaný systém.** * Enterprise architect 12: https://moodle.fel.cvut.cz/course/view.php?id=2345 * nebo další nástroje - viz. první cvičení **2. Implementujte následující část systému** * Vytváření uživatelských účtů: aplikace umožní vytvářet uživatelské a administrátorské účty. * Přihlašování se k uživatelským účtům: do aplikace bude možné se přihlásit pomocí uživatelského jména a hesla. * Vytváření nových témat: administrátor může vytvářet nová témata. * Vytváření nových článků: administrátor může vytvářet nové články. * Články lze registrovat pod témata. * Uživatel si může přečíst blog: všechen obsah / podle zvoleného tématu. Vždy pouze aktuální články. Pro zobrazení článku je třeba použít již připravenou třídu Dashboard. * Implementujte unit testy pro tuto část systému.