ˇ ´IRODOVEDECK ˇ ´ FAKULTA UNIVERZITY PALACKEHO ´ PR A KATEDRA INFORMATIKY
´ RSK ˇ ´ PRACE ´ BAKALA A
Diagramy chovan´ı jazyka UML
2014
Pavel Zehnula
Anotace Pr´ace popisuje tvorbu jednoduch´eho editoru UML diagram˚ u. V editoru je moˇzn´e vytvoˇrit diagram tˇr´ıd, stavov´y diagram, sekvenˇcn´ı diagram a diagram spolupr´ace. Editor umoˇzn ˇuje ukl´adat diagramy do XML a z diagramu tˇr´ıd je schopen pomoc´ı jednoduch´eho algoritmu vytvoˇrit z´aklad diagramu spolupr´ace, nebo z´aklad sekvenˇcn´ıho diagramu.
Chtˇel bych podˇekovat sv´emu vedouc´ımu, panu RNDr. Arnoˇstu Veˇcerkovi, za veden´ı a konstruktivn´ı pˇripom´ınky k m´e pr´aci.
Obsah ´ 1. Uvod 2. Jazyk UML 2.1. Diagram tˇr´ıd . . . . 2.1.1. Asociace . . . 2.1.2. Generalizace . 2.1.3. Agregace . . . 2.1.4. Kompozice . . 2.1.5. Realizace . . 2.2. Stavov´ y diagram . . 2.2.1. Stav . . . . . 2.2.2. Pˇrechod . . . 2.2.3. Sloˇzen´e stavy 2.3. Diagram spolupr´ace . 2.4. Sekvenˇcn´ı diagram . 2.4.1. Uzel . . . . . 2.4.2. Zpr´avy . . . .
8
. . . . . . . . . . . . . .
9 10 11 11 12 12 13 14 14 14 15 16 17 18 18
3. Software pro tvorbu UML 3.1. Aplikace Enterprise Architect . . . . . . . . . . . . . . . . . . . 3.2. Srovn´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19 20 21
4. Popis algoritmu 4.1. Slovn´ı popis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22 22 23
5. Tvorba aplikace a pouˇ zit´ e technologie 5.1. Jazyk C# a platforma .NET . . . . . . 5.2. Windows Presentation Foundation . . . 5.3. DataTemplate . . . . . . . . . . . . . . 5.4. Strukt˚ ura aplikace . . . . . . . . . . . 5.5. J´adro aplikace . . . . . . . . . . . . . . 5.6. Logick´a ˇca´st aplikace . . . . . . . . . . 5.7. Grafick´a ˇca´st aplikace . . . . . . . . . .
. . . . . . .
24 24 24 24 25 26 27 28
. . . . .
29 30 32 33 33 33
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
6. Uˇ zivatelsk´ a dokumentace 6.1. Pracovn´ı plocha . . . . . 6.2. Menu . . . . . . . . . . . 6.3. Tvorba diagramu tˇr´ıd . . 6.3.1. Tˇr´ıda . . . . . . . 6.3.2. Vazby . . . . . .
. . . . . . . . . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . .
4
. . . . . . . . . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
. . . . . . . . . . . . . .
. . . . . . .
. . . . .
7. Z´ avˇ er
34
Reference
35
8. Obsah pˇ riloˇ zen´ eho CD
36
5
Seznam obr´ azk˚ u 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Uk´azka diagramu tˇr´ıd. . . . . . . Uk´azka stavov´eho diagramu. . . . Uk´azka diagramu spolupr´ace. . . Uk´azka diagramu spolupr´ace. . . Diagram algoritmu. . . . . . . . . Struktura aplikace. . . . . . . . . J´adro aplikace. . . . . . . . . . . Implementace jednotliv´ ych uzl˚ u. . Implementace jednotliv´ ych vazeb. Implementace grafick´e vrstvy. . . V´ ychoz´ı okno aplikace. . . . . . . Tvorba atributu. . . . . . . . . . Tvorba operace. . . . . . . . . . . Export diagramu. . . . . . . . . .
6
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
13 15 16 18 23 25 26 27 27 28 29 30 31 32
Seznam tabulek
7
1.
´ Uvod
Prvn´ı ˇc´ast pr´ace tvoˇr´ı popis digram˚ u grafick´eho jazyka UML, kter´ y slouˇz´ı pro vizializaci, specifikaci, navrhov´an´ı a dokumentaci programov´ ych syst´em˚ u. Tento jazyk m˚ uˇze usnadnit n´avrh a v´ yvoj informaˇcn´ıho syst´emu. V dalˇs´ı ˇca´sti pr´ace jsou pˇredsatveny jiˇz existuj´ıc´ı editory pro pr´aci s UML. Ve druh´e ˇc´asti je pops´an jednoduch´ y editor pro tvorbu a editaci vybran´ ych diagram˚ u jazyka UML. Z´akladn´ım diagramem je diagram tˇr´ıd. Po vytvoˇren´ı nebo naˇcten´ı toho diagramu bude uˇzivatel moci informace, jako napˇr´ıklad informace o tˇr´ıd´ach, operac´ıch, atributech, pouˇz´ıt k tvorbˇe digramu sekvenˇcn´ıho nebo diagramu spolupr´ace.
8
2.
Jazyk UML
S rozˇsiˇruj´ıc´ım se pouˇz´ıv´an´ım objektovˇe orientovan´eho programov´an´ı bylo nutn´e tyto vztahy mezi jednotliv´ ymi objekty nˇejak´ ym zp˚ usobem zachytit a zn´azornit. Vzniklo mnoho metodik a zp˚ usob˚ u. V pr˚ ubˇehu 90. let se se podaˇrilo sjednotit tyto zp˚ usoby a vznikl standard UML. Tak´e vzniklo mezin´arodn´ı konsorcium OMG (Object Management Group), kter´e na specifikace UML dohl´ıˇz´ı. Tato pr´ace se zab´ yv´a ˇca´st´ı toho standardu a tou jsou diagramy. Konkr´etnˇe se bude jednat o diagram tˇr´ıd, stavov´ y digram, diagram spolupr´ace a sekvenˇcn´ı diagram.
9
2.1.
Diagram tˇ r´ıd
Diagram tˇr´ıd patˇr´ı do skupiny struktur´aln´ıch diagram˚ u. Pˇredstavuje n´ahled na modelovan´ y syst´em a jeho hlavn´ım u ´kolem je zobrazit strukturu navrhovan´eho syst´emu. Zn´azorˇ nuje typy objekt˚ u nach´azej´ıc´ı se v navrhovan´em syst´emu a jejich vz´ajemn´e vztahy. Tvorba tohoto diagramu patˇr´ı k jedn´e z prvn´ıch a z´akladn´ıch f´az´ı v´ yvoje softwaru. Pr´avˇe d´ıky tomu, ˇze diagram zachycuje celou strukturu syst´emu, je velmi uˇziteˇcn´ y i pro zpˇetnou u ´pravu syst´emu. Pˇri tvorbˇe diagramu je nutn´e urˇcit jeho hlavn´ı u ´ˇcel. Existuj´ı 3 u ´rovnˇe diagramu tˇr´ıd, a to konceptu´aln´ı model, designov´ y model a implementaˇcn´ı model. Konceptu´aln´ı model je pouˇz´ıv´an k prvotn´ımu n´avrhu softwaru. Obsahuje pouze tˇr´ıdy charakterizuj´ıc´ı hlavn´ı a nejproblematiˇctˇejˇs´ı ˇc´ast aplikace, tzv. byznys tˇr´ıdy (busines classes). Pˇri tvorbˇe uzl˚ u se vˇetˇsinou vypisuj´ı jen nazvy tˇr´ıd, popˇr´ıpadˇe duleˇzit´e atributy ˇci metody tˇechto tˇr´ıd. Hlavn´ı ˇca´st tohoto typu diagramu tvoˇr´ı relace, kter´e charakterizuj´ı vztahy mezi tˇemito stˇeˇzejn´ımi ˇca´stmi aplikace. Designov´ y model (model n´avrhu) navazuje, rozˇsiˇrujea zpˇresˇ nuje pˇredchoz´ı konceptu´aln´ı model. Pˇrid´av´a do modelu informace o datov´ ych typech atribut˚ u a metod a jejich viditelnosti. Model je doplnˇen o tˇr´ıdy straj´ıc´ı se o uˇzivatelsk´e rozhran´ı (presentation classes) a syst´emov´e ud´alosti (control classes). Implementaˇcn´ı model jiˇz obsahuje veˇsker´e implementaˇcn´ı charakteristiky dan´eho softwaru. V ˇradˇe program˚ u pro tvorbu tˇechto diagram˚ u je moˇzn´e nechat si vygenerovat k´od konkr´etn´ıho jazyka.
10
2.1.1.
Asociace
Jak jiˇz bylo ˇreˇceno, diagram je tvoˇren uzly a vazbami mezi tˇemito uzly. Asociace patˇr´ı mezi z´akladn´ı vazby diagramu tˇr´ıd. Jedn´a se vztah mezi dvˇema uzly, kt´er´e mohou existovat nez´avisle na sobˇe. Asociace ud´av´a, ˇze uzly jsou schopny spolu komunikovat (uchov´av´aj´ı odkazy na sebe). M˚ uˇzeme pouˇz´ıt obousmˇernou asociaci, kde o sobˇe v´ı oba uzly, nebo pouˇz´ıt jednosmˇernou, kde jeden z uzl˚ u nem´a o druh´em tuˇsen´ı. Asociace se v diagramu zn´azorˇ nuje plnou ˇcarou, pˇr´ıpadnˇe jednosmˇernou se ˇsipkou v pˇr´ısluˇsn´em smˇeru. 2.1.2.
Generalizace
Generalizace, neboli dˇediˇcnost, je jednou ze z´akladn´ıch vlastnost´ı a v´ yhod objektov´eho orientovan´eho programov´an´ı. Jedn´a se o vztah potomek-pˇredek. V pˇredku definujeme obecn´e chov´an´ı a vlastnosti pro vˇsechny potomky, kteˇr´ı jiˇz nemus´ı toto chov´an´ı definovat. Tato vlastnost znaˇcn´ ym zp˚ usobem ˇsetˇr´ı ˇcas a udrˇzuje program pˇrehledn´ ym. V diagramu je dˇediˇcnost zn´azornˇena plnou ˇsipkou od potomka k pˇredkovi.
11
2.1.3.
Agregace
Agregace sloˇz´ı k zn´azonˇen´ı vazby ˇca´st-celek. Ve vˇetˇsinˇe pˇr´ıpad˚ u je celek urˇcit´ ym druhem kolekce osahuj´ıc´ı objekty urˇcit´eho typu. V diagramu je agregace zn´azornˇena plnou ˇcarou s pr´azdn´ ym kosoˇctvercem na stranˇe uzlu, kter´ y zn´azorˇ nuje celek. 2.1.4.
Kompozice
Kompozice je silnˇejˇs´ı vztah neˇz v pˇr´ıpadˇe agregace. Stejnˇe jako v pˇr´ıpadˇe agregace se jedn´a o vztah ˇc´ast-celek. Narozd´ıl od agregace, ale ˇc´asti nemohou existovat mimo celek. V diagramu je kompozice zn´azornˇena plnou ˇcarou s pln´ ym kosoˇctvercem na stranˇe uzlu, kter´ y zn´azorˇ nuje celek.
12
2.1.5.
Realizace
Posledn´ı vazbou, kterou pop´ıˇseme, je realizace. Tato vazba se pouˇz´ıva aˇz v implementaˇcn´ım modelu. Popisuje vztah mezi rozhran´ım, kter´e je v diagramu zn´azornˇeno jako uzel s tak zvan´ ym stereotypem. Stereotyp je uveden ve ˇspiˇcat´ ych z´avork´ach nad n´azvem uzlu. Vazba n´am ˇr´ık´a, ˇze uzel implementuje dan´e rozhran´ı. V diagramu je realizace zn´azornˇena ˇca´rkovanou ˇcarou se ˇsipkou od uzlu k rozhran´ı.
Obr´azek 1. Uk´azka diagramu tˇr´ıd.
13
2.2.
Stavov´ y diagram
Stavov´ y diagram patˇr´ı do skupiny diagram˚ u chov´an´ı. Jak jiˇz z n´azvu vypl´ yv´a, diagram zachycuje stavy vybran´eho objektu ˇci cel´e aplikace. Stavov´ y diagram, jak jiˇz n´azev napov´ıd´a, je tvoˇren jednotliv´ ymi stavy (uzly). Mezi tˇemito uzly jsou definov´ana propojen´ı - pˇrechody. Na z´akladˇe ud´alost´ı a pomoc´ı tˇechto pˇrechod˚ u je moˇzno zjistit, ve kter´em stavu se sledovan´ y objekt nach´az´ı. Stavov´ y diagram je v podstatˇe koneˇcn´ y automat. Stejnˇe jako v automatu se i v diagramu nach´az´ı startovac´ı uzel a jeden ˇci v´ıce uzl˚ u koncov´ ych. 2.2.1.
Stav
Stav zn´azorˇ nuje trv´an´ı nastaven´ı syst´emu, nebo stav objektu. Stavem m˚ uˇze b´ yt oznaˇcena situace, kdy objekt ˇcek´a na spuˇstˇen´ı ud´alosti, nebo se objekt nˇejak´ ym zp˚ usoben chov´a. Ve stavov´em diagramu jsou stavy zn´azornˇeny obd´eln´ıky se zaoblen´ ymi rohy a popisem stavu uvnitˇr. Poˇca´teˇcn´ı stav je zn´azornˇen ˇcern´ ym koleˇckem. Teto stav se v diagramu m˚ uˇze vyskytnout pouze jednou. Koncov´ y stav, zn´azornˇen ˇcern´ ym koleˇckem s b´ıl´ ymi okraji, se v diagramu m˚ uˇze vyskytovat v´ıcekr´at. 2.2.2.
Pˇ rechod
Zn´azorˇ nuje spojen´ı dvou stav˚ u v diagramu. Smˇeˇruje od zdrojov´eho stavu k c´ılov´emu. Tyto pˇrechody mohou b´ yt doplnˇeny o popis pˇrechodu. Syntaxe toho popisu je Ud´alost [podm´ınka] / Akce.
14
2.2.3.
Sloˇ zen´ e stavy
Stavy mohou obsahovat jeden, nebo v´ıce vnoˇren´ ych stavov´ ych diagram˚ u. Vnoˇren´e stavy dˇed´ı vˇsechny pˇrechody sv´ ych nadstav˚ u. Pokud tedy sloˇzen´ y stav obsahuje pˇrechod, znamen´a to, ˇze vˇsechny vnoˇren´e stavy tento pˇrechod obsahuj´ı tak´e. D´alˇs´ı v´ yhodou je znovupouˇzitelnost tohoto podstavu. Pˇr´ıkladem m˚ uˇze byt tˇreba zpracov´an´ı objedn´avky, kter´e m˚ uˇze b´ yt spoleˇcn´e pro v´ıce syst´em˚ u.
Obr´azek 2. Uk´azka stavov´eho diagramu.
15
2.3.
Diagram spolupr´ ace
Diagram spolupr´ace patˇr´ı do skupiny interakˇcn´ıch diagram˚ u. Spolu se sekvenˇcn´ım diagramem, o kter´em budeme mluvit n´ıˇze, jsou vz´ajemnˇe izomorfn´ı, coˇz znamen´a, ˇze je m˚ uˇzeme vz´ajemnˇe pˇrev´adˇet mezi sebou. Kaˇzd´ y z tˇechto dvou diagram˚ u klade jin´ y d˚ uraz na zobrazovan´e skuteˇcnosti. V diagramu se vyskytuj´ı jako uzly jednotliv´e objekty syst´emu. U diagramu spolupr´ace je kladen d˚ uraz na to, jak´ y objekt s jak´ ym objektem komunikuje. V tomto diagramu, narozd´ıl od sekveˇcn´ıho diagramu, nen´ı moˇzn´e zjistit ˇcasov´e z´avislosti pos´ılan´ ych zpr´av. Jak jiˇz bylo ˇreˇceno, diagram tvoˇr´ı uzly zn´azorˇ nuj´ıc´ı objekty a vazby, kter´e symbolizuj´ı pos´ılan´e zpr´avy. Poslan´a zpr´ava se nap´ıˇse nad vazbu spolu se sv´ ymi argumenty, stejnˇe jako vol´an´ı metody v programu. V pˇr´ıpadˇe pos´ıl´an´ı v´ıce r˚ uzn´ ych zpr´av stejn´emu objektu se pouˇz´ıv´a poˇr´ad jedna a ta sam´a vazba a tyto zpr´avy se piˇs´ı pod sebe s ˇc´ıseln´ ym oznaˇcen´ım.
Obr´azek 3. Uk´azka diagramu spolupr´ace.
16
2.4.
Sekvenˇ cn´ı diagram
Sekvenˇcn´ı diagram je dalˇs´ı digramem ze skupiny interakˇcn´ıch diagram˚ u. Jak jiˇz bylo ˇreˇceno v´ yˇse, s diagramem spolupr´ace jsou vz´ajemnˇe izomorfn´ı. V tomto typu diagramu opˇet pracujeme s objekty a jejich vz´ajemn´ ym vymˇen ˇov´an´ım zpr´av. D˚ uleˇzitou souˇca´st´ı diagramu je tzv. ˇc´ara ˇzivota jednotliv´ ych objekt˚ u, pomoc´ı kter´e m˚ uˇzeme sledovat aktivn´ı dobu ˇzivota objektu vzhledem k ostatn´ım objekt˚ um. Na rozd´ıl od diagramu spolupr´ace jsou zde zpr´avy zobrazov´any jednotlivˇe a jsou definov´any pomoc´ı specifikace r˚ uzn´e druhy zpr´av, jako synchoronn´ı ˇci ’ asynchronn´ı zpr´ava, nebo odpovˇed .
17
2.4.1.
Uzel
Uzel, jak jiˇz bylo ˇreˇceno, je zn´azornˇen´ı instance dan´e tˇr´ıdy. V diagramu je zn´azornˇen jako obdeln´ık, ze kter´eho vych´az´ı dlouh´a ˇca´ra zn´azorˇ nuj´ıc´ı ˇzivot objektu. Speci´aln´ım typem uzlu je uˇzivatel, kter´ y je zn´azornˇen obr´azkem pan´aˇcka. 2.4.2.
Zpr´ avy
Zpr´avy m˚ uˇzeme rozdˇelit na synchronn´ı a asynchrnonn´ı. Synchronn´ı zpr´ava objekt poˇsle jin´emu a ˇcek´a na odpovˇed’. Po obdrˇzen´ı odpovˇedi pokraˇcuje d´al. Naproti tomu zpr´avu asynchronn´ı objekt odeˇsle a pokraˇcuje d´al. Odpovˇed’ je specifick´ y typ zpr´avy poslan´ y objektu jako odpovˇed’ na pˇredchoz´ı zpr´avu. Synchronn´ı zpr´ava je v diagramu zobrazena jako pln´a ˇca´ra s nevyplnˇen´ ym troj´ uheln´ıkem na konci. Synchronn´ı zpr´ava je v diagramu zobrazena jako pln´a ˇc´ara s vyplnˇen´ ym troj´ uheln´ıkem na konci. Odpovˇed’ zn´azorˇ nujeme ˇc´arkovanou ˇcarou s nevyplnˇen´ ym troj´ uheln´ıkem na konci.
Obr´azek 4. Uk´azka diagramu spolupr´ace.
18
3.
Software pro tvorbu UML
Existuje mnoho softwaru pro tvorbu diagram˚ u UML. Liˇs´ı se nab´ızen´ ymi funkcemi a n´astroji pro pr´aci s UML. Nˇekter´e nab´ızej´ı pouze moˇznost tvorby diagram˚ u, jin´e slouˇz´ı projektov´ ym manager˚ um pro ˇr´ızen´ı projektu, dalˇs´ı mohou nab´ızet funkce reverzn´ıho inˇzen´ yrstv´ı. Zde bych vyzdvyhnul jeden software, kter´ y dle m´eho n´azoru, patˇr´ı k nejlepˇs´ım. Tento software je rozs´ahl´ y a zastˇreˇsuje v´ yˇse uveden´e funkce a mnoh´e dalˇs´ı.
19
3.1.
Aplikace Enterprise Architect
Enteprise Architect je n´astroj pro tvorbu model˚ u zaloˇzen´ ych syntaxi jazyka UML. Program je ovˇenˇcen mnoha ocenˇen´ımi z prestiˇzn´ıch ˇcasopis˚ u a soutˇeˇz´ı. Nab´ız´ı kvalitn´ı a vysoce v´ ykonn´e vizu´aln´ı prostˇred´ı pro ˇr´ızen´ı poˇzadavk˚ u, strategick´e a business modelov´an´ı (procesy, role, rizika apod.), n´avrh enterprise architektury a syst´emovou anal´ yzu. V dneˇsn´ı dobˇe m´a Enterprise Architect jiˇz v´ıce neˇz 250 tis´ıc instalac´ı po cel´em svˇetˇe a je podporov´an 230 partnery ve 160 zem´ıch. Je ˇsiroce pouˇz´ıv´an v takov´ ych ’ oblastech, jako je napˇr´ıklad zdravotn´ı p´eˇce, letectv´ı, bankovnictv´ı, pojiˇst ovnictv´ı, automobilov´ y pr˚ umysl, obrana nebo st´atn´ı spr´ava.
20
3.2.
Srovn´ an´ı
Jedinou v´ yhodou, kterou m´a aplikace nab´ız´ı, je jej´ı jednoduchost a intuitivn´ı ovl´adan´ı. Je to zp˚ usobeno mal´ ym poˇctem moˇznost´ı a n´astroj˚ u v aplikaci. Moje aplikace je vyhrazena na pouze na n´avrh aplikace, narozd´ıl od aplikace Enterprise Architect, kter´a je mnohem komplexnˇejˇs´ı, a t´ım i sloˇzitˇejˇs´ı na pouˇz´ıvan´ı.
21
4.
Popis algoritmu
V t´eto sekci pop´ıˇsi jednoduch´ y algoritmus pouˇz´ıvan´ y v m´em programu k pˇrevodu diagram˚ u.
4.1.
Slovn´ı popis
Tento algoritmus slouˇz´ı k pˇrevodu, nebo sp´ıˇse ke generov´an´ı sekvenˇcn´ıho digramu, nebo diagramu spolupr´ace pomoc´ı dˇr´ıve definovan´eho diagramu tˇr´ıd. Mˇejme vytvoˇren´ y diagram tˇr´ıd obsahuj´ıc´ı uzly rozhran´ı, tˇr´ıdy, enumer´atory a vazby veden´e mezi tˇemito uzly jako jsou asociace, generalizace, agregace, kompozice. Pˇrevodn´ı metoda editoru nejprve nab´ıdne uˇzivateli, aby si zvolil, kter´e tˇr´ıdy se budou u ´ˇcastnit generov´an´ı, protoˇze ne vˇzdy je ˇz´adouc´ı pouˇz´ıt vˇsechny uzly z p˚ uvodn´ıho diagramu. N´aslednˇe projde podmnoˇzinu vybran´ ych uzl˚ u a zamˇeˇr´ı se na vazby typu asociace. Jin´e typy vazeb v generovan´em diagramu nepouˇzijeme, protoˇze se pˇr´ımo nev´aˇz´ı ke vz´ajemn´e komunikaci objekt˚ u. Program vygeneruje nov´ y uzel pro kaˇzdou vybranou tˇr´ıdu. N´aslednˇe projde vˇsechny vazby v pˇredchoz´ım diagramu a pokud existuje asociace mezi dvˇema uzly s podmnoˇziny vybran´ ych uzl˚ u, vytvoˇr´ı novou vazbu mezi nov´ ymi uzly reprezentuj´ıc´ı p˚ uvodn´ı uzly tˇr´ıd. Takto program postupuje pˇri generov´an´ı diagramu spolupr´ace. Pˇri generov´an´ı sekvenˇcn´ıho diagramu, ale nen´ı moˇzn´e poznat i ˇcasovou z´avislost vazeb mezi objekty, se kterou tento diagram pracuje. V d˚ usledku toho, novˇe vygenerovan´ y diagram obsahuje pouze uzly reprezentuj´ıc´ı objekty vybran´ ych tˇr´ıd v p˚ uvodn´ım diagramu. Informace o vazb´ach jsou k dispozici pˇri tvorbˇe nov´ ych vazeb v tomto diagramu. Uˇzivatel tedy jen urˇc´ı, kdy ke zpr´avˇe doˇslo.
22
4.2.
Diagram
Obr´azek 5. Diagram algoritmu.
23
5. 5.1.
Tvorba aplikace a pouˇ zit´ e technologie Jazyk C# a platforma .NET
Tato aplikace je naps´ana v programovac´ım jazyce C# v prostˇred´ı .NET. C# je objektovˇe orientovan´ y jazyk, vyvinut´ y spoleˇcnost´ı Microsoft. Tento jazyk jsem zvolil z d˚ uvodu jeho pokroˇcil´e znalosti a v dobˇe zaˇc´atku psan´ı aplikace jsem jin´ y jazyk neovl´adal. Ze zvolen´ ych technologii vypl´ yv´a, ˇze tato aplikace je prim´arnˇe urˇcena pro poˇc´ıtaˇce s operaˇcn´ım syst´emem Windows.
5.2.
Windows Presentation Foundation
Technologie WPF je urˇcena k tvorbˇe uˇzivatelsk´ ych rozhran´ı. Za pomoci t´eto technologie je moˇzn´e doc´ılit daleko rozmanitˇejˇs´ıho prostˇred´ı aplikace. Hlavn´ım d˚ uvodem volby t´eto technologie byla snaha si ji osvojit, protoˇze se stav´a ˇc´ım d´al v´ıce pouˇz´ıvanou. Technologie WPF pouˇz´ıv´a znaˇckovac´ı jazyk Extensible Application Markup Language (XAML) vych´azej´ıc´ı z XML. Nejvˇetˇs´ı v´ yhodou tˇechto technologi´ı je oddˇelen´ı grafick´e a logick´e ˇca´sti aplikace. V jazyce XAML nadefinujete grafickou ˇc´ast aplikace a vytvoˇr´ıte ud´alosti, kter´e n´aslednˇe na druh´e stranˇe obslouˇz´ıte v logick´e ˇc´asti.
5.3.
DataTemplate
Ve WPF m´a kaˇzd´ y objekt sv´e z´akladn´ı zobrazen´ı. Pomoc´ı Template je moˇzn´e vzhled cel´eho prvku kompletnˇe pˇrepsat. V m´e aplikaci vyuˇz´ıv´am DataTemplate, kter´a slouˇz´ı jako datov´a ˇsablona pro objekty a lze v n´ı pouˇz´ıvat Data Binding.
24
5.4.
Strukt˚ ura aplikace
Aplikace je rozdˇelena do tˇr´ı vstev. Nejedn´a se pˇr´ımo o model MVC, protoˇze aplikace nepracuje a nez´ısk´av´a data z extern´ıch zdroj˚ u, jak´ ymi jsou napˇr´ıklad datab´aze. Nejniˇzˇs´ı vrstvu tvoˇr´ı abstraktn´ı tˇr´ıdy popisuj´ıc´ı z´akladn´ı chov´an´ı vykreslovan´ ych objek˚ u v aplikaci. Implementaˇcn´ı vrstva je ˇc´ast aplikace, ve kter´e si jiˇz implementuj´ı tˇr´ıdy a metody pro konkr´etn´ı diagramy, kter´e se vyskytuj´ı v aplikaci. Grafick´a vrstva je jiˇz pouze zobrazen´ı vytvoˇren´ ych objekt˚ u niˇzˇs´ıch vrstev a jejich vykreslen´ı. Do t´eto vrstvy patˇr´ı veˇsker´ y k´od napsan´ y v jazyce XAML. • J´adro aplikace • Implementaˇcn´ı vrstva • Grafick´a vrstva
Obr´azek 6. Struktura aplikace.
25
5.5.
J´ adro aplikace
Z´aklad j´adra aplikace tvoˇr´ı potomci z´akladn´ı abstraktn´ı tˇr´ıdy GraficsItem, kter´a charakterizuje a zapouzdˇruje z´akladn´ı vlastnosti a metody jednotliv´ ych grafick´ ych objekt˚ u v m´e aplikaci. Mezi tyto z´akladn´ı vlastnosti patˇr´ı napˇr´ıklad: • jednoznaˇcn´ y identifik´ator napˇr´ıˇc cel´ ym syst´emem, • v´ yˇska a ˇs´ıˇrka objektu, • pozice objektu na vykreslovac´ı ploˇse, • dopoˇc´ıtan´ y stˇred objektu pomoc´ı v´ yˇsky a ˇs´ırky, • mnoˇzinu bod˚ u slouˇz´ıc´ıch pro urˇcen´ı m´ıst pro nataˇzen´ı vazeb, • a mnoh´e jin´e... Dalˇs´ımi abstraktn´ımi tˇr´ıdami dˇed´ıc´ıch z tˇr´ıdy GraficsItem jsou BaseNode a Relation. Tˇr´ıda BaseNode zapouzdˇruje z´akladn´ı metody pro pr´aci s ulzy v grafick´em editoru, jako napˇr´ıklad pohyb. Tato tˇr´ıda implementuje z´akladn´ı metodu pro uloˇzen´ı objektu do XML, o kter´e bude ˇreˇc d´ale. Tˇr´ıda Relation je spoleˇcn´ ym pˇredkem vˇsech vazeb, vyskytuj´ıc´ıch se programu. Obsahuje informace o orientaci vazby, c´ılov´em a zdrojov´em uzlu, a dalˇs´ı.
Obr´azek 7. J´adro aplikace.
26
5.6.
Logick´ aˇ c´ ast aplikace
V t´eto ˇc´asti aplikace doch´az´ı ke konkr´etn´ı implementaci jednotliv´ ych diagram˚ u. Zakladn´ı tˇr´ıdy jako BaseNode jsou rozˇsirov´any o dalˇs´ı funkcionalitu. Napˇr´ıklad u diagramu tˇr´ıd doch´az´ı k pˇrid´an´ı metod a atribut˚ u pro pr´aci s vlastnostmi a operacemi konkr´etn´ıho uzlu. V t´eto vrstvˇe se rozˇsiˇruje i tˇr´ıda Relation. Vznikaj´ı nov´e tˇr´ıdy charakterizuj´ıc´ı vazby typu asociace, generalizace, realizace, kompozice a agregace. Zvl´aˇst tˇr´ıda Association je hojnˇe vyuˇz´ıvan´a v ostatn´ıch typech diagram˚ u. Ned´ılnou souˇca´st´ı logick´e ˇca´sti aplikace je statick´a factory tˇr´ıda Manager poskytuj´ıc´ı metody pro tvorbu instanc´ı jednotliv´ ych objekt˚ u diagramu. Obsahuje informace o pr´avˇe tvoˇren´em diagramu, seznam objekt˚ u a poskytuje rozhran´ı pro grafickou vrstvu. Manager patˇr´ı k nejrozs´ahlejˇs´ı a nejkomplexnˇejˇs´ı tˇr´ıdˇe cel´e aplikace.
Obr´azek 8. Implementace jednotliv´ ych uzl˚ u.
Obr´azek 9. Implementace jednotliv´ ych vazeb.
27
5.7.
Grafick´ aˇ c´ ast aplikace
Hlavn´ı tˇr´ıdou grafick´e ˇca´sti aplikace je tˇr´ıda WorkArea, potomek tˇr´ıdy UserControl. Tˇr´ıda tvoˇr´ı pracovn´ı plochu v prohl´ıˇzeˇci. Na t´eto ploˇse je moˇzn´e umist’ovat uzly a pomoc´ı myˇsi s nimi pohybovat. D´ale je zde moˇzn´e natahovat konkr´etn´ı vazby mezi uzly, opˇet za pouˇzit´ı myˇsi. Dalˇs´ım prvkem grafick´e ˇc´asti je tˇr´ıda MainWindow, potomek tˇr´ıdy Window. Jedn´a se o hlavn´ı okno aplikace a poskytuje funkcionalitu toolbaru a menu aplikace. Na u ´rovni t´eto vrstvy dochaz´ı i k pˇrepnut´ı jednotliv´ ych template v z´avislosti na typu vykreslovan´eho objektu.
Obr´azek 10. Implementace grafick´e vrstvy.
28
6.
Uˇ zivatelsk´ a dokumentace V t´eto sekci pop´ıˇsi z´aklady pr´ace s programem.
Obr´azek 11. V´ ychoz´ı okno aplikace.
29
6.1.
Pracovn´ı plocha
Pracovn´ı plocha tvoˇr´ı hlavn´ı ˇca´st editoru. Pomoc´ı myˇsi do n´ı m˚ uˇzeme umist’ovat uzly pˇretaˇzen´ım z toolbaru v lev´em horn´ım rohu. Opˇet pomoc´ı myˇsi m˚ uˇzeme uzly libovolnˇe pohybovat, a to kliknut´ım na uzel a n´asledn´ ym drˇzen´ım a tahem. Prav´ ym tlaˇc´ıtkem na uzel vyvol´ame editaˇcn´ı okno, v nˇemˇz m˚ uˇzeme mˇenit nastaven´ı uzlu. Po kliknut´ı na uzel jeho okraj zezelen´a, coˇz znaˇc´ı pr´avˇe vybran´ y uzel. U vybran´eho uzlu se n´am v lev´em horn´ım rohu objev´ı dvˇe ikonky, pomoci kter´ ych m˚ uˇzeme opˇet vyvolat editaˇcn´ı nab´ıdku, nebo uzel smazat. Smaz´an´ı uzlu je moˇzn´e i jeho oznaˇcen´ım a stiskem kl´avesy DELETE. Smaz´an´ım uzlu budou smaz´any i vazby vztahuj´ıc´ı se k tomuto objektu. Vazby je moˇzn´e tvoˇrit opˇet pˇretaˇzen´ım z toolbaru na konkr´etn´ı uzel, ve kter´em m´a vazba zaˇc´ınat. Pot´e kliknut´ım na dalˇs´ı uzel, nebo v pˇr´ıpadˇe reflexivn´ı vazby na tent´ yˇz uzel, vytvoˇr´ıme vazbu mezi tˇemito uzly. Stejnˇe jako u uzl˚ u, je moˇzn´e vazbu mezi tˇemito uzly oznaˇcit. Projev´ı se zezelen´an´ım vazby. Druh´ ym klikem na oznaˇcenou vazbu vyvol´ame editaˇcn´ı okno vazby. V tomto oknˇe je moˇzn´e mˇenit orientaci vazby a jej´ı popis.
Obr´azek 12. Tvorba atributu.
30
Obr´azek 13. Tvorba operace.
31
6.2.
Menu
Pomoc´ı menu m˚ uˇzeme vytvoˇrit nov´ y diagram. Pˇri tvorbˇe nov´eho diagramu nejprve dojde ke kontrole a pˇr´ıpadn´emu uloˇzen´ı diagramu stav´avaj´ıc´ıho. Diagramy lze ukl´adat do form´atu XML, kter´ y je program schopen znovu naˇc´ıst. XML je zvleno z d˚ uvodu jeho lehk´e ˇcitelnosti a snadn´e tvorby v programu. Dalˇs´ım d˚ uvodem je jednoduˇs´ı ˇreˇsen´ı konflikt˚ u, pokud bychom chtˇeli digramy uchov´avat napˇr´ıklad pod SVN. Souˇc´ast´ı menu je moˇznost exportovat diagram tˇr´ıd na diagram sekvenˇcn´ı, nebo diagram spolupr´ace. Po kliknut´ı na zvolen´ y export, vyvol´ame exportovac´ı okno. V tomto oknˇe m˚ uˇzeme vybrat tˇr´ıdy, kter´e se maj´ı u ´ˇcasnit.
Obr´azek 14. Export diagramu.
32
6.3.
Tvorba diagramu tˇ r´ıd
V t´eto sekci pop´ıˇsi tvorbu diagramu tˇr´ıd. Obecnˇe tvorba diagram˚ u v aplikaci funguje stejnˇe, jen diagram tˇr´ıd m´a nav´ıc i spr´avu atribut˚ u a operac´ı. 6.3.1.
Tˇ r´ıda
Nejprve v menu zvol´ıme moˇznost Nov´ y diagram a zvol´ıme diagram tˇr´ıd. Pˇred n´ami je pr´azdn´a pracovn´ı plocha. V toolbaru nalezneme vˇse co pro tvorbu diagramu potˇrebujeme. Tˇr´ıdu vytvoˇr´ıme pˇretaˇzen´ım z toolbaru na pracovn´ı plochu. Vyskoˇc´ı n´am dialogov´e okno pro zad´an´ı n´azvu a popˇr´ıpadˇe stereotypu. S uzlem je moˇzn´e pomoc´ı myˇsi manipulovat. Kliknut´ım na n´azev a drˇzen´ım myˇs´ı lze uzel pˇresunout. Po vytvoˇren´ı tˇr´ıdy vid´ıme pr´azdn´ y seznam atribut˚ u a operac´ı. Dvoj-klikem na pr´azdnou poloˇzkuv seznamu atribut˚ u se zobraz´ı okno pro pˇrid´an´ı atributu ke tˇr´ıdˇe. Analogicky m˚ uˇzeme postupovat pˇri pˇrid´an´ı operace k tˇr´ıdˇe. 6.3.2.
Vazby
Vazby m´ame opˇet v toolbaru. V z´avislosti na typu diagramu jsou k dispozici r˚ uzn´e vazby. Vazbu vloˇz´ım tak, ˇze z toolbaru pˇret´ahnu vybranou vazbu na uzel, ze kter´eho chci vych´azet. N´asledn´ ym klikem na jin´ y uzel vytvoˇr´ım pˇr´ısluˇsnou vazbu. Vazba je vˇzdy v z´akladn´ım nastaven´ı. Toto nastaven´ı mohu zmˇenit dvouklikem na vazbu. Objev´ı se mi dialogov´e okno s pˇr´ısluˇsn´ ym nastaven´ım.
33
7.
Z´ avˇ er
V r´amci t´eto pr´ace byl pˇredstaven velmi jednoduch´ y editor pro tvorbu vybran´ ych UML diagram˚ u, kter´ ymi byli diagram tˇr´ıd, stavov´ y diagram, diagram spolupr´ace a sekvenˇcn´ı diagram. Program slouˇz´ı pouze k nast´ınˇen´ı tvorby tˇechto diagram˚ u a urˇcitˇe nem˚ uˇze konkurovat profesion´aln´ım program˚ um pro tvorbu n´avrhu a anal´ yzu softwaru. M´ ym soukrom´ ym c´ılem nebylo pouze vytvoˇrit editor, ale prohloubit si znalosti UML a tak´e si vyzkouˇset tvorbu grafick´e ˇca´sti aplikace pomoc´ı technologie WPF. Mus´ım uznat, ˇze pokud bych mˇel zaˇc´ıt tvoˇrit tuto aplikaci znovu, pouˇzil bych nyn´ı jiˇz jin´e technologie a koncipoval bych tuto aplikaci jako webovou. Mysl´ım si, ˇze pro pr´aci v t´ ymu je webov´e prostˇred´ı lepˇs´ı a snadnˇejˇs´ı pro sd´ılen´ı mezi jednotliv´ ymi ˇcleny. Nicm´enˇe beru tuto pr´aci pozitivnˇe a mysl´ım, ˇze jsem se pˇri jej´ım psan´ı nauˇcil mnoho nov´eho, co se t´ yk´a programov´an´ı i n´avrhu aplikace jako takov´e.
34
Reference R [1] Unified Modeling LanguageTM (UML ) Resource Page [online]. 30.10.2014 [cit. 2014-12-10]. Dostupn´e z: http://www.uml.org/
[2] ARLOW, Jim a Ila NEUSTADT. UML 2 a unifikovan´y proces v´yvoje aplikac´ı: objektovˇe orientovan´a anal´yza a n´avrh prakticky .ARLOW, Jim a Ila NEUSTADT. Vyd. 1. Pˇreklad Bogdan Kiszka. Brno: Computer Press, 2007, 567 s. ISBN 978-80-251-1503-9.
35
8.
Obsah pˇ riloˇ zen´ eho CD Soubory jsou na pˇriloˇzen´em disku rozˇclenˇeny do tˇechto adres´aˇr˚ u: • Text - obsahuje elektronickou verzi textu a soubory nutn´e pro sestaven´ı dokumentu. • Program - obsahuje zrdojov´e k´ody
36