U M L diagramy v Astah*
Ukázkový příklad objektové analýzy a návrhu v CASE nástroji Astah*
Autorka
Bc. Iveta Králová
Diagram tříd
Diagram tříd (Class Diagram) představuje „statický pohled na modelovaný systém“.[3] Zobrazuje strukturu objektových tříd a jejich vzájemné vztahy v systému.[6]
Třída je definována svými atributy, operacemi a vztahy k ostatním třídám, které jsou společné pro určitou množinu objektů stejného typu. Lze ji chápat jako předpis, podle kterého se vytváří konkrétní objekty (instance). [3], [6]
Podle [3] se dle úrovně abstrakce rozlišují tři úrovně modelu tříd:
  • konceptuální,
  • designová,
  • implementační.
Konceptuální model tříd (analytický, doménový) má za úkol zmapovat třídy zastupující objekty z problémové oblasti bez implementačních detailů. Jde tedy o model zcela implementačně nezávislý.
U designového modelu tříd se původní analytické třídy a jejich vazby zpřesňují a rozšiřují. Často jsou také přidávány třídy další. Designový model již má některé implementační charakteristiky.
Implementační model tříd obsahuje veškeré implementační charakteristiky pro případné vygenerování zdrojového kódu ve vybraném programovacím jazyce.
Podrobnější charakteristika diagramu tříd a jeho prvků je přehledně zpracována např. v [3].
Model tříd aplikace OB ZAVODY
Na obrázku 3.9 je zachycen konceptuální model tříd aplikace OB ZAVODY.
Model tříd zahrnuje celkem 6 byznys tříd, mapujících problémovou oblast:
  • Osoba,
  • Závodník,
  • Závod,
  • Oddíl,
  • Přihláška,
  • Kategorie.
