Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
statnice:si:a4m33nms2 [2011/05/18 13:24] tape vytvořeno |
statnice:si:a4m33nms2 [2025/01/03 18:29] (aktuální) |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | ====== Unified Modeling language (UML), popis jazyka, typy diagramů a způsob jejich použití při návrhu různých aspektů systému, syntax a sémantika jazyka a jeho symbolů.(A4M33NMS) ====== | ||
+ | //Převzato z //[[http://statnice.stm-wiki.cz/doku.php?id=si:si2|STM státnice]] | ||
+ | |||
+ | |||
===== UML ===== | ===== UML ===== | ||
== Úvod == | == Úvod == | ||
Řádek 41: | Řádek 45: | ||
* k tomu, abychom použili (již hotový) objekt, nemusíme znát jeho implementaci - stačí nám znát jeho rozhraní; programátoři (i neobjektoví) vlastně tohoto využívají při volání knihovních funkcí : programátor v jazyce C nemusí znát, jak je vnitřně vyřešena funkce printf, ale zná její rozhraní, tedy ji může používat | * k tomu, abychom použili (již hotový) objekt, nemusíme znát jeho implementaci - stačí nám znát jeho rozhraní; programátoři (i neobjektoví) vlastně tohoto využívají při volání knihovních funkcí : programátor v jazyce C nemusí znát, jak je vnitřně vyřešena funkce printf, ale zná její rozhraní, tedy ji může používat | ||
* a z druhé strany : vnitřek objektu může být (v budoucnu) libovolně změněn - ale jen tak, aby jeho klienty (tj. ty, které využívají jeho služby) nemuselo být nutno revidovat - jinak řečeno : i po úpravách musí objekt správně implementovat dohodnuté rozhraní; tedy ten, kdo vytváří/mění vnitřek objektu, nemusí nic vědět o tom, jak a kým bude objekt použit - stačí, když bude správně implementovat rozhraní | * a z druhé strany : vnitřek objektu může být (v budoucnu) libovolně změněn - ale jen tak, aby jeho klienty (tj. ty, které využívají jeho služby) nemuselo být nutno revidovat - jinak řečeno : i po úpravách musí objekt správně implementovat dohodnuté rozhraní; tedy ten, kdo vytváří/mění vnitřek objektu, nemusí nic vědět o tom, jak a kým bude objekt použit - stačí, když bude správně implementovat rozhraní | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_commondiv.png}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_commondiv.png?200|}} |
== Mechanismy rozšiřitelnosti (extensibility mechanisms) == | == Mechanismy rozšiřitelnosti (extensibility mechanisms) == | ||
Řádek 56: | Řádek 60: | ||
* Behaviorální – interakce, stavové stroje, use case | * Behaviorální – interakce, stavové stroje, use case | ||
* Skupiny – balíček (package) | * Skupiny – balíček (package) | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_diag_types.png?700}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_diag_types.png?700|}} |
=== Vztahy – Relationships === | === Vztahy – Relationships === | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_relation2.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_relation2.png?500}} |
Řádek 80: | Řádek 84: | ||
* nezabřednout brzy do implementačních detailů | * nezabřednout brzy do implementačních detailů | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_class.png}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_class.png?500}} |
+ | |||
**Návrhové relace** | **Návrhové relace** | ||
Řádek 93: | Řádek 98: | ||
* Součást může být sdílena více celky | * Součást může být sdílena více celky | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:si_02_agregace.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:si_02_agregace.png?300|}} |
* **Kompozice** | * **Kompozice** | ||
Řádek 103: | Řádek 108: | ||
* Je-li zničen celek, musí zničit své součásti (nebo přenést odpovědnost na jiný objekt) | * Je-li zničen celek, musí zničit své součásti (nebo přenést odpovědnost na jiný objekt) | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:si_02_kompozice.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:si_02_kompozice.png?300|}} |
**Generalizace** | **Generalizace** | ||
Řádek 109: | Řádek 114: | ||
* Na následujícím obrázku je třída Zvíře obecnější než třída Pes. | * Na následujícím obrázku je třída Zvíře obecnější než třída Pes. | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:si_02_generalizace.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:si_02_generalizace.png?100|}} |
**Dědičnost tříd** | **Dědičnost tříd** | ||
Řádek 125: | Řádek 130: | ||
* Rozhraní se používá k určení společných protokolů pro třídy, mezi nimiž by za normálních okolností neměly být dědičné vazby. | * Rozhraní se používá k určení společných protokolů pro třídy, mezi nimiž by za normálních okolností neměly být dědičné vazby. | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:si_02_realize_2.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:si_02_realize_2.png?550|}} |
==== Diagram komponent ==== | ==== Diagram komponent ==== | ||
Řádek 136: | Řádek 141: | ||
Protože je komponenta specializací třídy, může mít své atributy a operace a může mít asociace a generalizace-specializace (více viz diagram tříd (class diagram)). | Protože je komponenta specializací třídy, může mít své atributy a operace a může mít asociace a generalizace-specializace (více viz diagram tříd (class diagram)). | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_comp.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_comp.png?600|}} |
Na prvním obrázku je diagram komponent s jednou strukturovanou komponentou **Obchod** a jejími třemi vnitřními komponentami **:Objednavka**, **:Produkt** a **:Zakaznik**. | Na prvním obrázku je diagram komponent s jednou strukturovanou komponentou **Obchod** a jejími třemi vnitřními komponentami **:Objednavka**, **:Produkt** a **:Zakaznik**. | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-komponent-2.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-komponent-2.png?600|}} |
V druhém obrázku je další diagram komponent, kde vidíme komponentu **Objednavka** a její vnitřní klasifikátory **HlavickaObjednavky** a **PolozkaObjednavky**, které realizují chování této komponenty. | V druhém obrázku je další diagram komponent, kde vidíme komponentu **Objednavka** a její vnitřní klasifikátory **HlavickaObjednavky** a **PolozkaObjednavky**, které realizují chování této komponenty. | ||
Řádek 174: | Řádek 179: | ||
Objekty jsou instancemi tříd. Objekty jsou propojeny linky. Objektový diagram vypadá podobně, jako diagram tříd. Název konkrétního objektu se zapisuje před název třídy a odděluje se dvojtečkou. | Objekty jsou instancemi tříd. Objekty jsou propojeny linky. Objektový diagram vypadá podobně, jako diagram tříd. Název konkrétního objektu se zapisuje před název třídy a odděluje se dvojtečkou. | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_object.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_object.png?250|}} |
+ | |||
+ | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-objektovy.gif?450|}} | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-objektovy.gif|}} | ||
Na obrázku je příklad objektového diagramu odvozeného z class diagramu naší půjčovny videokazet. : | Na obrázku je příklad objektového diagramu odvozeného z class diagramu naší půjčovny videokazet. : | ||
* objekt je znázorněn podobně jako třída - obdélníkem, ale název objektu je vždy podtržený | * objekt je znázorněn podobně jako třída - obdélníkem, ale název objektu je vždy podtržený | ||
Řádek 235: | Řádek 241: | ||
* Alternativní scénáře | * Alternativní scénáře | ||
* Výstupní podmínky (např. Kniha byla zapůjčena, byl odeslán příkaz k výdeji) | * Výstupní podmínky (např. Kniha byla zapůjčena, byl odeslán příkaz k výdeji) | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_uc_scenarios.png}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:02_sin_uc_scenarios.png?400}} |
== Relace include vs. relace extend == | == Relace include vs. relace extend == | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:si_02_uc_extend_2.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:si_02_uc_extend_2.png?400|}} |
include | include | ||
Řádek 264: | Řádek 270: | ||
Diagramy stavů a diagramy aktivit jsou si podobné (oba ukazují sekvenci stavů, které nastávají v čase, a ukazují podmínky způsobující přechody mezi stavy). Rozdíl mezi těmito diagramy je však v tom, že d. stavů se soustřeďuje na stavy objektu (tj. objektu provádějícího výpočet či objektu, se kterým je výpočet prováděn), kdežto d. aktivit se zaměřuje na **stav samotného výpočtu** (stav procesu, algoritmu, ....), kde může být účastno i více objektů, a kde jsou znázorněny řídící a informační toky mezi prvky diagramu. | Diagramy stavů a diagramy aktivit jsou si podobné (oba ukazují sekvenci stavů, které nastávají v čase, a ukazují podmínky způsobující přechody mezi stavy). Rozdíl mezi těmito diagramy je však v tom, že d. stavů se soustřeďuje na stavy objektu (tj. objektu provádějícího výpočet či objektu, se kterým je výpočet prováděn), kdežto d. aktivit se zaměřuje na **stav samotného výpočtu** (stav procesu, algoritmu, ....), kde může být účastno i více objektů, a kde jsou znázorněny řídící a informační toky mezi prvky diagramu. | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-aktivit.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-aktivit.png?400|}} |
Na obrázku je příklad jednoduchého diagramu aktivit: | Na obrázku je příklad jednoduchého diagramu aktivit: | ||
* **aktivita** (activity) **vyřizování objednávek** je ta, která je zde modelována (pro znázornění, jak vlastně toto vyřizování objednávek probíhá) | * **aktivita** (activity) **vyřizování objednávek** je ta, která je zde modelována (pro znázornění, jak vlastně toto vyřizování objednávek probíhá) | ||
Řádek 287: | Řádek 293: | ||
Diagram obsahuje stavový stroj (state machine). Stavový stroj vyjadřuje stavy určitého objektu a přechody mezi těmito stavy. | Diagram obsahuje stavový stroj (state machine). Stavový stroj vyjadřuje stavy určitého objektu a přechody mezi těmito stavy. | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-stavu.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-stavu.png?300|}} |
Na obrázku je příklad jednoduchého diagramu stavového stroje : | Na obrázku je příklad jednoduchého diagramu stavového stroje : | ||
Řádek 320: | Řádek 326: | ||
Objekty si mohou posílat zprávy. Sekvenční diagram zobrazuje jejich časovou posloupnost. | Objekty si mohou posílat zprávy. Sekvenční diagram zobrazuje jejich časovou posloupnost. | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-sekvencni.png|}} | + | |
+ | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-sekvencni.png?450|}} | ||
Jedná se o jednoduchý sekvenční diagram. Časová osa je svislá (čas běží shora dolů), na vodorovné ose jsou rozmístěny objekty: | Jedná se o jednoduchý sekvenční diagram. Časová osa je svislá (čas běží shora dolů), na vodorovné ose jsou rozmístěny objekty: | ||
Řádek 345: | Řádek 352: | ||
Popis šipek: | Popis šipek: | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:si_02_sipky.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:si_02_sipky.png?250|}} |
==== diagram komunikace ==== | ==== diagram komunikace ==== | ||
Řádek 356: | Řádek 363: | ||
Objekty si mohou posílat zprávy. Diagram komunikací ukazuje objekty (přesněji : části kompozitní struktury nebo role ve spolupráci(collaboration)) a spojení a zprávy, které si objekty posílají. Čas zde nevystupuje jako zvláštní dimenze, proto musí být sekvence zpráv a spouběžnost threadů určena pomocí čísel sekvencí : | Objekty si mohou posílat zprávy. Diagram komunikací ukazuje objekty (přesněji : části kompozitní struktury nebo role ve spolupráci(collaboration)) a spojení a zprávy, které si objekty posílají. Čas zde nevystupuje jako zvláštní dimenze, proto musí být sekvence zpráv a spouběžnost threadů určena pomocí čísel sekvencí : | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-komunikaci.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-komunikaci.png?350|}} |
Jedná se o diagram komunikací odvozený z našeho jednoduchého sekvenčního diagramu | Jedná se o diagram komunikací odvozený z našeho jednoduchého sekvenčního diagramu | ||
Řádek 383: | Řádek 390: | ||
Diagram přehledu interakcí definuje interakce pomocí varianty diagramu aktivit : tato varianta zahrnuje fragmenty sekvenčních diagramů spolu s konstrukty pro řízení toku. | Diagram přehledu interakcí definuje interakce pomocí varianty diagramu aktivit : tato varianta zahrnuje fragmenty sekvenčních diagramů spolu s konstrukty pro řízení toku. | ||
- | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-interakci.png|}} | + | {{http://statnice.stm-wiki.cz/lib/exe/fetch.php?cache=&media=wiki:downloads:diagram-interakci.png?450|}} |
Diagram přehledu interakcí obsahuje jako své uzly interakce (online vložené interakční diagramy) a interaction use (ad interaction use viz sekvenční diagram) | Diagram přehledu interakcí obsahuje jako své uzly interakce (online vložené interakční diagramy) a interaction use (ad interaction use viz sekvenční diagram) |