unified modelling language sjednocený modelovací jazyk http://www.uml.org/ UML unified modelling language sjednocený modelovací jazyk
Co to je UML Základy OOA: UML spadá pod „objektové modelovací techniky“. Základy OOA: Abstrakce Dědičnost Polymorfismus Zapouzdření Posílání zpráv Asociace Agregace Booch, Rumbaugh, Jacobson
Z čeho se UML skládá? Předměty (things) Relace (relationships) Diagramy (diagrams)
Předměty (things) Strukturní Seskupení Behaviorální Poznámky strukturní abstrakce (structural things) : podstatná jména (modelu UML), tj. elementy : třída (class), rozhraní (interface), spolupráce (collaboration), případ užití (use-case), aktivní třída (active class), komponenta (component), uzel (node) chování (behavioral things) : slovesa (modelu UML), tj.: interakce (vztahují se ke komunikaci mezi objekty - např. zprávy (messages), spoje (links)) a stavový stroj (specifikuje sekvenci stavů objektu pomocí stavů, přechodů, událostí a aktivit) seskupení (grouping things) : balíčky (packages) seskupující (dle potřeby) prvky modelu poznámky (anotational things) : poznámky s přidanými informacemi
Relace (relationships) Závislost (dependency) : znázornění vztahu, kdy změnou v jednom elementu je ovlivněn jiný (závislý) element Asociace (association) : spojení definující vztah mezi elementy Zobecnění (generalization) : vztahy generalizace-specializace, tj. jeden element je specializací jiného elementu Realizace (realization) : jeden element je realizací jiného elementu relace (relationships), tj. elementy modelu spojující spolu dva (či více) předmětů - strukturních abstrakcí (také mohou spojovat seskupení); jejich typy jsou : závislost (dependency) : znázornění vztahu, kdy změnou v jednom elementu je ovlivněn jiný (závislý) element asociace (association) : spojení definující vztah mezi elementy zobecnění (generalization) : vztahy generalizace-specializace, tj. jeden element je specializací jiného elementu realizace (realization) : jeden element je realizací jiného elementu
Diagramy (diagrams) Diagram je jeden průhled, okénko, kterým se díváme na model. A model je schéma, kterým se díváme na realitu světa. Statické diagram tříd diagram komponent diagram nasazení Dynamické diagram případu použití sekvenční diagram diagram spolupráce stavový diagram diagram aktivit objektový diagram model je souhrn všech předmětů a relací, jejichž znázornění v jednom obrázku by bylo nepřehledné, mnohdy zcela nemožné; naproti tomu diagram je jeden průhled, okénko, kterým se díváme na model; diagramů je v UML několik typů, ale většinou máme v jednom projektu i vícero diagramů jenoho typu (ať už z důvodu velikosti modelu, nebo chceme v různých diagramech zobrazit pohled na systém z různých úhlů, či se v různých diagramech chceme zaměřit na různé aspekty modelovaného systému). Máme tedy devět diagramů ve dvou skupinách :
Diagramy UML http://cs.felk.cvut.cz/%7Ehrzinap/013DFA.htm
Use case diagram - diagram případů užití Zobrazuje chování systému (nebo jeho části) z hlediska uživatele
Class diagram - diagram tříd Zobrazuje statickou strukturu systému.
Objektový diagram Objektový diagram zobrazuje objekty a jejich spoje (links) v jednom okamžiku 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ý zápis c1:CKazeta značí objekt c1, který je instancí třídy CKazeta (obdobně je tomu s objekty c2 a c3) zápis :CRežisér značí tzv. anonymní objekt : nevíme, z jaké třídy je odvozen (nebo to autor věděl, ale chtěl záměrně znázornit, že objekt :CRežisér mohl vzniknout z různých tříd) třstí možnost zápisu by byla c4, tj. objekt bez vyznačení třídy spojení (link) mezi objekty vznikl jako instance asociace objekt :CRežisér je znázorněn v minimálním tvaru (jen jeho znázev), objekt c1:CKazeta je znázorněn s dalším oddílem (kompartment) ukazujícím aktuální hodnoty atributů u objektu c1 je vyznačena role - tj. ve vztahu anoanymního objektu :CRežisér versus c1:CKazeta hraje tato kazeta roli filmu (který byl režísrován spojeným obejktem- režisérem)
Sequence diagram - sekvenční diagram Objekty si mohou posílat zprávy. Sekvenční diagram zobrazuje jejich časovou posloupnost. Sekvenční diagram spolu s diagramem spolupráce (collaboration diagram) patří do skupiny interakčních diagramů (interaction diagrams). Tyto dva diagramy jsou téměř izomorfní - tj. dají se převádět z jednoho tvaru na druhý (často i automatizovaně). Použití sekvenčního diagramu bývá vhodnější v těch případech, kde jsou důležité časové souvislosti interakcí.
Collaboration diagram - diagram spolupráce Objekty si mohou posílat zprávy. Diagram spolupráce ukazuje objekty a spojení a zprávy, které si objekty posílají
State diagram - stavový diagram, diagram stavů a přechodů Používá se pro popis dynamického chování jednoho reaktivního objektu. Diagram obsahuje jeden stavový automat stav : situace, kdy modelovaný objekt splňuje nějakou podmínku, provádí nějakou operaci nebo čeká na událost - např. ve stavunarozený splňuje objekt podmínku, že mu není dosud 18 roků a čeká, až dosáhne plnoletosti přechod spojení mezi dvěma stavy; obsahuje elementy : událost(parametry)[podmínka]/akce, kde : událost (event trigger) : "příhoda", která může spustit přechod do jiného stavu parametry : daší hodnoty, které si sebou událost nese podmínka (guard) : booleovský výraz podmiňující přechod akc : další činnost přidružená k přechodu např. startování při automobilových soutěžích : změnaSemaforu(barva)[je na řadě]/rozjede : pokud semafor změní barvu a závodník je nařadě, tak se rozjede rozloučení ukazuje přechod do téhož stavu (něco význačného se stane, ale stav se nezmění) počáteční, finální stav : zvláštní pseudostavy pro počátek a konec automatu
Activity diagram - diagram aktivit Diagram aktivit je vlastně sociálním případem stavového diagramu - jeho visuální elementy jsou si podobné Používá se pro popis dynamických aspektů systému. Jde o jakýsi flowchart - znázorňuje tok řízení z aktivity do aktivity. Používané k modelování obchodních (business) procesů.
Component diagram - diagram komponent Komponenta je fyzická nahraditelná část systému, která obaluje implementaci a poskytuje realizaci množiny specifikovaných rozhraní. Diagram komponent znázorňuje softwarové komponenty použité v systému. Mohou to být jak komponenty vytvořené vlastními silami, tak komponenty zakoupené od třetích stran.
Deployment diagram - diagram nasazení Diagram nasazení ukazuje rozmístění zdrojů (např. HW) a softwarové komponenty, procesy a objekty, které na nich žijí Zde vidíme instance uzlů, tedy např. PocitacPavuse který je instancí typu uzlu PC, HP Unix databázový server atd. Také zde vidíme instance komponent, a na kterých kusech HW tyto komponenty běží. V těchto diagramech se velmi často používají stereotypy, a to tak, že mají přiřazen vlastní vizuální symbol - tedy např. tiskárna nevypadá jako krychle, ale opravdu nám připomíná tiskárnu, nebo server opravdu může vypadat jako schématické znázornění serveru. Pak jsou tyto diagramy přístupné i pro čtenáře, kteří naprosto neznají UML.
UML Sekvenční diagram
Etymologie Slovo sekvence je původně hudební termín, který vychází z lat. sequentia a označuje úryvek chrámové hudby, který následuje po evangeliu apod. Od lat. sequens = následující To od lat. sequi = následovat
Sequence diagram - sekvenční diagram Objekty si mohou posílat zprávy. Sekvenční diagram zobrazuje jejich časovou posloupnost. Sekvenční diagram spolu s diagramem spolupráce (collaboration diagram) patří do skupiny interakčních diagramů (interaction diagrams). Tyto dva diagramy jsou téměř izomorfní - tj. dají se převádět z jednoho tvaru na druhý (často i automatizovaně). Použití sekvenčního diagramu bývá vhodnější v těch případech, kde jsou důležité časové souvislosti interakcí.
Z čeho se skládá objekt se zobrazuje stejně, jako v objektovém diagramu (ovšem bez hodnot a atributů) čára života (lifeline) ukazuje, kdy objekt žije - v tomto diagramu všchny objekty existovaly už před posláním první zprávy, a dále existují po dokončení sekvenčního diagramu (resp. nevíme, kdy který objekt zanikne nebo nás to v tuto chvíli nezajímá) aktivita objektu (focus of control) ukazuje, kdy je který objekt aktivní zpráva : zde jednoduchá zpráva se zobrazuje plnou šipkou a má syntaxi návratováHodnota := (argument1, argument2, ....) návratováHodnota není povinná návratováHodnota může být v návratové zprávě : zobrazuje se čárkovnou šipkou (zde má název Return() ) POZOR : časová osa nemá měřítko - od délky obdélníku se nedá usuzovat na délky času ani na to, který čas bude delší či kratší
Zprávy Zpráva může být zaslaná mezi objekty, nebo objekt zašle zprávu sám sobě. Druhy zpráv: jednoduchá – přechod řízení z jednoho objektu na druhý synchronní – objekt čeká na odpověď, aniž by do té doby něco dělal asynchronní – objekt nečeká na odpověď a pokračuje ve své práci
Zakreslení zpráv jednoduchá synchronní asynchronní
Složitější funkce popisky lze vkládat vlevo, a ve směru časové osy - jde jen upřesňující/vysvětlucící text či označení bodů na časové ose, které lze pak využít v podmínkách a výrazech iterace : co má být iterováno je uzavřeno v obdélníku, iterační výraz je pod obdélníkem (zde *[dokud má host hlad] : hvězdička označuje iteraci, v hranatých závorkách je podmínka asynchronní zpráva je vyjádřena (prostou) šipkou: po zaslání této zprávy klient pokračuje dále ve zpracování (nemusí čekat, až server vrátí focus zpět), vlastně dojde k vytvoření nového vlákna vytvoření objektu je vyznačeno pozicí objektu (není umístěn nahoře, ale jeho čára života začíná níže na časové ose) a tím, že zpráva (v jejímž důsledku objěkt vznikl) vede přímo k objektu (namísto do jeho lifeline) uvolnění objektu je označeno křížkem podmínka [má peníze] : zpráva bude poslána jen tehdy, pokud bude podmínka splněna
Sekvenční diagram – příklad 1 Pro příklad operačního systému počítače vytvořte sekvenční diagram představující stisk klávesy v textovém editoru, který způsobí zobrazení tohoto znaku na obrazovce. Předpokládejte interakce mezi těmito objekty: GUI (grafické uživatelské rozhraní) OS (operační systém) CPU (procesor) Grafická karta Monitor
Příklad 1 - řešení
Sekvenční diagram – příklad 2 Vytvořte sekvenční diagram pro praní prádla v pračce. Předpokládejte interakce mezi těmito objekty: přívod vody buben odtok
Příklad 2 – sekvence kroků Voda se přívodní hadicí napustí do bubnu Buben se 5 min nebude pohybovat Voda se přestane napouštět Buben se bude asi 15 min otáčet oběma směry Voda s pracím práškem se vypustí Voda se znovu začne napouštět Buben se znovu otáčí oběma směry Voda z máchání se vypustí Buben se začne otáčet pouze jedním směrem a rychlost otáčení se na 5 min zvýší Buben se přestane otáčet, čímž praní končí
Příklad 2 - řešení
Sekvenční diagram – příklad 3 Vytvořte sekvenční diagram pro nákup nápoje v automatu. Předpokládejte, že se automat skládá z těchto čtyř objektů: Zákazník Ovládací panel Pokladna Výdejník
Příklad 3 – sekvence kroků Zákazník vhodí mince do otvoru v ovládacím panelu Zákazník si vybere druh nápoje Peníze propadnou do pokladny Pokladna předá na výdejník pokyn pro vydání nápoje Výdejník vydá nápoj
Příklad 3 - řešení
Příklad 3 – scénář 2 Pro případ nápojového automatu uvažujte scénář, v němž zákazník nemá správný obnos. Pokladna zkontroluje, zda množství vhozených mincí odpovídá ceně nápoje Pokud je vhozená částka vyšší, vyplatí pokladna rozdíl
Scénář 2 - řešení
Příklad 3 – scénář 3 Pro případ nápojového automatu uvažujte scénář, kdy je požadovaný druh nápoje vyprodán. Poté, co zákazník zvolí vyprodaný druh, automat vypíše zprávu Vyprodáno Automat čeká na volbu jiného druhu nápoje
Scénář 3 - řešení