PB007 Softwarové inženýrství I Cvičenia 5 a 6 – Analytic Class Diagram Valdemar Švábenský Fakulta informatiky, Masarykova univerzita, Brno 20. októbra 2015 Obsah 1 Class Diagram: základný prehľad 2 Ako modelovať? 3 Úlohy 4 Visual Paradigm: tipy 5 Príloha: Analytické vzory 1 Class Diagram: základný prehľad 2 Ako modelovať? 3 Úlohy 4 Visual Paradigm: tipy 5 Príloha: Analytické vzory Class Diagram – úvod ∙ Diagram tried je najčastejšie používaný diagram pri modelovaní objektového systému ∙ Modeluje statickú štruktúru systému: množinu tried, rozhraní a vzťahy medzi triedami ∙ Je rozsiahly, preto sa jeho tvorba delí do viacerých krokov: 1 Slovná analýza zadania a hľadanie tried 2 Tvorba analytického diagramu tried (Analytic CD) ∙ Stručný, bez implementačných detailov 3 Tvorba návrhového diagramu tried (Design CD) ∙ Vzniká pridaním implementačných detailov do analytického diagramu tried Príklad výstupu kroku 1 (slovná analýza) Zdroj: https://is.muni.cz/auth/el/1433/podzim2015/PB007/um/tut/siscz/06_SlovniAnalyza.html Príklad výstupu kroku 2 (Analytic CD) Zdroj: https://is.muni.cz/auth/el/1433/podzim2015/PB007/um/sem/cz_files/06/06_Studium_ClassAnalyza.jpg Príklad výstupu kroku 3 (Design CD) Zdroj: https://is.muni.cz/auth/el/1433/podzim2015/PB007/um/sem/cz_files/10/10_Studium_ClassNavrh.jpg Trieda ∙ Trieda – Vzor množiny objektov, ktoré zdieľajú rovnaké vlastnosti a chovanie (atribúty a metódy) public class Creature { private int name; private int hitpoints; private int level; } ∙ Inštancia – Konkrétny objekt vytvorený na základe triedy Dedičnosť ∙ Dedičnosť – Hierarchický vzťah predok–potomok public class Hero extends Creature { private int experience; public void earnExperience () {...} public void levelUp () {...} } Asociácia ∙ Asociácia – Vzťah medzi triedami public class Creature { private int name; private int hitpoints; private int level; private Item item; } Navigovateľnosť ∙ Udáva, ktorá trieda bude obsahovať atribút druhej triedy ∙ A → B: trieda A obsahuje atribút triedy B ∙ A ↔ B = A – B: obojsmerný vzťah Zdroj: https://is.muni.cz/auth/el/1433/podzim2015/PB007/um/lec/04-ObjectOrientedAnalysis.pdf ∙ Objekt „objednávka“ ukladá zoznam produktov ∙ Objekt „produkt“ neukladá zoznam objednávok Násobnosť ∙ Násobnosť (multiplicita) – Počet inštancií tried, ktoré sa môžu zúčastniť vzájomného vzťahu public class Creature { private int name; private int hitpoints; private int level; private List items; } Násobnosť Zdroj: https://is.muni.cz/auth/el/1433/podzim2015/PB007/um/lec/04-ObjectOrientedAnalysis.pdf ∙ 1 osoba môže mať 0 až 𝑛 bankových účtov ∙ 1 bankový účet prislúcha práve 1 osobe Názov asociácie ∙ Pomenovanie vzťahu public class Creature { private int name; private int hitpoints; private int level; private List items; } Analytic Class Diagram – prvky – zhrnutie ∙ Trieda – Vzor množiny objektov, ktoré zdieľajú rovnaké vlastnosti a chovanie (atribúty a metódy) ∙ Inštancia – Konkrétny objekt vytvorený na základe triedy ∙ Dedičnosť – Hierarchický vzťah predok–potomok ∙ Potomok dedí atribúty a operácie od predka ∙ Môže mať aj svoje vlastné atribúty a operácie ∙ Asociácia – Vzťah medzi triedami ∙ Inštancia triedy A je atribútom inštancie triedy B! ∙ Navigovateľnosť udáva smer asociácie ∙ Násobnosť (multiplicita) – Počet inštancií tried, ktoré sa môžu zúčastniť vzájomného vzťahu ∙ 1:1, 1:N, (N:1), M:N, 0:1, 0:N, (N:0) ∙ Názov asociácie / role ∙ Pre daný vzťah vybrať jedno, odporúča sa názov asociácie Analytic Class Diagram – ukážka Zdroj: https://is.muni.cz/auth/el/1433/podzim2015/PB007/um/sem/cz_files/06/06_Studium_ClassAnalyza.jpg Asociačná trieda ∙ Rozbíja vzťah násobnosti M:N (obr. 1) ∙ Zápis: obr. 2 ≡ obr. 3 (rovnaká informácia) 1 Class Diagram: základný prehľad 2 Ako modelovať? 3 Úlohy 4 Visual Paradigm: tipy 5 Príloha: Analytické vzory Krok 1: Slovná analýza – postup Analýza podstatných mien a slovies: ∙ Tím zhromaždí dostupné zdroje (textová špecifikácia, dokumentácia prípadov použitia, . . . ) ∙ Podstatné mená = kandidáti na triedy alebo atribúty ∙ Slovesá a slovesné väzby = kandidáti na metódy tried ∙ https://is.muni.cz/auth/el/1433/podzim2015/ PB007/um/tut/siscz/06_SlovniAnalyza.html CRC (class, responsibilities, collaborators) analýza: ∙ Tímový brainstorming ∙ Členovia zapisujú na lístky kandidátne triedy – ich názov, zodpovednosti (metódy) a spolupracovníkov (iné triedy) Krok 2: Analytic Class Diagram – postup 1 Nájdite triedy, ich základné atribúty a metódy a ich spolupracovníkov 2 Určte dedičnosť medzi triedami (ak treba) 3 Zachyťte vzťahy medzi triedami pomocou asociácií 4 Pomenujte asociácie alebo role 5 Určte násobnosti a navigovateľnosti asociácií 6 Skontrolujte si diagram 7 Doplňte ďalšie atribúty, metódy a závislosti 8 Prehľadne usporiadajte prvky diagramu Analytic Class Diagram – konvencie ∙ Názvy tried sú podstatné mená v jednotnom čísle ∙ Ideálne v angličtine zapísané UpperCamelCase notáciou ∙ Názvy atribútov sú podstatné mená v jednotnom čísle ∙ S malým písmenom na začiatku ∙ Názvy metód sú slovesá v neurčitku / slovesné väzby ∙ S malým písmenom na začiatku Zdroj: https://is.muni.cz/auth/el/1433/podzim2015/PB007/um/lec/04-ObjectOrientedAnalysis.pdf Analytic Class Diagram – tipy Dobrá analytická trieda: ∙ Názov vyjadruje jej účel ∙ Má len dôležité atribúty, ktoré chceme modelovať ∙ Má jednu zodpovednosť (high cohesion) ∙ 3–5 metód Zlá analytická trieda: Analytic Class Diagram – tipy Dobrý analytický diagram: ∙ Triedy spolu komunikujú ∙ Ale majú medzi sebou málo väzieb (low coupling) Tiež: ∙ 10–20 tried ∙ Dedičnosť len vtedy, ak je to nutné Zlý analytický diagram: Zdroj: https://ayumilovedesignpattern.wordpress.com/ Tiež: ∙ Veľa malých tried ∙ Málo veľkých tried ∙ Zložitá dedičnosť 1 Class Diagram: základný prehľad 2 Ako modelovať? 3 Úlohy 4 Visual Paradigm: tipy 5 Príloha: Analytické vzory Úlohy ∙ Opravte a doplňte Activity Diagram z minulého cvičenia ∙ Nájdite (podľa špecifikácie) analytické triedy, ich atribúty, metódy a spolupracovníkov ∙ Triedy zakreslite do analytického diagramu tried ∙ Vrátane dedičnosti, smeru, násobnosti a mien asociácií ∙ Vytvorte prehľadný diagram! ∙ (Pridajte správcovské triedy zodpovedné za CRUD operácie) ∙ Aktualizujte váš Use Case Diagram ∙ Vygenerujte PDF report a vložte ho do odovzdávarne „Week 05“ (skupiny 09, 10) ∙ Názov v tvare priezvisko1-priezvisko2-priezvisko3.pdf ∙ Odovzdáva jeden človek za svoj tím ∙ Deadline: 25.10. 23:59 Príklad riešenia 1 Class Diagram: základný prehľad 2 Ako modelovať? 3 Úlohy 4 Visual Paradigm: tipy 5 Príloha: Analytické vzory Potrebné nástroje Triedy ∙ Atribúty: Alt+Shift+A ∙ Operácie: Alt+Shift+O ∙ Kópia: Ctrl+C → Pravý klik na prázdnu plochu → Paste Model Element Spájanie dvoch šípok dedičnosti do jednej ∙ Obe šípky označíme → Pravý klik na jednu z nich Vlastnosti asociácie I ∙ Pomenovanie: dvojklik na asociáciu ∙ Navigovateľnosť: Pravý klik na asociáciu → Navigable ∙ Násobnosť: Pravý klik na asociáciu → Multiplicity ∙ Závisí od kliknutia na ľavú / pravú polovicu asociácie Vlastnosti asociácie II ∙ Otočenie: Pravý klik na smer → Change Direction 1 Class Diagram: základný prehľad 2 Ako modelovať? 3 Úlohy 4 Visual Paradigm: tipy 5 Príloha: Analytické vzory Analytický (návrhový) vzor ∙ Pri modelovaní sa často opakujú podobné typy problémov (napr. ako modelovať organizačnú štruktúru spoločnosti) ∙ Preto existujú sady všeobecných návrhových vzorov ∙ Abstraktne popisujú riešenie problému ∙ Môžu zvýšiť flexibilitu a znovupoužiteľnosť modelu ∙ Gamma, Helm, Johnson, Vlissides (“Gang of Four”): Design Patterns: Elements of Reusable Object-Oriented Software Problém 1 Zdroj: https://is.muni.cz/auth/el/1433/podzim2014/PB007/um/sem/cz_files/06/pb007-cvicenie-06.pdf ∙ Osoba aj spoločnosť majú kontaktné údaje Riešenie 1: Návrhový vzor Party Zdroj: https://is.muni.cz/auth/el/1433/podzim2014/PB007/um/sem/cz_files/06/pb007-cvicenie-06.pdf ∙ Pôjdeme o úroveň abstrakcie vyššie: rola účastníka (party) Problém 2 ∙ Modelujeme organizačnú štruktúru veľkého podniku ∙ Spoločnosť – región – divízia – predajňa Zdroj: https://is.muni.cz/auth/el/1433/podzim2014/PB007/um/sem/cz_files/06/pb007-cvicenie-06.pdf ∙ Málo flexibilné – pre pridanie/odobratie organizačnej jednotky je nutné meniť veľkú časť modelu ∙ Malá znovupoužiteľnosť – rôzne firmy môžu mať rôznu organizačnú štruktúru Riešenie 2: Návrhový vzor Organizational Hierarchy Zdroj: https://is.muni.cz/auth/el/1433/podzim2014/PB007/um/sem/cz_files/06/pb007-cvicenie-06.pdf ∙ Jednoduché pridanie/odobranie organizačnej jednotky ∙ Jednoduchá úprava organizačnej štruktúry