Strukturu tříd tvoří pouze atributy, které určují odpovědnosti tříd. Protože konceptuální model je implementačně nezávislý, jsou zde definovány jenom názvy atributů. Nejsou určeny viditelnosti atributů, ani jejich datové typy a počáteční hodnoty.
Vztahy mezi třídami jsou pojmenovány a jsou u nich určeny jejich násobnosti.
Mezi třídami Osoba a Závodník je použit vztah generalizace/ specializace. Členy oddílu potom mohou být kromě závodníků i osoby, které se nezúčastňují závodů, ale podílí se např. na pořádání závodů.
Třídy Závod a Kategorie jsou propojeny vztahem kompozice. Jedná se o případ, že pro každý závod se vypisují kategorie (dle uvážení pořadatele), které si daný závod drží. Kategorie tedy nemůže existovat samostatně bez třídy Závod, ale vždy jen jako jeho součást.
V modelu je použita i jedna asociační třída Přihláška, která obsahuje informace vztahující se k přihlášení závodníka na závod.
Třídy Oddíl a Osoba jsou propojeny dvěma vztahy asociace. První z nich znázorňuje, že Oddíl vede Osoba. Druhý vztah znamená, že Osoba je členem oddílu.
Všechny ostatní vztahy jsou zachyceny rovněž jako asociace.
Model tříd
Obrázek 3.9 Analytický model tříd, zdroj: autor
Postup tvorby diagramu tříd v Astah* professional
Diagramu tříd aplikace OB ZAVODY, zachycený na obrázku 3.9, můžete v programu Astah* professional vytvořit v následujících krocích:
  1. V projektu OBzavody, který jste vytvořili pro diagram případů užití (viz kapitola Postup tvorby diagramu případů užití v Astah* professional) založte nový baliček s názvem Class Diagram. Postup založení balíčku v projektu je popsán v kapitole Nový projekt a popis rozvržení obrazovky.
    Pozn: Nový balíček je vhodné založit z toho důvodu, že prvky modelu musí mít jedinečný název v rámci jednoho jmenného prostoru. Pokud nezaložíte nový balíček pro diagram tříd, nemůžete mít v diagramu tříd třídu Závodník, protože její název se shoduje s názvem aktéra v diagramu případů užití.
  2. Do balíčku Class Diagram vložte diagram tříd (viz Nový projekt a popis rozvržení obrazovky).
    V editoru diagramu se zobrazí okno Class Diagram 0/ Class Diagram pro návrh diagramu tříd, dále jen diagram tříd.
  3. V konceptuálním modelu se mají definovat pouze názvy atributů a operací, ale v programu je výchozí zobrazení atributů a operací ve třídě přednastaveno ve tvaru:
    • Atributy: viditelnost název: typ
    • Operace: viditelnost název: návratový typ
    Je proto vhodné nastavení upravit tak, aby byl ve třídě zobrazen pouze název atributu nebo metody:
    • v hlavní nabídce zvolte [Tool] – [System Properties], což vyvolá dialogové okno pro nastavení vlastností systému s názvem System Properties, viz obrázek 3.10,
    • v okně System Properties vyberte položku [Visibility 1 (Initial)]
    • odškrtněte možnosti [Attribute Type], [Attribute Initial Value], [Attribute Stereotype], [Attribute Constraint], [Operation Return Type], [Operation Parameter], [Operation Parameter Type], [Operation Stereotype], [Operation Constraint], viz obrázek 3.10
    Nastavení viditelnosti atributů a operací
    Obrázek 3.10 Vlastnosti systému – viditelnost atributů a operací, zdroj: prostředí programu Astah* professional
  4. Pokud nejste spokojeni s výchozí barvou pro třídy, můžete ji změnit (např. na oranžovou). Postup je stejný jako u nastavení barvy pro případy užití v kapitole Postup tvorby diagramu případů užití v Astah* professional.
  5. Do diagramu tříd vložte 5 tříd – volba Ikona třída , a pojmenujte je Osoba, Závodník, Oddíl, Závod a Kategorie.
  6. Do jednotlivých tříd vepište jejich atributy. Při najetí myší na prvek třídy se uvnitř třídy objeví oranžový kosočtverec a pod ním zelený obdélník. Kliknutím na kosočtverec se v horní sekci třídy vytvoří atribut, viz obrázek 3.11. (Operace se vytvoří v dolní sekci kliknutím na zelený obdélník.)
    Vepsání atributů do třídy
    Obrázek 3.11 Vepsání atributů do třídy, zdroj: prostředí programu Astah* professional
  7. U atributů ve třídách se zobrazuje pomlčka, což je symbol pro viditelnost Private. Zobrazení této pomlčky je možné vypnout pouze v lokální nabídce třídy – volba [Extended Visibility], kde se odznačí [Visibility Kind Visibility].
  8. Pro modelování vztahů mezi třídami je dobré pro lepší přehlednost digramu použít pravoúhlý typ čar. V pravé části menu je volba šikmé čáry, v jejímž rozbalovacím menu vyberete pravoúhlý typ čáry.
    Ikona pravuúhlá čára
  9. Třídu Osoba a Závodník spojte vztahem generalizace/specializace – volba prázdné šipky nahoru Ikona generalizace/specializace, viz obrázek 3.12.
    Generalizace/specializace tříd
    Obrázek 3.12 Generalizace/specializace mezi třídami, zdroj: prostředí programu Astah* professional
  10. Třídu Závodník a Závod spojte vazbou s asociační třídou – volba Ikona asociační třída .
    Všechny vazby v diagramu tříd vždy vytvářejte ve směru jejich čtení (v tomto případě směrem od Závodníka k Závodu), protože po jejich vytvoření již směr vazby nelze změnit. Asociační třídu pojmenujte Přihláška. Automaticky se pojmenuje i vazba. Šipka v názvu vazby směřuje od Závodníka k Závodu, viz obrázek 3.13.
    Asociační třída přihláška
    Obrázek 3.13 Asociační třída Přihláška, zdroj: prostředí programu Astah* professional
  11. Do asociační třídy Přihláška vepište atributy, stejným způsobem jako u ostatních tříd.
  12. Vazbou asociace – volba vodorovné čáry Ikona čára spojte třídy:
    • Přihláška a Kategorie (ve směru od Přihlášky ke Kategorii),
    • Oddíl a Závod (ve směru od Oddílu k Závodu).
  13. Dvěma vazbami asociace spojte třídy:
    • Závod a Osoba (obě ve směru od Závodu k Osobě),
    • Oddíl a Osoba (první ve směru od Oddílu k Osobě, druhá ve směru od Osoby k Oddílu).
  14. Třídu Závod a Kategorie propojte vazbou kompozice (ve směru od Závodu ke Kategorii) – volba vodorovné čáry, v jejímž rozbalovacím menu vyberete čáru začínající plným kosočtvercem.
    Ikona kompozice
  15. U všech vazeb určete jejich násobnosti. Po označení dané vazby se na jejích koncích objeví malá písmenka m. Po kliknutí na písmenko m se zobrazí nabídka násobností, ze které vyberete požadovanou násobnost, viz obrázek 3.14.
    Určení násobnosti vazeb
    Obrázek 3.14 Určení násobnosti vazeb, zdroj: prostředí programu Astah* professional
  16. Do třídy Osoba vstupují celkem čtyři vazby. Proto je dobré pojmenovat jednotlivé role, které Osoba ve vazbách zastupuje. Po označení dané vazby se na jejích koncích, kromě písmenka m, objeví i „špendlík“. Klikněte na „špendlík“ a na konec vazby připište název role, viz obrázek 3.15
    Určení role třídy
    Obrázek 3.15 Určení role třídy ve vazbě, zdroj : prostředí programu Astah* professional
  17. Pro lepší pochopení účelu vazby doplňte k vazbám jejich popisy :
    (Upozorňuji, že při tvorbě popisů vazeb program není příliš přívětivý.)
    • vazbu označte,
    • z nabídky vyberte volbu písmene L Ikona link,
    • několikrát klikněte na danou vazbu, dokud se celý diagram tříd jakoby „nerozostří“,
    • napište název vazby a potvrďte enterem,
    • teprve po potvrzení enterem se název vazby v diagramu objeví a můžete ho libovolně editovat.
    • Pozn.: Směr šipky u názvu vazby editovat nelze. Řídí se směrem, kterým byla vazba vytvořena.
  18. Třídy a vazby uspořádejte tak, aby byl diagram přehledný, viz finální obrázek 3.9 a můžete ho vyexportovat do formátu JPEG, viz kapitola Export obrázku.