1/11 Maturitní otázka z IDS- Jazyk UML
Josef Hladík V4C
Jazyk UML Unified Modeling Language Obsah Teorie……………………………………………………………………………………….. 2 Diagramy •
hierarchie procesů………………………………………………………………. 2
•
případů užití………………………………………………………………………. 2 o vkládání případů užití............................................................... 3 o rozšíření případů užití………………………………………………….. 5
•
stavové diagramy………………………………………………………………... 5 o doplnění informací ……………………………………………………… 6
•
objektová orientace- vysvětlení pojmů…..……………………………….10 o objekt………………………………………………………………………10 o abstrakce………………………………………………………………… 10 o dědičnost………………………………………………………………… 10 o polymorfizmus……………………………………………………………10 o zapouzdření……………………………………………………………… 10 o asociace……………………………………………………………………10 o agregace………………………………………………………………… 10 o znázornění třídy a objektu…………………………………………… 11 o doplňující informace……………………………………………………12
2/11 Maturitní otázka z IDS- Jazyk UML
Josef Hladík V4C
Teorie Snahou jazyka UML graficky popisuje objektově orientovanou analýzu. První verze tohoto jazyka vznikla v roce 1997, pod záštitou firmy Rational. Tento modelovací jazyk je souhrnem grafických notací k vyjádření analytických a návrhových modelů. Podlé mého názoru byly toto dva hlavní důvody jeho vzniku:
•
Práce, na kterých se podílí mnoho pracovníku, vyžaduje, aby byla prezentována v takové formě, aby projekt každý pracovník pochopil jako celek, i přestože bude pracovat pouze na některé z jeho částí.
•
Druhým, neméně důležitým důvodem byla snaha přiblížit zákazníkovy, jak bude jeho projekt vlastně pracovat. Rozhodně na zákazníka zapůsobí lépe přehledný obrázek s vysvětlením, než kousek zdrojového kódu a větou: tak toto je přihlášení v phpéčku. .
Víc k teorii nemá cenu, stejně to ani číst nikdo nebude….
Diagram hierarchie procesů Process Hierarchy Diagram
Tento diagram řeší procesní dekompozici systému a pomáhá v ujasnění rozsahu vyvíjeného systému a vzájemnou souvislost jednotlivých firemních procesů. Firemní proces je sekvence činností vytvářející produkt, který organizace potřebuje pro splnění svých cílu. Česky řečeno, tento diagram by měl zhruba zobrazovat rozsáhlost projektu, a spojitost mezi jednotlivými částmi.
Diagram případů užití Use case
Případy užití zachycují přesně funkčnost, která bude budoucím informačním systémem pokryta a vymezují tak jednoznačně rozsah prací. Diagram užití popisuje jednu požadovanou funkčnost systému. Systém nebude tedy obsahovat nic jiného, než popisují případy užití. Prostě v tomto diagramu bude všechno co váš systém umí. Dále byste měli vědět, kdo ne co(může to být i systém) je to Aktér. Zde je jeho stručný popis: • Všechny akce v systému jsou vyvolávány Aktéry • Pod aktérem si představíme externí objekt, který si vyměňuje informace se systémem
3/11 Maturitní otázka z IDS- Jazyk UML • •
Josef Hladík V4C
Aktér= uživatelská role vůči systému Aktér se v diagramech značí jako postavička
Takto by například vypadal diagram užití pracovníka sběrny
Odeslat zakázku do sběrny uživatel
Přijmout zakázku ze servisu
Uzavřít zakázku
Další příklad diagramu užití, by mohl vypadat takto:
Případ užití uživatel
uživatel
Shrnutí: Případ užití se soubor scénářů(sled jednotlivých kroků),inicializovaný entitou zvanou patricipant. Výstupem případu užití by měl být výsledek, ze kterého bude mít užitek on sám, nebo jiný patricipant. Patricipant může být osoba, systém, nebo uplynutí určitého času. S dalším pojmem se kterým se můžete setkat, je pojem vkládání případů užití. Vkládání případů užití se používat tehdy, kdy se nějaký případ užití opakuje. Nechtělo se mi nic nového vymýšlet, a tak jako příklad uvedu, žáky V4C velmi oblíbený příklad, s nápojovým automatem . Možná si někteří pamatují, že k tomuto automatu přistupují 3 patricipanti: Zákazník, doplňovatel a člověk, který vybírá peníze.
4/11 Maturitní otázka z IDS- Jazyk UML
Josef Hladík V4C
Zde se nám potvrdí ona červeně zvýrazněná věta : Výstupem případu užití by měl být výsledek, ze kterého…. Výstupem pro zákazníka je sice nepitelná, ale limonáda, pro doplňovatele je to dobrý pocit(později mizerná mzda) a pro kasaře jsou to peníze. My se budeme soustředit na poslední dva. Vezměme v úvahu, že oba musí vykonat několik stejných kroků. Oba musí nejprve odemknou zámek, a oddělat vrchní kryt. Potom si každý udělá svoji práci. Jeden doplní limonádu z Ukrajiny, a druhý vezme peníze. Potom musí oba udělat stejnou věc, a to že oba musí vrátit kryt, a oba musí tento kryt zajistit. Schválně jsem zdůraznil slovo oba. Podívejme se jak by to vypadalo v UML diagram
Nápojový automat
zákazník
Koupit limonádu
zákazník
Odkrýt <
>
dodavatel
Doplnění zásob
dodavatel
zakrýt <>>
výběrčí
<>
Výběrčí
odkrýt
výběrčí
Výběr peněz
zakrýt <>
Rozšíření případů užití Pamatujte si, že vkládaný případ užití nikdy neexistuje samostatně, ale vždy je součástí jiného případu užití. Vkládaný případ užití se znázorňuje přerušovanou šipkou.
Zde bohužel uvedu příklad na automat, protože se mi nechce nic vymýšlet. Vezměme si případ užití Doplnění zásob. Může se stát, že se v automatu vůbec nebude prodávat limonáda „Pštrosí moč“ , ale zato limonáda „Pepův elixír“ se bude prodávat velmi dobře. Tak
5/11 Maturitní otázka z IDS- Jazyk UML
Josef Hladík V4C
nás napadne, že místo obyčejného doplnění zásob, bychom chtěli doplňovat zásoby podle prodejnosti. Proto náš případ užití Doplnění zásob rozšíříme na Doplnění zásob podle prodejností. Rozšíření se provádí pomocí <>, my budeme používat anglický výraz <<extends>>.
Doplnění zásob Bod rozšíření
<<extends>>
<>
Otevření
<>
uzavření
Doplnění zásob podle prodejnosti
Praktické použití stavových diagramů Stavový diagram je mechanizmus, který nám pomáhá popsat systémové změny. Tyto změny mohou vzniknou například nějakou reakcí na událost, nebo také ubíháním času. Například: Půjdu ke Košťálovy ve špinavých botách jsem vyloučen. Reakcí na událost „Jdu v botách“ je změna stavu „Jsem student“ na stav „Jsem vyloučen“. Toto je příklad reakce na událost. Druhý příklad zabývající se plynutím času: Již 3 hodiny se učím Merge sort. Po dalších několika hodinách byste se s uplynutý časem dostaly ze stavu „Mám dobru náladu“ do stavu „Asi skočím pod vlak“. Samozřejmě může mít tuto časovou hranici každý jinou. Jiný asi lepší příklad na čas by bylo: Přihlášený uživatel je již 30 minut neaktivní. Ze stavu „Přihlášen“ ho systém uvede do stavu „Odhlášen“. Dalším známým příkladem muže být například to, že vás na www.wz.cz automaticky po 30 dnech vymaží s evidence, pokud se nepřihlásíte po tuto dobu. (To je docela kec, já tam nebyl půl roku a nic…) Veškerými změnami, kterými projde systém, se mohou zobrazit pomocí stavových diagramů. Zle jimi také vykreslit podmínky, za jakých se do těchto stavů dostanou, a také podmínky přechodů mezi jednotlivými stavy. Také je možno zadat počáteční a koncový stav každého objektu.
6/11 Maturitní otázka z IDS- Jazyk UML
Josef Hladík V4C
Toto je základní značka stavového diagramu
počátek konec stav Omlouvám se za ty nekvalitní diagramy, ve wordu se to moc dobře nekreslí. Jednotlivé stavy můžete doplnit od další informace. Jsou to: • Název stavu – název stavu je povinný • Stavové proměnné -nepovinný • Činnosti - nepovinný Na další stránce je ukázka toho jak by mohl fungovat takový fax. Má dva stavy. Buď se odesílá nějaký dokument, nebo jen tak stojí. Tyto stavy a jejich atributy jsou uvedeny na obrázku.
Vypadá to asi takto:
7/11 Maturitní otázka z IDS- Jazyk UML
Faxuje se Datum= aktuální datum Čas=čas začátku přenosu Telefonní číslo majitele Jméno majitele Vstup/zadání čísla stanice Výstup/dokončení přenosu Proveď/očísluj stánky Proveď/záznam o čase Proveď/ble ble… atd
Josef Hladík V4C
Název stavu
Stavové proměnné
činnosti
Flákám se Datum=aktuální datum Čas=aktuální čas Telefonní číslo=moje číslo Jméno=Leoš Hnědka Vstup/přenos dokumentu dokončen Výstup/začátek přenosu Proveď/ukazuj datum Proveď/ukazuj čas
Vstup/ akce- co se stane, když je spuštěn tento stav Výstup/akce co by mělo být výsledkem tohoto stavu Proveď- tyto akce se provádí během činnosti jednotlivých stavů Logičtější by bylo pořadí : 1. vstup,2. proveď, 3. výstup. Možná, se to takto zapisovat může, ale všude se to zakresluje v pořadí, v jakém to je zakresleno v diagramech. Další možnosti doplnění informací Další doplňující informace lze doplnit také k šípkám, která symbolizují přechody stavů.
8/11 Maturitní otázka z IDS- Jazyk UML
Josef Hladík V4C
Tento případ si ukážeme na dalším obrázku. Abych se to vzal jedním vrzem, zakreslím do toho to obrázku i další pojem a to Strážní podmínky. Příklad ukazuje, jak funguje spořič obrazovky.
Doplňující informace
Inicializace
Zapínání
Proveď/spusť systém
Pracuj, hrej, sleduj porno
vypnout
Vypni PC
Pohnuto myší, nebo stisk klávesy
[Uběhl nastavený čas] Šetření obrazovky
9/11 Maturitní otázka z IDS- Jazyk UML
Josef Hladík V4C
Objektová orientace Vysvětlení některých pojmů Základem objektové orientace je nečekaně…………………objekt. Jůůůů. Objekt by se dal specifikovat takto: Objekt - Nejdůležitější je fakt, že objekt je instancí třídy. Objekt se vyznačuje strukturou. Znamená to, že má atributy, a chování. Atributy jsou jeho vlastnosti, a chování je sled operací, které objekt provádí – prostě v OOP jsou to metody třídy. Dále si vysvětlíme některé pojmy. U matury by se to mohlo hodit, pokud víte houby jako já, tak to ukecáte alespoň těmito blbostmi. Abstrakce- znamená filtrování atributů a operací objektu, do té míry, než nám zbytou ty, které potřebujeme. Dědičnost- dědičnost používáme tehdy, pokud potřebujeme vytvořit objekt již existujícími vlastnostmi a metodami, ale chceme nějakou vlastnost nebo metodu přidat. Zděděná třída má tedy všechny vlastnosti děděné třídy. Polymorfizmus- některé operace u různých tříd mají stejné jméno. Otevřít dveře, otevřít okno atd. Pokaždé však provádíme jinou operaci. Každá třída ví, kterou operaci má udělat. Tomuto jevu se říká polymorfizmus.(Toto jsem nějak nepochopil) Zapouzdření- Každý objekt má své vlastnosti a metody. Ty jsou obsaženy uvnitř třídy. Jsou v ní zapouzdřeny. Znamená to, že vidíme, jak se objekt chová, ale nevidíme jak to děla, protože toto chování je zapouzdřené. Asociace – je informace o vztahu mezi objekty. Může být jednosměrná- zapnu rádio. Ale tím to hasne. Rádio jede, ať dělám cokoliv. Obousměrná asociace je např.: Jsme ženatý/moje vyvolená je vdaná. Když umřu tak už nebude vdaná, ale vdova. Agregace – je to jeden z typů asociace. Formou agregace může být kompozice. Kompozice vyžaduje silný vztah mezi agregátem, a jeho komponentami. Např.: Kompozice může být mezi Tělem a hlavou. Tělo bez hlavy je na nic.
10/11 Maturitní otázka z IDS- Jazyk UML
Josef Hladík V4C
Objektová orientace Vizualizace třídy a objektu -třídy se vykresluje jako obdélník s ostrými rohy. Pozor na stavy, které vypadají podobně, ale se vykreslují se oblými rohy.
User jméno : String příjmení:String věk :integer dement :boolean=0 vypišJméno() vypišPříjmení() vypišVěk() jeToDement()
Jméno třídy. První písmeno velké, pokud je název víceslovný, další slovo také velké. Např.: OsobníAutomobil Proměnné, neboli atributy. Začínají malým písmenem, ostatní slova velkým. Např.: rodnéČíslo Jednotlivé metody začínají malým, další slovo velkým. Za názvem se uvádějí závorky
Takto by vypadal zápis nového objektu uživatel1, který je instancí třídy User v Javě: User uživatel1=new User(); A takto by vypadal v UML:
uživatel1::User jméno = „Josef“ příjmení = „Hladík“ věk = 19 dement = true
názevObjektu:: Třída inicializace jednotlivých atributů
Ještě ve stručnosti proberu pojem balíček neboli package.Všichni zhruba víme co to jeurčuje se tehdy třída součástí balíčku. Např.: třídy Uklizečky,Manageři a Skladníci budou patřit do balíčku personál. Balíček se zakresluje takto:
personál
11/11 Maturitní otázka z IDS- Jazyk UML doplňující informace-připojují se pomocí poznámek. Viz obrázek
User jméno : String příjmení:String věk :integer dement :boolean=0 vypišJméno() vypišPříjmení() vypišVěk() jeToDement()
je-li atribut dement nastaven a true tak je uživatel dement
Josef Hladík V4C