PB007: Termín 2020/01/31 - UML Jméno a příjmení – pište do okénka Učo Číslo zadání 1 90 minutes total; A>=82, 82>B>=74, 74>C>=66, 66>D>=58, 58>E>=50, 50>F 1 (35 b.) Úkolem je navrhnout systém pro správu panovnických rodů (dynastií) pro úředníky Svaté říše římské. Systém umožnuje evidovat panovnické rody, jejich dědičné tituly a panovníky samotné. Systém má podporovat následující funkcionalitu: • Vyhledání dynastie podle jména • Přivlastnění si dědičného titulu, pokud jeho původní dynastie vymřela • Vyhledání panovníka podle jména a vyhledání žijících panovníků podle dynastie • Přiřazení titulu panovníkovy z dědičných titulů dynastie, které nejsou přiřazeny žijícímu panovníkovi • Výpis celého jména panovníka, včetně jeho titulů ve správném pořadí. Každá dynastie v systému má jméno, seznam dědičných titulů a seznam panovníků. Jméno dynastie je do systémů vloženo při jejím vytvoření a nelze ho měnit. Dědičný titul může patřit vždy jen jedné dynastii, která ho spravuje. Titul dále obsahuje území, ke kterému se vztahuje. Území má svůj název a může dále obsahovat hierarchii pod-území. V systému existují tři druhy titulů: 1. Císař (Emperor) 2. Král (King) 3. Vévoda (Duke) Pořadí titulů je podle pořadí výpisu (nejprve císař, potom král), jinak abecedně podle názvu území. Dynastie si v systému drží své žijící i již zesnulé panovníky. Při zadání panovníka do systémů zadá se jeho datum narození, které nelze dále měnit. K panovníkovi se dále drží informace o jménu a datu smrti. Panovnické tituly jsou panovníkovi přiřazeny korunovací. Panovník přímo spravuje své korunovace. Korunovace je definována titulem, který přiřazuje a datem korunovace. Tyto jsou zaznamenány při vložení do systému a jsou dále neměnné. Při smrti panovníka zůstávají korunovace v systému pro historiky, ale titul samotný lze přiřadit jinému panovníkovi. Konkrétně je vaším úkolem navrhnout návrhový diagram tříd, pokrývající tyto požadavky. Diagram by měl obsahovat alespoň tři asociace vhodně rozpracované na agregaci nebo kompozici. Asociacím nesmí chybět násobnosti (multiplicity) a řiditelnosti (navigability). Atributy by měly být přístupné pouze za použití vhodných metod (get, set). U metod pak nezapomeňte na argumenty a návratový typ, s tím že u argumentů nemusíte typ značit. V případě abstraktní třídy, dejte ke jménu třídy příznak (A). Dejte pozor, aby diagram podporoval požadovanou funkcionalitu, zejména správným směrem asociací a metodami.