BAKALÁŘSKÁ PRÁCE. Grafický systém pro zadávání a analýzu diskrétních matematických struktur

Rozměr: px
Začít zobrazení ze stránky:

Download "BAKALÁŘSKÁ PRÁCE. Grafický systém pro zadávání a analýzu diskrétních matematických struktur"

Transkript

1 BAKALÁŘSKÁ PRÁCE Grafický systém pro zadávání a analýzu diskrétních matematických struktur Graphic system for discrete mathematical structures creation and analysis Pavel Bory

2 Unicorn College 2010 Unicorn College, V Kapslovně 2767/2, Praha 3, Název práce v ČJ: Název práce v AJ: Autor: Grafick ý systém pro zadávání a analýzu diskrétních matematick ých struktur Graphic system for discrete mathematical structures creation and analysis Pavel Bory Ak adem ick ý rok: 2010 Kontak t: pavel.bory@gm ail.com Tel.: (+420)

3 1. ZADÁNÍ 3

4 2. ABSTRAKT Úkolem této práce bylo vytvořit grafickou aplikaci pro zadávání diskrétních matematických struktur se zaměřením na struktury podobné grafům. Aplikace bude schopna pracovat se strukturami, které nazýváme relační struktury a které mají obecně více binárních relací různých typů. Tyto struktury jsou přímým zobecněním grafů. Využití teorie grafů a struktur s větším počtem různých typů hran, které bude možno pomocí této aplikace zadat a upravovat, nalezneme ve velkém počtu oblastí, ze kterých lze uvést oblast dopravy, odkazů na webových stránkách a například analýzu sociálních sítí. V této práci je uveden jeden teoretický příklad využití aplikace a to pro zadání několika typů vazeb v sociální síti. Důraz byl zejména kladen na jednoduché ovládání aplikace a možnost exportovat zadané relační struktury do dostatečně obecného datového formátu, aby mohly být předány dalším výpočetním aplikacím. Další důležitou funkčností aplikace bude možnost exportovat grafickou reprezentaci relačních struktur do bezeztrátového grafického formátu. Výsledkem je tedy aplikace vytvořená za použití objektově orientovaného programovacího jazyka C# a frameworku.net s využitím moderní technologie WPF, která byla zvolena zejména proto, že je možné s její pomocí snadněji implementovat práci s vektorovou grafikou, což je v této aplikaci zapotřebí. Implementace byla navržena tak, že aplikace je rozdělena do tří vrstev, do vrstvy datové, vrstvy logiky a do prezentační vrstvy. Vytvořená aplikace umožňuje jak ruční vytváření relačních struktur s různými typy hran pomocí jednoduchého grafického rozhraní tak i automatické generování vrcholů do dvou grafických rozmístění. Aplikace rovněž umožňuje automatické doplnění hran různých typů. Jako grafický formát pro export struktur byl vybrán formát PNG, který lze využít např. při dokumentaci během řešení různých prakticky motivovaných úloh, zejména pro dokumentaci jednotlivých experimentů. Jako datový formát pro export relačních struktur byl zvolen obecný a rozšiřitelný formát XML. Klíčová slova: graf, orientovaný graf, neorientovaný graf, relační struktura,.net, WPF, C#, aplikace pro zadávání grafů, diskrétní matematická struktura, XML. 4

5 3. ABSTRACT Goal of this work is to create graphic application for entering discrete mathematical structures with focus on structures similar to graphs. The application will be able to operate with structures, that are called relational structures and which generally have more binary relations of various types. These structures are direct generalization of graphs. Applications of graph theory and structures with more edges of various types can be found in many fields: transportation, web page links and social network analysis. One usage example of this application is show also. The example describes, how can be entered various types of connections within social network. During application analysis and development I focused on simplicity of user interface and possibility to export the relational structures to data format which will be usable as input for other applications. Next important functionality is relational structure graphic export. Result of this work is the application developed for.net framework with code implemented in C# programming language. The application uses WPF technology, which has been chosen, because of it's ability to simplify manipulation with vector graphic. Implementation is divided into 3 layers, into data layer, application logic layer and presentation layer. The application offers functionality to manually create relational structures with various types of edges using simple user interface as well as functionality to automatically generate vertexes into two defined layouts. The application also offers functionality to automatically generate edges of various types. Graphic format for relational structures graphic representation export is the PNG format, which can be used for documentation during practical problems solving. Data format for relational structures data export is the XML format. Keywords: graph, oriented graph, not-oriented graph, relational structure,.net, WPF, C#, application for graphs creation, discrete mathematical structure, XML 5

6 4. PROHLÁŠENÍ Prohlašuji, že svou bakalářskou práci na téma Grafický systém pro zadávání a analýzu diskrétních matematických struktur jsem vypracoval samostatně pod vedením vedoucího bakalářské práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou v práci citovány a jsou též uvedeny v seznamu literatury a použitých zdrojů. Jako autor uvedené bakalářské práce dále prohlašuji, že v souvislosti s vytvořením této bakalářské práce jsem neporušil autorská práva třetích osob, zejména jsem nezasáhl nedovoleným způsobem do cizích autorských práv osobnostních a jsem si plně vědom následků porušení ustanovení 11 a následujících autorského zákona č. 121/2000 Sb. V Praze dne Pavel Bory 6

7 5. PODĚKOVÁNÍ Děkuji vedoucímu bakalářské práce Davidu Hartmanovi za trpělivost, účinnou metodickou, pedagogickou a odbornou pomoc a další cenné rady při zpracování mé bakalářské práce. 7

8 6. OBSAH 1. Zadání Abstrakt Abstract Prohlášení Poděkování Obsah Úvod Základy teorie grafů Relace Grafy Relační struktury Struktury podporované aplikací Využití teorie grafů v praxi Obecné zapojení aplikace do řešení reálných problému Analýza sociálních sítí Analýza a návrh aplikace Požadavky na aplikaci Funkční požadavky Nefunkční požadavky Seznam a popis případů užití UC01 Vytvoření nové relační struktury UC02 Vygenerování vrcholů kružnice UC03 Vygenerování vrcholů mřížky UC04 Přidání hran do kružnice UC05 Přidání hran do mřížky UC06 Transformace rozmístění do mřížky UC07 Transformace rozmístění do kružnice UC08 Nastavení zobrazení hran UC09 Nastavení velikosti pracovní plochy a vodící mřížky UC10 Otevření vybrané relační struktury z XML souboru UC11 Zobrazení vybrané relační struktury UC12 Smazání relační struktury UC13 Export vybrané relační struktury do PNG UC14 Export vybrané relační struktury do XML UC15 Vytvoření vrcholu UC16 Vytvoření hrany UC17 Výběr prvků relační struktury UC18 Smazáních vybraných prvků relační struktury UC19 Zobrazení pomocných informací o editoru UC20 Přesun prvku relační struktury Analytické diagramy aplikace Datová vrstva Logika aplikace a prezentační vrstva Použité pojmy v analýze Implementace Zvolené technologie Třídy datové vrstvy Vertex Edge Relation RelationalStructure

9 GraphObjectsDictionary ApplicationConfiguration GraphGenerator Generování hran mřížky Třídy aplikační logiky a prezentační vrstvy UIVertex UIEdge UIGrid MainWindow NewGraphWindow GenerateCircleWindow GenerateGridWindow AddEdgesToCircleWindow AddEdgesToGridWindow CustomizeEditorWindow HideEdgesWindow Závěr Conclusion Seznam použité literatury Seznam použitých internetových zdrojů Seznam použitých symbolů a zkratek Seznam obrázků Seznam tabulek Seznam příloh...61 Příloha 1 Třídní diagram aplikace část Příloha 2 Třídní diagram aplikace část Příloha 3 - Ukázka XML souboru s exportovanou relační strukturou Příloha 4 - XSD šablona pro datový XML souboru Příloha 5 CD obsahující text práce, implementovanou aplikaci a zdrojové kódy

10 7. ÚVOD Cílem práce je vytvoření aplikace pro zadávání diskrétních matematických struktur se zaměřením na struktury podobné grafům. Struktury, se kterými bude aplikace schopna pracovat jsou relační struktury s obecně více binárními relacemi různých typů. Ty jsou přímým zobecněním grafů a vyjadřují charakter mnoha reálných problémů. Aplikace bude implementována tak, aby bylo možné ji v budoucnu rozšiřovat a aby umožnila jednoduché a efektivní zadávání potřebných struktur. Hlavním přínosem je, že aplikace poskytne svým ovládáním pro uživatele intuitivní a jednoduchý grafický nástroj pro zadávání a úpravy výše popsaných struktur. Dále aplikace umožní ukládání relačních struktur do obecného datového formátu XML. Tím umožní jejich využití v procesu analýzy různých technologických, ekonomických, sociálních a jiných aplikací mající charakter popsatelný právě těmito strukturami. Výhodou volby obecného a rozšiřitelného formátu XML je především to, že bude možné datové výstupy snadno transformovat a předávat dalším aplikacím. Kromě toho bude prostřednictvím této aplikace možné generovat i vizuální reprezentace daných struktur pro tvorbu dokumentace různých experimentů. Základním stavebním kamenem aplikace je moderní technologie WPF, která je součástí frameworku.net. Pomocí této technologie bude možné vytvořit aplikaci jejíž implementace bude vhodně oddělovat logiku aplikace od prezentační vrstvy tedy grafického rozhraní, se kterým uživatel bude pracovat. WPF je moderní technologie, která zahrnuje řadu užitečných možností pro zkvalitnění a zjednodušení implementace aplikací. V aplikaci pro zadávání grafů a relačních struktur je třeba ocenit to, že WPF je založeno na vektorové grafice. Další předností WPF je to, že grafické rozhraní je implementováno deklarativní formou pomocí rozšiřitelného značkovacího jazyka XAML, což usnadňuje oddělení prezentační vrstvy od vrstvy aplikační logiky. Jako programovací jazyk byl vybrán objektově orientovaný jazyk C#, který je platformou.net podporován. Nyní si stručně shrneme strukturu této práce. Nejdříve si v této práci stručně vysvětlíme část teorie grafů potřebnou pro implementaci aplikace na zadávání relačních struktur popsaných výše. Uvedeme konkrétní reálné problémy, které lze řešit pomocí teorie grafů. V další části bude popsán návrh aplikace od požadavků na aplikaci, přes případy užití ke konceptuálnímu rozdělení potřebných tříd do jednotlivých vrstev aplikace. V poslední části se budeme věnovat implementaci aplikace a popisu jednotlivých částí uživatelského rozhraní a funkčnostmi, které aplikace uživateli zprostředkuje. 10

11 8. ZÁKLADY TEORIE GRAFŮ 8.1 Relace Pomocí jednoduchých pojmů budeme definovat pojem relace a dále uvedeme definice v textu použitých konkrétních typů relací. Tyto základní pojmy využijeme při zavádění dalších pojmů v kapitolách o grafech a relačních strukturách. Jestliže x a y jsou prvky (nějaké množiny), potom symbol {x, y} označuje množinu obsahující právě prvky x a y a nazývá se neuspořádaná dvojice prvků x a y. {x, y} je totéž jako {y, x} a pokud x= y, potom {x, y} je jednoprvková množina. [1][str. 34] Zavedeme další označení a to x, y jako označení pro uspořádanou dvojici prvků x a y. Při této konstrukci závisí na pořadí prvků x a y. Předpokládáme tedy, že platí: Pomocí výše uvedených pojmů zavedeme pojem (kartézský) součin množin X a Y zapisovaný jako Jedná se tedy o množinu všech uspořádaných dvojic tvaru x, y kde x X a y Y. [1][str. 35] ( x, y) = ( z, t) x = z y = t Rovnice 1: Uspořádaná dvojice prvků {( x, y) ; x X y Y} X Y =, Rovnice 2: Kartézský součin množin X a Y Nyní již známe všechny potřebné pojmy pro zavedení pojmu relace. Relace R je množina uspořádaných dvojic. Jsou-li X a Y množiny, nazývá se libovolná podmnožina kartézského součinu X Y relací mezi X a Y Irreflexivní relace R je taková relace, že pro každé x X platí, že neplatí xrx. Symetrická relace R je taková relace, že pokud xry, pak i yrx. 11

12 8.2 Grafy Mnoho situací v matematice, v informatice i v rozličných prakticky motivovaných úlohách lze vystihnout pomocí schématu sestávajícího se ze dvou věcí: ( konečné ) množiny bodů a spojnic mezi některými dvojicemi bodů. Body mohou reprezentovat třeba účastníky nějakého večírku a spojnice ty dvojice účastníků, kteří se navzájem znají. Nebo body mohou odpovídat křižovatkám ve městě a spojnice ulicím mezi nimi. Rovněž elektrotechnická schémata mají často podobný charakter. Body v takovém typu schémat je zvykem nazývat vrcholy a příslušné spojnice hrany. Matematickou abstrakcí podobných schémat je pojem grafu. [1][str. 111] Graf G je uspořádaná dvojice V, E, kde V je nějaká neprázdná množina a E je množina dvoubodových podmnožin množiny V. Prvky množiny V se jmenují vrcholy a prvky množiny E hrany grafu G. [1][str. 111] Grafy se znázorňují kreslením do roviny. Vrcholům grafu se přiřadí body roviny (vyznačené zpravidla puntíky) a hrany se vyjádří spojením příslušných dvojic bodů rovnými nebo všelijak zakřivenými čarami. [1][str. 112] Dalšími pojmy, která je potřeba objasnit jsou orientovaný, neorientovaný graf a smyčka. Orientovaný graf je graf jehož hrany jsou uspořádané dvojice. Naproti tomu neorientovaný graf je graf jehož hrany jsou dvouprvkové množiny. Hrany orientovaného grafu mají tedy pevně danou orientaci a výrazy x, y a y, x označují různé hrany. Hrana x, x se nazývá smyčka *. [w1] Obrázek 1: Ukázka orientovaného grafu, neorientovaného grafu a smyčky Zdroj: autorem vytvořeno v aplikaci MS Paint * Toto se netýká pouze orientovaných grafů, ale i neorientovaných grafů. 12

13 Ještě je třeba zavést pojem váha hrany. V případě, že budeme hovořit o grafu s ohodnocenými hranami tak tím míníme že pro každou hranu e E je dáno číslo w e, které nazýváme váhou hrany e.[1][str. 171] Nyní zavedeme dva konkrétní typy grafů, protože tyto dva typy bude možné pomocí aplikace jednoduše generovat a dále s nimi pracovat: Úplný graf Kn (kde n 1 ): V = { 1,2,..., n}, E = Rovnice 3: Úplný graf V 2 Úplný graf si lze tedy představit tak, že mezi každou dvojicí vrcholů existuje hrana viz obrázek 2. Zdroj: autorem vytvořeno v aplikaci MS Paint Obrázek 2: Úplný graf 13

14 Kružnice Cn (kde n 3 ): { 1,2,..., n}, E = { i, i + 1 }; i = 1,..., n 1} { 1 n } V =, Rovnice 4: Kružnice Kružnici si lze tedy představit tak, že bychom vrcholům postupně přiřadili čísla od 1 do n a hrany vytvořili mezi vrcholy 1 2, 2 3 a z posledního vrcholu n bychom vytvořili hranu do vrcholu 1 viz obrázek 3. Obrázek 3: Kružnice Zdroj: autorem vytvořeno v aplikaci MS Paint 8.3 Relační struktury Jeden z možných pohledů na grafy může poskytovat relační struktura. Relační struktura je obecně obsáhlý pojem, kterým lze popsat mnoho matematických objektů jako jsou grafy, uspořádané množiny, reálná čísla a další. Pro obecnou definici relační struktury odkazuji na knihu [2]. Pro naše potřeby lze chápat relační strukturu jako n 1 -tici: kde A je množina nazývaná doména a ( ) R = A, R1,..., R n Rovnice 5: relační struktura Ri ;i=1,...,n jsou relace různých typů. V naší práci se budeme zabývat speciálním typem, který lze nazvat binární relační struktury, kde jsou všechny relace binární. 14

15 Neorientovaný graf v této notaci je tedy zapsán jako G= V, E, kde V je množina vrcholů a E je binární relace nad V, která je irreflexivní a symetrická. Pro orientovaný graf není relace symetrická a pokud bychom chtěli zahrnout smyčky, pak nesmí být ani irreflexivní. Smyčky však zahrnovat nebudeme, protože jejich využití v praktických problémech není tak časté, proto je jejich implementace ponechána na případné pozdější rozšíření aplikace. 8.4 Struktury podporované aplikací Aplikace umožní zadávání následujících struktur: 1. Neorientovaný graf 2. Orientovaný graf bez smyček 3. Multigraf 4. Relační struktura Neorientovaný graf je v aplikaci graficky zachycen jako množina bodů v rovině spojených pomocí přímek viz obrázek 4 (vlevo). Orientovaný graf je v aplikaci graficky zachycen jako množina bodů v rovině spojených pomocí přímek (křivek) zakončených šipkami viz obrázek 4 (vpravo). Multigrafem rozumíme graf, který umožňuje, aby mezi dvěma vrcholy bylo více hran jednoho typu. Multigraf může být jak orientovaný tak neorientovaný viz obrázek 5 (vlevo). Relační struktura je zachycena jako množina bodů spojených 1 4 typy hran. Jednotlivé typy hran mohou být jak orientované tak neorientované. Není však možné aby mezi dvěma vrcholy bylo více hran stejného typu viz obrázek 5 (vpravo). Pro ilustraci uvádím příklady jednotlivých struktur: Obrázek 4: Orientovaný a neorientovaný graf Zdroj: autorem vytvořeno v aplikaci G Edit 15

16 Obrázek 5: Multigraf a relační struktura Zdroj: autorem vytvořeno v aplikaci G Edit 16

17 9. VYUŽITÍ TEORIE GRAFŮ V PRAXI Aplikace teorie grafů jsou hlavně, ale ne nezbytně spojené s grafy, které mají ohodnocené(vážené) vrcholy a hrany nejčastěji pomocí čísel. Struktury, které mohou být reprezentovány jako grafy jsou přítomny téměř všude a mnoho prakticky motivovaných problémů může být grafy reprezentováno. Struktura odkazů na website * může být reprezentována orientovaným grafem tak, že vrcholy jsou webové stránky dostupné v rámci website a orientovaná hrana ze stránky A do stránky B existuje pouze pokud stránka A obsahuje link na stránku B. Grafy s ohodnocenými hranami lze použít pro reprezentaci struktur kde párová spojení mají nějakou číselnou hodnotu. Například pokud by graf reprezentoval síť silnic, pak by ohodnocení hran představovala délku každé silnice. Obdobný přístup lze aplikovat na praktické problémy z oblastí jako biologie, design počítačových čipů, sociologii (při analýze sociálních sítí) a z mnoha dalších oblastí.[w2] Pro další informace o využití teorie grafů v praxi odkazuji na knihu [3]. 9.1 Obecné zapojení aplikace do řešení reálných problému Aplikaci lze využít při řešení reálných problému, kde lze problém interpretovat pomocí relačních struktur. Obecně lze postup vyjádřit následujícím schématem: Problém reprezentovatelný relační strukturou Zadání relační struktury do aplikace Úpravy relační struktury Export XML Export PNG Využití XML souboru jako vstup pro další aplikace Využití obrázku PNG pro dokumentaci Nejdříve vytvoříme příslušnou relační strukturu v grafickém rozhraní aplikace, přičemž je možné využít některých funkčností pro usnadnění editace jako např. automatické vygenerování vrcholů a hran, případě automatické rozmístění vrcholů do mřížky nebo kružnice. * Website je v tomto textu chápána jako kolekce webových stránek, obrázků, videí a dalších digitálních aktiv 17

18 Vytvořenou relační strukturu můžeme následně exportovat do dvou typů souborů a dále ji zpracovávat v dalších aplikacích nebo grafickou reprezentaci relační struktury využít v dokumentaci. Aplikace tedy umožňuje export relační struktury do následujících souborů: Extensible Markup Language(XML) soubor Portable Network Graphics (PNG) soubor XML soubor je moderním rozšiřovatelným formátem vhodným pro zpracování dalšími aplikacemi. Pro detailnější informace o XML odkazuji na [4]. PNG soubor je grafický formát pro bezeztrátovou kompresi rastrové grafiky [w5]. Další informace o formátu PNG uvádím knihu [6]. 9.2 Analýza sociálních sítí Teorie grafů je aplikovatelná pro analýzu sociálních sítí jak bylo uvedeno na začátku kapitoly Využití teorie grafů v praxi. Sociální síť je sociální struktura tvořená jednotlivci (nebo organizacemi) nazývanými uzly, které jsou propojeny jedním nebo více konkrétními typy závislostí, jako přátelství, příbuznost, společné zájmy, finanční styk, partnerské vztahy, společná víra, vědomosti nebo prestiž.[w3] Analýza sociálních sítí zobrazuje sociální vztahy pomocí pojmů z teorie sítí *. Mezi tyto pojmy řadíme uzly a propojení. Uzly jsou jednotlivý aktéři v rámci sítí a propojení jsou vztahy mezi jednotlivými aktéry. Výsledné relační struktury (grafy) jsou často velmi komplexní. Mezi jednotlivý uzly může být velké množství propojení. Výzkum ukazuje, že sociální sítě operují na mnoho úrovních od rodin až po národní úroveň a sociální síť hraje důležitou roli při chodu organizací a v úspěšnosti jednotlivců nebo skupin při dosahování jejich cílů.[w4] Nyní si pokusíme stručně ukázat na zjednodušeném teoretickém příkladu možnosti zachycení propojení mezi jednotlivými uzly pomocí naší aplikace a přiblížíme jakým způsobem bude možné aplikace rozšířit pro zlepšení její využitelnosti v praxi. Mějme 5 aktérů(uzlů) a chtějme zachytit jejích vzájemná propojení. Budeme uvažovat, že sledujeme jen 3 typy vzájemných propojení a to: přátelství, příbuzenský vztah a společné zájmy. Jak je patrné budeme potřebovat 3 typy hran v rámci relační struktury, které uvažujeme jako neorientované, protože tyto 3 propojení chápeme jako obousměrná. Jistě by se dal ukázat i další příklad, kde by bylo možné využít orientovaných hran, nicméně pro stručnou ukázku orientované hrany neuvažujme. Vzhledem k tomu, že u některých vazeb lze hovořit o síle(míře) vazby tak je zapotřebí, abychom byly schopni hranám přiřazovat určité hodnoty(váhy hran). V aplikaci není nyní možné * Teorie sítí je oblastí počítačového výzkumu, výzkumu sítí a je částí teorie grafů. 18

19 zadávat váhy hran, nicméně na toto rozšíření bylo myšleno a aplikace je na něj připravena. Relační struktura ilustrující výše popsané vztahy viz obrázek 6. Zdroj: autorem vytvořeno v aplikaci G Edit Obrázek 6: Zachycení vzájemných propojení různých typů mezi aktéry sociální sítě Pro další informace o analýze sociálních sítí, metodách a aplikacích odkazuji na knihy [10] a [11]. * * Příklady rozsáhlejších sociálních sítí: Facebook, Twitter, LinkedIn 19

20 10. ANALÝZA A NÁVRH APLIKACE V této kapitole se budeme nejprve zabývat požadavky na aplikaci, tedy tím co od aplikace uživatelé očekávají. Z požadavků na aplikaci postoupíme k vytvoření seznamu případů užití a jejich stručnému popisu. Na konci kapitoly jsou uvedeny třídní diagramy (class diagram) a koncept rozdělení aplikace do 3 vrstev. Pro další informace o objektově orientovaném softwarovém inženýrství odkazuji na [5] Požadavky na aplikaci Nyní si uvedeme seznam funkčních a nefunkčních požadavků na aplikaci: Funkční požadavky 1. Aplikace umožní zadávání relačních struktur, kde vrcholy mohou být propojeny více typy hran 2. Aplikace umožní uživateli exportovat relační struktury do obecného datového formátu zpracovatelného dalšími aplikacemi 3. Aplikace umožní uživateli exportovat grafickou reprezentaci relačních struktur do bezeztrátového grafického formátu 4. Aplikace umožní uživateli vygenerovat kružnici o určitém počtu vrcholů 5. Aplikace umožní uživateli vygenerovat vrcholy rozestavené do mřížky 6. Aplikace umožní grafické transformace mezi jednotlivými rozmístěními 7. Aplikace umožní uživateli ruční vytváření relačních struktur 8. Aplikace umožní uživateli přibližovat a oddalovat pracovní plochu aplikace 9. Aplikace umožní uživateli nastavovat velikost pracovní plochy aplikace 10. Aplikace umožní uživateli automaticky vygenerovat hrany mezi vrcholy jednotlivých rozmístění 11. Aplikace umožní vybírat jednotlivé prvky relačních struktur a přesouvat/mazat je 12. Aplikace umožní uživateli vybírat více prvků relačních struktur a mazat je 13. Aplikace umožní, aby uživatel mohl pracovat s více relačními strukturami současně tak, že bude moci přepínat mezi jednotlivými strukturami 20

21 14. Aplikace umožní uživateli graficky skrýt určité typy hran 15. Aplikace umožní uživateli používat pomocnou mřížku jako vodítko při práci s prvky relačních struktur 16. Aplikace umožní uživateli smazat vybranou relační strukturu 17. Aplikace umožní uživateli otevřít datový soubor s relační strukturou, který tato aplikace sama vytvořila a dále s ním pracovat Nefunkční požadavky 1. Aplikace bude vytvořena v anglickém jazyce a to včetně zdrojových kódů 2. Aplikace bude mít intuitivní ovládání 3. Aplikace bude implementována tak, aby byla oddělena prezentační vrstva, vrstva logiky a datová vrstva 4. Aplikace bude dále rozšiřitelná 5. Aplikace bude vytvořena v takových technologiích, aby bylo možné ji provozovat na operačních systémech Windows XP, Windows Vista a Windows Seznam a popis případů užití Nyní se budeme zabývat tím jaké případy užití byly identifikovány na základě funkčních požadavků na aplikaci. Následně si jednotlivé případy užití popíšeme. Při popisu případů užití jsem se omezil pouze na neformální slovní popis, protože jednotlivé případy nejsou obsáhlé. * V případě složitějších případů užití by bylo vhodné použít detailnější formálnější přístup. *Aktér, který případy použití volá je zatím pouze jeden a tímto aktérem je uživatel aplikace, proto nejsou u jednotlivých případů užití vyjmenovávání aktéři. 21

22 Identifikátor UC01 UC02 UC03 UC04 UC05 UC06 UC07 UC08 UC09 UC10 UC11 UC12 UC13 UC14 UC15 UC16 UC17 UC18 UC19 UC20 Název případu užití Vytvoření nové relační struktury Vygenerování vrcholů kružnice Vygenerování vrcholů mřížky Přidání hran do kružnice Přidání hran do mřížky Transformace rozmístění do mřížky Transformace rozmístění do kružnice Nastavení zobrazení hran Nastavení velikosti pracovní plochy Otevření vybrané relační struktury z XML souboru Zobrazení vybrané relační struktury Smazání relační struktury Export vybrané relační struktury do PNG Export vybrané relační struktury do XML Vytvoření vrcholu Vytvoření hrany Označení prvků relační struktury Smazání prvků relační struktury Zobrazení pomocných informací o editoru Přesun prvku relační struktury Tabulka 1: Přehled případů užití UC01 Vytvoření nové relační struktury 1. Aplikace zobrazí okno, ve kterém uživatel vyplní následující informace: 1. Typ relační struktury, kterou chce vytvořit (viz 8.4 Struktury podporované aplikací) 2. Název relační struktury 3. Počet typů hran a k nim informaci zda-li jsou orientované 4. Zda-li chce vytvořit prázdnou strukturu nebo automaticky vygenerovat kružnici/mřížku 2. Uživatel potvrdí vytvoření příslušné relační struktury 3. Pokud uživatel vybral automatické vygenerování relační struktury tak aplikace zobrazí příslušné okno zahájení UC02 nebo UC03. Pokud uživatel vybral, že chce vytvořit novou 22

23 prázdnou relační strukturu tak je zobrazeno hlavní okno aplikace a zahájen UC11 s tím, že za vybranou relační strukturu je považována nová prázdná relační struktura UC02 Vygenerování vrcholů kružnice 1. Aplikace zobrazí okno pro zadání parametrů generování 2. Uživatel vyplní následující údaje: 1. Počet vrcholů 2. Zda-li chce vygenerovat kružnici do aktuálně zobrazené pracovní plochy nebo do středu celé pracovní plochy 3. Uživatel potvrdí generování vrcholů 4. Aplikace vygeneruje vrcholy rozmístěné do kružnice UC03 Vygenerování vrcholů mřížky 1. Aplikace zobrazí okno pro zadání parametrů generování 2. Uživatel vyplní následující údaje: 1. Počet řádků mřížky 2. Počet sloupců mřížky 3. Uživatel potvrdí generování vrcholů 4. Aplikace vygeneruje vrcholy rozmístěné do mřížky UC04 Přidání hran do kružnice 1. Aplikace zobrazí okno pro zadání parametrů přidání hran do kružnice 2. Uživatel vyplní následující údaje: 1. Zda-li chce vygenerovat hrany tvořící kružnici nebo úplný graf(kružnici) 2. Typy hran, které chce přidat 3. Uživatel potvrdí přidání hran 4. Aplikace přidá mezi příslušné vrcholy hrany vybraných typů 23

24 UC05 Přidání hran do mřížky 1. Aplikace zobrazí okno pro zadání parametrů přidání hran do mřížky 2. Uživatel vyplní následující údaje: 1. Zda-li chce vygenerovat hrany tvořící mřížku nebo úplnou mřížku 2. Typy hran, které mají být přidány 3. Uživatel potvrdí přidání hran 4. Aplikace přidá mezi příslušné vrcholy hrany vybraných typů UC06 Transformace rozmístění do mřížky 1. Aplikace zobrazí okno pro zadání parametrů transformace do mřížky 2. Uživatel vyplní následující údaje: 1. Počet řádků mřížky 2. Počet sloupců mřížky 3. Uživatel potvrdí transformaci 4. Aplikace rozmístí vrcholy dle zadaných parametrů UC07 Transformace rozmístění do kružnice 1. Aplikace zobrazí okno pro zadání parametrů transformace do kružnice 2. Uživatel vyplní následující údaje: 1. Zda-li chce vygenerovat kružnici do aktuálně zobrazené pracovní plochy nebo do středu celé pracovní plochy 3. Uživatel potvrdí transformaci 4. Aplikace rozmístí vrcholy dle zadaných parametrů 24

25 UC08 Nastavení zobrazení hran 1. Aplikace zobrazí okno pro nastavení zobrazení hran 2. Uživatel vybere, které typy hran chce zobrazit a které skrýt 3. Uživatel potvrdí nastavení 4. Aplikace skryje/zobrazí vybrané typy hran UC09 Nastavení velikosti pracovní plochy a vodící mřížky 1. Aplikace zobrazí okno pro nastavení velikosti pracovní plochy a vodící mřížky 2. Uživatel vyplní následující parametry: 1. Počet řádků vodící mřížky 2. Počet sloupců vodící mřížky 3. Šířku pracovní plochy 4. Výšku pracovní plochy 3. Uživatel potvrdí zadaná nastavení 4. Aplikace uloží změny, které budou platné okamžitě UC10 Otevření vybrané relační struktury z XML souboru 1. Aplikace zobrazí okno pro zadání cesty k XML souboru, ze kterého se má relační struktura načíst 2. Uživatel vybere soubor, ze kterého se má relační struktura načíst 3. Uživatel potvrdí výběr 4. Aplikace načte relační strukturu a zobrazí ji v pracovní ploše hlavního okna UC11 Zobrazení vybrané relační struktury 1. Aplikace v hlavním okně zobrazí seznam aktuálně otevřených relačních struktur 2. Uživatel vybere požadovanou relační strukturu 3. Uživatel potvrdí výběrového 4. Aplikace zobrazí vybranou relační strukturu na pracovní ploše aplikace 25

26 UC12 Smazání relační struktury 1. Aplikace v hlavním okně zobrazí seznam aktuálně otevřených relačních struktur 2. Uživatel vybere požadovanou relační strukturu 3. Uživatel potvrdí výběrového 4. Aplikace smaže vybranou strukturu a v případě, že v aplikaci existují další relační struktury tak zobrazí tu, která je byla vytvořena nejdříve UC13 Export vybrané relační struktury do PNG 1. Aplikace zobrazí okno pro zadání cesty k souboru do kterého se má exportovat 2. Uživatel vybere soubor do kterého se má exportovat 3. Uživatel potvrdí výběr 4. Aplikace uloží relační strukturu ve formátu PNG do zadaného souboru UC14 Export vybrané relační struktury do XML 1. Aplikace zobrazí okno pro zadání cesty k souboru do kterého se má exportovat 2. Uživatel vybere soubor do kterého se má exportovat 3. Uživatel potvrdí výběr 4. Aplikace uloží relační strukturu ve formátu XML do zadaného souboru UC15 Vytvoření vrcholu 1. Uživatel vybere příslušné místo a klikne myší 2. Aplikace na dané místo vytvoří nový vrchol UC16 Vytvoření hrany 1. Uživatel vybere výchozí vrchol 2. Uživatel buď vybere cílový vrchol nebo volné místo na pracovní ploše 3. Uživatel potvrdí výběr 4. Aplikace vytvoří hranu 26

27 UC17 Výběr prvků relační struktury 1. Uživatel označení jeden nebo více prvků relační struktury 2. Aplikace může(pokud uživatel chce) umožnit pokračování ve výběru dalších prvků 3. Uživatel ukončí výběr 4. Aplikace si uloží vybrané prvky pro další použití (přesouvání, mazání) UC18 Smazáních vybraných prvků relační struktury 1. Uživatel potvrdí smazání vybraných prvků 2. Aplikace smaže vybrané prvky a to včetně dalších závislostí UC19 Zobrazení pomocných informací o editoru 1. Aplikace umožní v hlavním okně nastavit zdali mají být tyto informace viditelné 2. Uživatel potvrdí zobrazení/skrytí příslušným ovládacím prvkem 3. Aplikace skryje/zobrazí pomocné informace o editoru UC20 Přesun prvku relační struktury 1. Uživatel přesune vybraný vrchol nebo ohne hranu příslušným posunem kurzoru 2. Uživatel potvrdí přesunutí 3. Aplikace uloží novou pozici/ohnutí prvku relační struktury 27

28 10.3 Analytické diagramy aplikace Nyní se podívejme jak bude konceptuálně aplikace rozdělena do vrstev: Externí soubory Datová vrstva Logika aplikace Prezentační vrstva Aplikace bude rozdělena do tří vrstev. Kde prezentační vrstva bude tvořit uživatelské rozhraní, bude zobrazovat uživateli výstupy aplikace a přijímat a předávat dále vrstvě logiky uživatelské vstupy. Vrstva logiky bude obsahovat třídy, které budou reagovat na uživatelské požadavky a předávat zpět prezentační vrstvě data k zobrazení. Bude to tedy jakýsi prostředník mezi datovou vrstvou a vrstvou prezentační logiky. Třídy ve vrstvě logiky získávají a předávají data do datové vrstvy. Poslední vrstva je vrstva datová, která bude obsahovat třídy reprezentující klíčové entity aplikace a obsahující potřebná data. Zároveň tato vrstva bude zprostředkovávat přístup k souborům umístěným mimo aplikaci samotnou. Při návrhu aplikace jsem se snažil dodržet rozdělení tříd do vrstev tak, aby bylo možné aplikaci v budoucnu rozšiřovat a její implementace byla přehledná. Teď víme z jakých vrstev se aplikace skládá, takže se bude věnovat třídám, které budou umístěny v jednotlivých vrstvách. Kompletní třídní diagramy viz příloha 1 a příloha 2. V následujících diagramech jsou uvedeny jen velmi stručné popisy tříd. Detailnější informace o jednotlivých třídách jsou uvedeny v kapitole 11 Implementace. 28

29 Datová vrstva Zdroj: autorem vytvořeno v aplikaci MS Visual Studio 2010 Ultimate a dále upraveno v aplikaci MS Paint Obrázek 7: Datová vrstva aplikace Datová vrstva obsahuje třídy reprezentující relační strukturu a její prvky: Vertex vrchol Edge hrana Relation relace (obsahuje hrany jednoho určitého typu) RelationalStructure relační struktura a dále obsahuje třídu ApplicationConfiguration, která bude zprostředkovávat přístup k nastavení aplikace a třídu GraphGenerator, která bude implementovat funkčnosti pro generování prvků v relačních strukturách, transformace mezi jednotlivými rozmístění a zprostředkovávat import a export relačních struktur do/z datových souborů XML. Poslední třídou je GraphObjectsDictionary, který si lze zjednodušeně představit jako jakýsi slovník, který bude udržovat vazby prvků relační struktury tj. hran a vrcholů na instance tříd, které je budou graficky reprezentovat. Všechny třídy datové vrstvy viz obrázek 7. 29

30 Logika aplikace a prezentační vrstva Zdroj: autorem vytvořeno v aplikaci MS Visual Studio 2010 Ultimate a dále upraveno v aplikaci MS Paint Obrázek 8: Třídy aplikační logiky a prezentační vrstvy Zdroj: autorem vytvořeno v aplikaci MS Visual Studio 2010 Ultimate a dále upraveno v aplikaci MS Paint Obrázek 9: Třídy aplikační a prezentační vrstvy - grafická reprezentace prvků relační struktury a vodící mřížka Popis těchto dvou vrstev byl sloučen do jedné podkapitoly, protože vrstva logiky aplikace je provázána s prezentační vrstvou tak, že jedna třída z vrstvy logiky odpovídá jedné třídě okna aplikace v prezentační vrstvě (viz obrázek 8) s výjimkou tříd UIVertex, UIGrid a UIEdge (viz obrázek 9). UIVertex a UIEdge představují grafickou reprezentaci vrcholů a hran relačních struktur. UIGrid tvoří vodící mřížku v pracovní ploše aplikace. Třídy z vrstvy logiky aplikace implementují chování aplikace jako reakce na uživatelské vstupy, které jsou logické vrstvě předávány z vrstvy aplikační. Vrstva logiky po zpracování uživatelských vstupů předá výstupy ke zobrazení uživateli do prezentační vrstvy. Stejně jako u datové vrstvy na detailnější popis tříd odkazuji na kapitolu 11 Implementace, zde uvádím pouze stručný seznam tříd: Main hlavní okno aplikace NewStructure vytváření nové relační struktury GenerateGrid generování vrcholů do mřížky / transformace rozmístění do mřížky GenerateCircle generování vrcholů do kružnice / transformace rozmístění do kružnice HideEdges schování/zobrazení hran určitých typů 30

31 AddEdgesToCircle přidání hran do kružnice AddEdgesToGrid přidání hran do mřížky CustomizeEditor nastavení aplikace UIVertex grafická reprezentace vrcholu UIEdge grafická reprezentace hrany UIGrid vodící mřížka 10.4 Použité pojmy v analýze 1. Typy rozmístění prvků relační struktury: 1. Volné 2. Kružnice vrcholy jsou rozmístěny po obvodu kružnice 3. Mřížka vrcholy jsou rozmístění do mřížky o určitém počtu sloupců a řádků 2. Grafická transformace aplikace rozmístí vrcholy do jednoho z uvedených rozmístění 3. Pracovní plocha část hlavního okna aplikace, která je určena pro grafickou práci s relačními strukturami 31

32 11. IMPLEMENTACE 11.1 Zvolené technologie Aplikace je implementována za použití frameworku.net a objektově orientovaného programovacího jazyka C#. (Detailní informace o jazyce C# viz [7]). Vzhledem k možnostem frameworku.net jsem se rozhodl použít moderní technologii Windows Presentation Foundation (WPF). Hlavní motivací pro tuto volbu bylo to, že WPF umožňuje snadnější práci s vektorovou grafikou. WPF je novou generací grafických aplikací vyvýjených pro operační systém Windows. Pomocí WPF lze vytvářet jak tzv. standalone aplikace tak aplikace hostované v internetových prohlížečích. Aplikace, kterou jsem vytvořil patří do kategorie standalone aplikací. Jádrem WPF je na rozlišení nezávislý renderovací engine založený na vektorové grafice, který umožňuje využívat výhod moderního grafického hardwaru ( podrobnější informace o WPF viz [8]). Při programování ve WPF se využívá tzv. Markup and Code-Behind přístupu, který je obdobný jako v technologii ASP.NET. Využívá se značkovací jazyk Extensible Application Markup Language (XAML) jako prostředek pro vytvoření vzhledu aplikace a řízený kód některého z programovacích jazyků pro framework.net, v našem případě tedy programovací jazyk C#. [w6] XAML je značkovací jazyk založený na XML. XAML se používá pro deklarativní implementaci vzhledu aplikace. Typicky se využívá pro vytvoření oken, dialogových boxů, vlastních komponent a jejich vyplnění ovládacími prvky a grafikou. Vzhledem k tomu, že se jedná o značkovací jazyk založený na XML, tak deklarace uživatelského rozhraní má intuitivní stromovou strukturu[. Další informace o XAML viz [9]. WPF nabízí celou řadu vestavěných ovládacích prvků, zde uvádím pouze ilustrativní výčet ovládacích prvků, které jsou v aplikaci využívány(další informace viz [8]): Tlačítka: Button Dialogové boxy: OpenFileDialog a SaveFileDialog Uživatelské vstupy: TextBox, CheckBox, ComboBox, ListBox, RadioButton Rozmístění ovládacích prvků: Border, Canvas, DockPanel, Grid, Panel, StackPanel Ostatní: Menu, Label, Tooltip, ScrollViewer 32

33 WPF rovněž přináší výhodu ve využití grafického hardwaru a snížení využití procesoru. Zároveň poskytuje na rozlišení a zařízení nezávislou grafiku. Základní měřící jednotkou je device independent pixel, který je 1/96 palce. Každý tento pixel je automaticky škálován tak aby odpovídal nastavení dpi zařízení na kterém je aplikace renderována.[w7] 11.2 Třídy datové vrstvy Jak bylo popsáno v kapitole Základy teorie grafů bude zapotřebí následujících tříd, které budou reprezentovat binární relační strukturu a její součásti: Vertex Edge Relation RelationalStructure Dále tato vrstva obsahuje třídy GraphGenerator, ApplicationConfiguration a GraphObjectsDictionary, kterým se budeme věnovat dále v textu Vertex Třída Vertex reprezentuje jeden vrchol relační struktury. Tato třída obsahuje pouze jednu vlastnost a to unikátní identifikátor vrcholu, aby bylo možné relační struktury exportovat a importovat do souborů Edge Třída Edge reprezentuje jednu hranu relační struktury. Každá hrana si uchovává informaci o tom jakého je typu (nyní aplikace umožňuje 4 typy hran, ale je možné aplikaci rozšířit na dostatečně velké množství typů hran) a jaké dva vrcholy obsahuje. Stejně jako třída Vertex obsahuje unikátní identifikátor Relation Třída Relation reprezentuje jednu relaci v rámci relační struktury, obsahuje tedy hrany jednoho konkrétního typu a informaci o tom zda-li jsou tyto hrany orientované či neorientované. Hrany jsou 33

34 ukládány v generické kolekci List<Edge>. Třída Relation obsahuje metody správu hran v rámci relace. Vzhledem k tomu, že v aplikace je často zapotřebí zjišťovat zda-li mezi dvěma vrcholy existuje hrana obsahuje tato třída vlastnost, která po zadání vrcholů mezi kterými chceme zjistit přítomnost hrany vrátí informace o přítomnosti či nepřítomnosti hrany/hran(v případě Multigrafu). Pro tato vyhledávání jsem se rozhodl využít Language Integrated Query (LINQ), který umožňuje stručně a čitelně definovat dotaz nad kolekcemi implementujícími rozhraní IEnumerable. LINQ umožňuje filtrování, řazení a seskupování pomocí minimálního množství aplikačního kódu. Více o LINQ viz [12]. Zdroj: Autorem pořízený obrázek zdrojového kódu aplikace G Edit Obrázek 10: Ukázka dotazu pro výběr orientovaných hran mezi vrcholy v1 a v2 Zdroj: autorem vytvořeno v aplikaci MS Visual Studio 2010 Ultimate a dále upraveno v aplikaci MS Paint RelationalStructure Třída RelationalStructure reprezentuje binární relační strukturu. Obsahuje pole instancí třídy Relation a generickou kolekci List<Vertex> vrcholů. Tato třída obsahuje jeden konstruktor, ve kterém je určen název struktury pro zobrazení v hlavním okně aplikace a o jaký typ relační struktury se jedná tzn. zdali o orientovaný/neorientovaný graf s jedním typem hran, multigraf nebo o relační strukturu s více typy hran kde každý typ hran může být orientovaný nebo neorientovaný. Posledním parametrem konstruktoru je grafické rozmístění vrcholů relační struktury. O různých rozmístěních, které aplikace umožňuje pojednávám v dalších podkapitolách této práce. Dále tato třída obsahuje metody pro správu vrcholů relační struktury a správu hran v rámci jednotlivých relací. Protože je zapotřebí, aby každý vrchol a hrana měla unikátní identifikátor, obsahuje třída RelationalStructure vlastnosti NextEdgeId a NextVertexId, kterými je možné získat další ještě nepoužitý identifikátor pro hranu či vrchol. 34

35 GraphObjectsDictionary GraphObjectsDictionary je statická třída tvořící jakýsi pomyslný slovník. Obsahuje čtyři generické kolekce typu Dictionary<TKey,TValue>, které budou uchovávat informace o vazbách mezi prvky grafického rozhraní a prvky relačních struktur. GraphObjectsDictionary je schopna následujících překladů : UIEdge Edge Edge UIEdge UIVertex Vertex Vertex UIVertex Protože využívá generickou kolekci Dictionary<TKey,TValue> je implementace vkládání, hledání a mazání záznamů velmi jednoduchá. Využíváme přitom metody vestavěné do této kolekce tudíž lze hovořit o poměrně optimalizovaném přístupu. Jak je patrné ze seznamu možných překladů GraphObjectsDictionary umožňuje spravovat vazby mezi vrcholy jakožto prvky relační struktury a jejich grafickou reprezentací ( instancemi třídy UIVertex). Obdobně to platí i pro hrany ApplicationConfiguration Konfigurace aplikace a pomocné informace budou uloženy v souboru XML a bude k nim přistupováno pomocí statické třídy ApplicationConfiguration. Nyní jsou dynamicky (uživatelem) nastavitelné pouze některé části konfigurace, nicméně aplikace je připravena tak, aby bylo možné konfigurovatelnost značně rozšířit. Dynamicky konfigurovatelná nastavení: Počet řádků pomocné mřížky Počet sloupců pomocné mřížky Výška pracovní plochy aplikace Šířka pracovní plochy aplikace Viditelnost panelu s dalšími informacemi o editoru Pomocná nastavení dynamicky spravovaná aplikací: Poslední exportovaný.png soubor Poslední importovaný XML soubor s relační strukturou Poslední exportovaný XML soubor s relační strukturou 35

36 Další nastavení, která jsou nyní statická: Průměr kruhu vrcholu Barva vrcholu Barva hrany Tloušťka hrany Vzdálenosti sloupců a řádků při rozmístění rel. struktury do mřížky Tloušťka řádků/sloupců pomocné mřížky GraphGenerator GraphGenerator je statická třída umožňující generování prvků relačních struktur určitých typů a do určitých rozmístění v rovině. Dále umožňuje import a export relačních struktur do XML souborů. Postupně si popíšeme všechny možnosti, které tato třída nabízí. Při popisu vstupních parametrů metod sloužících pro generování se omezuji pouze na některé klíčové parametry. Generování vrcholů kružnice GraphGenerator umožňuje vytvořit vrcholy, které budou rozmístěny po obvodu kružnice. Vstupními parametry pro metodu, která toto generování zajišťuje je především: relační struktura do které vrcholy přidáváme, bod určující střed této pomyslné kružnice, poloměr a počet vrcholů. Pro výpočet pozic jednotlivých vrcholů v rovině lze aplikovat následující postup * : Obrázek 11: Zdrojový kód pro generování vrcholů kružnice alpha... úhel o který se pro každý další vrchol posuneme po obvodu kružnice n počet vrcholů x souřadnice na ose x pro nový vrchol y souřadnice na ose y pro nový vrchol circlecenter střed kružnice, který má souřadnice X,Y Zdroj: uutorem vytvořený zdrojový kód v aplikaci MS Visual Studio a graficky upraven v aplikaci MS Paint * Zdrojový kód byl pro přehlednost upraven 36

37 Generování vrcholů mřížky Dalším možným rozmístěním je tzv. mřížka kde klíčovými vstupními parametry jsou počet řádků a sloupců, vzdálenosti mezi řádky a vzdálenosti mezi sloupci. Zde je ukázka možného implementačního řešení * : Obrázek 12: Zdrojový kód pro generování vrcholů do mřížky Zdroj: autorem vytvořený zdrojový kód v aplikaci MS Visual Studio graficky upravený v aplikaci MS Paint p... levý horní bod mřížky x souřadnice na ose x generovaného vrcholu y souřadnice na ose y generovaného vrcholu Generování hran kružnice GraphGenerator kromě generování vrcholů umožňuje i generování hran určitých typů mezi jednotlivými vrcholy. Pojem kružnice byl objasněn v kapitole Základy teorie grafů. Nyní se budeme stručně zabývat tím jak je toto generování vyřešeno implementačně. GraphGenerator obsahuje metodu GenerateCircleEdge, která přijímá jako vstupní parametr objekt typu RelationalStructure a typ hran, který chceme vygenerovat. Vrcholy jsou setříděny podle jejich unikátních identifikátorů a postupně jsou mezi sousedícími vrcholy (tzn. vrchol s id = 1 sousedí s vrcholem s id = 2 atd.) generovány hrany a na závěr je vrchol s nejnižším id spojen hranou s vrcholem s největším id Generování hran mřížky Stejně jako u kružnice umožňuje GraphGenerátor vygenerovat hrany určitých typů mezi sousedními vrcholy, které jsou umístěný ve stejných řádcích nebo sloupcích. Metoda GenerateGridEdges, která implementuje tuto funkčnost přijímá dva klíčové parametry a to instanci RelationalStructure a typ hran, který se má vygenerovat. Zda-li jsou vrcholy ve stejných sloupcích nebo řádcích rozhoduje GraphGenerator na základě x,y souřadnic. * Zdrojový kód byl pro přehlednost upraven 37

38 Generování úplných kružnic a mřížek GraphGenerator implementuje metody pro vygenerování hran určité typu tak, aby byla vytvořena úplná kružnice, která splňuje podmínky pro úplný graf jak je uvedeno v kapitole Základy teorie grafů. Úplná mřížka s hranami určitých typů není úplným grafem, ale splňuje následující podmínky: Mezi každou dvojicí vrcholů, které jsou na stejném řádku existuje hrana určitého typu Mezi každou dvojicí vrcholů, které jsou ve stejném sloupci existuje hrana určitého typu 11.3 Třídy aplikační logiky a prezentační vrstvy V kapitole Třídy datové vrstvy jsme popsaly třídy potřebné pro práci s vrcholy, hranami a relačními strukturami. Nicméně pro reprezentaci relačních struktur v uživatelském rozhraní je zapotřebí dalších tříd, které umožní tyto objekty vhodně zobrazit a uživateli s nimi pracovat. Jedná se o třídy UIVertex a UIEdge. Dále v této kapitole budeme popisovat třídu UIGrid, která slouží jako vodící mřížka v pracovní ploše aplikace. Na závěr se budeme věnovat jednotlivým oknům aplikace: MainWindow NewGraphWindow GenerateCircleWindow GenerateGridWindow AddEdgesToCircle AddEdgesToGrid CustomizeEditorWindow HideEdgesWindow UIVertex Třída UIVertex je jak již bylo řečeno grafickou reprezentací vrcholů. UIVertex dědí z vestavěné abstraktní třídy Shape. Třída Shape je základní třídou pro elementy jako elipsa, polygon a obdelník. UIVertex obsahuje jeden konstruktor, který přijímá jako parametr bod se souřadnicemi x a y na kterém bude vrchol zobrazen. Protože bude zapotřebí vědět, které hrany obsahují tento vrchol má v sobě tato třída generickou kolekci List<UIEdge>, ve které budou tyto hrany ukládány. 38

39 Graficky budou vrcholy reprezentovány jako malé kruhy. V rámci třídy UIVertex bude grafika těchto kruhů uchovávána v privátní proměnné typu EllipseGeometry. EllipseGeometry reprezentuje geometrii kruhů a elips. K definici renderované grafiky je zapotřebí přetížit zděděnou vlastnost DefiningGeometry a to tak, aby vracela právě hodnotu privátní proměnné typu EllipseGeometry. UIVertex obsahuje vlastnost Center, která určuje střed kruhu tedy umístění daného vrcholu. V případě, že bude s vrcholem pohybováno tak je potřeba, aby byly překresleny i hrany obsahující tento vrchol, proto je v případě změny vlastnosti Center zavolána privátní metoda RedrawEdges, která na každé instanci UIEdge (hrany), které je tento vrchol součástí dále zavolá metodu Redraw. UIVertex dále obsahuje metody pro nastavení standardní grafiky vrcholu nebo grafiky pro zvýraznění toho, že byl vrchol vybrán, jedná se o metody SetSelectedGraphics a SetDefaultGraphics. Obě tyto metody získávají informace z třídy ApplicationConfiguration, která přístup k tomuto nastavení umožňuje. Poslední co u této třídy zmíníme je jakým způsobem bude zobrazováno id vrcholu v uživatelském rozhraní. V současné implementaci využijeme instance vestavěného prvku Label, se kterou skrze třídu UIVertex bude možné manipulovat. V budoucnu je samozřejmě možné k vrcholům přidat i pokročilejší ovládací prvky, které budou schopny např. uživatelského zadávání dalších vlastností vrcholů UIEdge Třída UIEdge je jak již bylo řečeno grafickou reprezentací hrany určitého typu v rámci relační struktury a stejně jako UIVertex dědí z vestavěné abstraktní třídy Shape. Obsahuje jeden konstruktor, který přijímá jako vstupní parametry dvě instance třídy UIVertex (zdrojový a cílový vrchol), celé číslo určující typ hrany, informaci zda-li je hrana orientovaná či nikoliv a informaci o kolikátou hranu mezi dvojicí vrcholů se jedná. Tyto dvě poslední informace jsou důležité zejména pro grafickou reprezentaci jak bude vysvětleno níže. Grafická reprezentace je vnitřně uchovávána jako instance třídy Path. Třída Path je vestavěná třída, která umožňuje kreslení série navazujících křivek. Jako křivky jsem zvolil kvadratické Beziérovi křivky, pro které je v.net frameworku připravena třída BezierSegment. Beziérova křivka je parametrická křivka, která umožňuje interaktivní vytváření a modifikaci jejího tvaru. Kvadratické Beziérova křivka je dráha popsaná funkcí C t pro body P 0, P 1, P 2 následovně[w8]: 2 2 i 2 i C t = t 1 t Pi = 1 i= 0 i Rovnice 6: Kvadratická Beziérova křivka 2 i ( ) ( ) ( t) P + 2t( 1 t) 0 P + t 1 2 P, t 2 0,1 39

40 Důvodem proč volit Beziérovi křivky byla potřeba ohýbání hran v případě, že mezi dvojicí vrcholů bude více než jedna hrana. V případě, že se jedná o orientovanou hranu je na její konec vykreslena šipka a to pomocí běžných přímek UIGrid Třída UIGrid reprezentuje pomocnou mřížku v pracovní ploše aplikace a umožní uživateli navigaci kurzoru po této mřížce. Mřížka je sestavena z přímek (instancí třídy LineSegment), které jsou uloženy v privátní proměnné typu Path. UIGrid má jeden konstruktor, ve kterém pomocí vstupních parametrů definujeme výšku a šířku mřížky, počet řádků a sloupců mřížky a instanci třídy Canvas ve které bude tato mřížka umístěna. Jedním z hlavních prvků implementace mřížky je dvourozměrné pole tzv. kontrolních bodů mřížky tj. pole obsahující body průsečíků řádků a sloupců mřížky. V případě, že uživatel bude chtít mřížku využívat, bude kurzor myši navigován pouze po těchto kontrolních bodech a to tak, že pozice kurzoru bude automaticky přesouvána na nejbližší kontrolní bod MainWindow MainWindow tvoří jádro grafického rozhraní aplikace. Jedná se o nejobsáhlejší třídu a její implementaci je třeba věnovat zvláštní pozornost. Nejdříve se budeme zabývat ovládacími prvky rozmístění a prvky v nich zanořených. Na obrázku 13 je zachycena základní stromová struktura okna MainWindow *. Kořenovým elementem této struktury je prvek DockPanel v němž jsou zanořeny další prvky. DockPanel umožňuje relativní horizontální nebo vertikální uspořádání prvků. Z obrázku 13 obsahující deklarativní zápis prvků v okně MainWindow je možno vidět, že je okno rozděleno do šesti částí. Zajímavé je všimnout si elementu Canvas, který bude sloužit jako pracovní plocha pro práci s relačními strukturami. V rámci elementu Canvas je definována tzn. ScaleTransform, která umožňuje velmi jednoduše implementovatelný zoom a to tak, že se pouze přistupuje k jeho vlastnostem ScaleX a ScaleY. Za správné vykreslování při přiblížení nebo oddálení se postará WPF. Na obrázku 14 vidíme ukázku hlavního okna aplikace ve kterém je již vytvořena úplná kružnice s jedním neorientovaným typem hran. * Struktura je ilustrativní, neobsahuje veškeré elementy a atributy, ale pouze klíčové prvky rozmístění a některé důležité ovládací prvky okna MainWindow 40

41 Obrázek 13: XAML struktura hlavního okna aplikace Zdroj: autorem vytvořený XAML kód v aplikaci MS Visual Studio graficky upravený v aplikaci MS Paint 41

42 Obrázek 14: Ukázka hlavního okna aplikace Zdroj: autorem vytvořeno v aplikaci MS Visual Studio graficky upraveno v aplikaci MS Paint 42

43 Od vzhledu okna aplikace se přesuneme k implementace jeho vnitřní logiky neboli k tzv. kódu na pozadí (code-behind). Třída MainWindow obsahuje dva výčty (enum): EditorMode a CurrentAction. Tyto výčty slouží pro odlišení různých módů aplikace a aktuálně prováděných akcí uživatelem. Nejdříve se podívejme v jakých módech se může aplikace nacházet: Select (uživatel vybírá jeden element či více elementů pomocí výběrového obdélníku) MultiSelect (uživatel vybírá jeden a více elementů pomocí postupného označování výběrovými obdélníky či kliknutím na konkrétní elementy) Create (uživatel vytváří nové vrcholy a hrany určitého typu) Move (uživatel přesouvá vrcholy nebo ohýbá hrany) None (výchozí stav kdy v aplikaci není žádná relační struktura se kterou by uživatel pracoval) Aby bylo možné reagovat správně na příslušné události vyvolané uživatelem(myší nebo stisknutím klávesy) je zapotřebí, aby si aplikace udržovala informaci o tom jakou akci právě uživatel provádí, zdali např. vytváří novou hranu, či provádí výběr elementů. V aplikaci rozlišujeme následující akce: MovingVertex (uživatel přesouvá vrchol) MovingEdge (uživatel ohýbá hranu) DrawingEdge (uživatel vytváří hranu mezi dvěma vrcholy) SelectingObjects (uživatel vybírá elementy) None (výchozí stav neboli stav kdy není prováděna žádná akce) Jak bylo řečeno v úvodu této kapitoly, v grafickém rozhraní reprezentují prvky relačních struktur instance typu UIVertex a UIEdge. Teď si shrneme jaké důležité události může uživatel vyvolat nad kterými elementy v grafickém rozhraní a stručně popíšeme následné chování aplikace. Pro přehlednost jsou tyto informace uvedeny v následujících tabulkách kde v každé bude uvedeno jaký musí být stav editoru a případně jaká musí být aktuálně prováděná akce aby došlo k určitému chování aplikace. Chování aplikace je zde uváděno stručně, protože u některých událostí by popis chování mohl být zdlouhavý *. * X libovolná akce!= libovolná akce různá od uvedené 43

44 UIVertex Událost Stav editoru Aktuální akce Chování aplikace MouseLeave Create X MouseLeave Move X MouseLeftButtonDown Create DrawingEdge MouseLeftButtonDown Create!=DrawingEdge MouseLeftButtonDown Move X MouseLeftButtonDown Select X V případě, že je vrchol graficky označen jako vybraný tak bude odznačen. V případě, že je vrchol graficky označen jako vybraný tak bude odznačen. Dojde k vytvoření hrany mezi zdrojovým a cílovým vrcholem na který uživatel klikl myší. Zahájení vytváření hrany. Vrchol na který uživatel klikl je označen jako zdrojový vrchol. Zahájení posouvání vybraného vrcholu. Seznam aktuálně vybraných elementů je vyprázdněn a je do něj přidán vybraný vrchol. MouseLeftButtonDown MultiSelect X Do seznamu aktuálně vybraných elementů je přidán vybraný vrchol MouseMove Create X MouseMove Move X Vrchol je graficky označen jako aktuálně vybraný. Vrchol je graficky označen jako aktuálně vybraný. Tabulka 2: Události UIVertex 44

45 UIEdge Událost Stav editoru Aktuální akce Chování aplikace MouseLeftButtonDown Move X MouseLeftButtonDown Select X Je zahájeno ohýbání vybrané hrany. Seznam aktuálně vybraných elementů je vyprázdněn a je do něj přidána vybraná hrana. MouseLeftButtonDown MultiSelect X Do seznamu aktuálně vybraných elementů je přidána vybraná hrana. MouseMove Move X Vybraná hrana je graficky zvýrazněna Tabulka 3: Události UIEdge 45

46 Canvas Událost Stav editoru Aktuální akce Chování aplikace MouseLeftButtonDown Create None MouseLeftButtonDown Create DrawingEdge Na vybraném místě je vytvořen nový vrchol Na vybraném místě je vytvořen nový vrchol a je vytvořena hrana končící v tomto vrcholu. MouseLeftButtonDown MultiSelect X Je zahájeno vybírání elementů a uživateli vykreslován výběrový obdelník MouseLeftButtonDown Select X MouseMove Create DrawingEdge MouseMove Move MovingEdge MouseMove Move MovingVertex MouseMove Select SelectingObjects Je zahájeno vybírání elementů a uživateli vykreslován výběrový obdelník Při pohybu myší po elementu Canvas dochází k dynamickému vykreslování přímky ze zdrojového vrcholu do bodu kde je aktuálně kurzor myši. V závislosti na poloze kurzoru je příslušná hrana ohýbána. V závislosti na poloze kurzoru je přesouván vybraný vrchol a ohýbány hrany, které tento vrchol obsahují. V závislosti na poloze kurzoru je dynamicky vykreslován výběrový obdélník. MouseMove MultiSelect SelectingObjects V závislosti na poloze kurzoru je dynamicky vykreslován výběrový obdélník. Tabulka 4: Události Canvas 46

47 MainWindow MainWindow Událost Stav editoru Aktuální akce Chování aplikace KeyDown(Delete) Select X Vybrané elementy jsou odstraněny KeyDown(Delete) MultiSelect X Vybrané elementy jsou odstraněny MouseLeave Move MovingVertex MouseLeave Move MovingEdge MouseLeave Select SelectingObjects Posouvání vrcholu je ukončena a vrchol je umístěn na hranici okna. Ohýbání hrany je ukončeno a hrana je zanechána na hranici okna. Seznam aktuálně vybraných elementů je vyprázdněn a jsou do něj přidány elementy v rámci výběrového obdélníku. MouseLeave MultiSelect SelectingObjects Do seznamu vybraných elementů jsou přidány elementy označené výběrovým obdelníkem Tabulka 5: Události MainWindow 47

48 NewGraphWindow Obrázek 15: Ukázka okna NewGraphWindow Zdroj: autorem vytvořeno v aplikaci MS Visual Studio graficky upraveno v aplikaci MS Paint Toto okno slouží uživateli pro vytváření nových relačních struktur. Zobrazení tohoto okna je vyvoláno z hlavního okna aplikace prostřednictvím menu File New structure. Uživatel nejprve zvolí jaký typ struktury chce vytvořit, na výběr je ze strukturu popsaných v kapitole 8.4 této práce. Orientovaný/neorientovaný graf je vytvářen tak, že uživatel vybere v menu Structure type možnost Normal graph a v nastavení hran zvolí orientované/neorientované hrany. V případě, že uživatel chce vytvářen multigraf je postup obdobný. Pokud je vytvářena relační struktura, pak je zapotřebí vybrat počet typů hran. Poté co uživatel zvolí počet typů hran je uživateli umožněno nastavit, který typ hran je orientovaný. Poslední co uživatel musí vybrat je zda-li chce vytvořit novou prázdnou strukturu nebo zda-li chce vygenerovat kružnici či mřížku se zadanými parametry. Po vytvoření příslušné struktury je řízení předáno zpět hlavnímu oknu aplikace. 48

49 GenerateCircleWindow Obrázek 16: Ukážka okna GenerateCircleWindow Zdroj: autorem vytvořeno v aplikaci MS Visual Studio graficky upraveno v aplikaci MS Paint Toto okno může být zobrazeno ve dvou případech: Uživatel při vytváření nové struktury vybral možnost vygenerovat vrcholy s rozmístěním do kružnice Uživatel při práci se strukturou v hlavním okně aplikace použil funkčnost transformace do kružnice. Vzhledem k tomu, že oba případy vyžadují obdobné využití funkčností třídy GraphGenerator a téměř stejné uživatelské nastavení tak jsem se rozhodl použít pouze jedno okno, které je v případě, že je volána transformace upraveno tak, že je vypnuto vstupní pole pro počet vrcholů. V případě, že je okno zobrazeno při vytváření nové struktury tak uživatel zadá požadovaný počet vrcholů k vygenerování a vybere zdali chce střed kružnice umístit do středu aktuálně zobrazené oblasti v hlavním okně aplikace, nebo zdali chce střed kružnice umístit do středu pracovní plochy. První možnost byla implementována proto, že může nastat situace kdy uživatel má nastavenu velkou pracovní plochu a chce vytvořit kružnici o malém počtu vrcholů a nechce aby byly od sebe velmi vzdáleny a tudíž bylo zobrazení nepřehledné. V druhém případě, kdy je okno zobrazeno po zavolání funkčnosti transformace je postup identický s tím rozdílem, že uživatel nezadává počet vrcholů, ale jen vybírá kam chce umístit střed kružnice. 49

50 GenerateGridWindow Obrázek 17: Ukázka okna GenerateGridWindow Zdroj: autorem vytvořeno v aplikaci MS Visual Studio graficky upraveno v aplikaci MS Paint GenerateGridWindow bude stejně jako GenerateCircleWindow sloužit jak při vytváření nové struktury tak při transformaci do mřížky pro zadání počtu řádků a počtu sloupců vytvářené/transformované mřížky. Po zadání počtu sloupců a řádků jsou zavolány příslušné metody třídy Graph- Generator a řízení je předáno hlavnímu oknu aplikace AddEdgesToCircleWindow Obrázek 18: Ukázka okna AddEdgesToCircleWindow Zdroj: autorem vytvořeno v aplikaci MS Visual Studio graficky upraveno v aplikaci MS Paint 50

51 Toto okno je zobrazeno v případě, že uživatel chce přidat hrany do relační struktury(kružnice). Implementovány jsou dvě možnosti přidání hran viz popis implementace třídy GraphGenerator. Uživatel tedy vybere jakým způsobem chce hrany přidat a o jaké typy hran se bude jednat AddEdgesToGridWindow Obrázek 19: Ukázka okna AddEdgesToGridWindow Zdroj: autorem vytvořeno v aplikaci MS Visual Studio graficky upraveno v aplikaci MS Paint Toto okno je zobrazeno v případě, že uživatel chce přidat hrany do relační struktury(mřížky). Implementovány jsou rovněž dvě možnosti přidání hran viz (dopln odkaz na GraphGenerator). Uživatel tedy vybere jakým způsobem chce hrany přidat a o jaké typy hran se bude jednat. 51

52 CustomizeEditorWindow Obrázek 20: Ukázka okna CustomizeEditorWindow Zdroj: autorem vytvořeno v aplikaci MS Visual Studio graficky upraveno v aplikaci MS Paint CustomizeEditorWindow slouží pro konfiguraci aplikace. Nyní je uživatelská konfigurace omezena na následující nastavení: Počet řádků UIGrid Počet sloupců UIGrid Šířka pracovní plochy v hlavním okně aplikace (Canvas) Výška pracovní plochy v hlavním okně aplikace (Canvas) Nicméně současná implementace pomocí statické třídy ApplicationConfiguration s uložením dat v XML souboru umožňuje snadné rozšíření o uživatelskou konfiguraci např. barev jednotlivých elementů, tloušťky křivek reprezentujících hrany atd. Toto rozšíření by mělo spočívat v přidání dalších ovládacích prvků, které uživateli umožní např. vybrat příslušnou barvu a implementaci využití příslušných vlastností třídy ApplicationConfiguration jako je tomu u nyní uživatelsky konfigurovatelných nastavení. 52

53 HideEdgesWindow Obrázek 21: Ukázka okna HideEdgesWindow Zdroj: autorem vytvořeno v aplikaci MS Visual Studio graficky upraveno v aplikaci MS Paint Poslední okno, kterým se budu zabývat je okno HideEdgesWindow. Toto okno je využíváno pro funkčnost skrytí/zobrazení hran určitých typů, kterou uživatel může zavolat z hlavního okna aplikace. Jedná se o jednoduché okno kde uživatel pouze vybere, které typy hran se mají zobrazovat. 53

54 12. ZÁVĚR V rámci této práce byla navržena aplikace, která umožní pracovat s relačními strukturami, které obsahují binární relace různých typů. Tyto struktury jsou přímým zobecněním grafů a lze jejich pomocí vyjádřit mnoho reálných problémů z různých oblastí. Tyto oblasti mohou být např. analýzy silničních sítí, analýzy struktur odkazů mezi webovými stránkami či analýza vzájemných vztahů aktérů v rámci sociálních sítích. Je třeba uvést, že pro některé vztahy je zapotřebí, aby jednotlivé hrany měly své ohodnocení(váhy). Současná implementace aplikace uživatelské zadávání vah jednotlivých hran nyní neumožňuje, nicméně aplikace je na takovéto rozšíření připravena. V této práci je také stručně pojednáno o obecné možnosti zasazení navržené aplikace do řešení reálných problémů. Přičemž implementovaná aplikace může sloužit jako jednoduchý grafický nástroj pro zadávání a další úpravy relačních struktur, pomocí kterých lze některé problémy z výše uvedených oblastí řešit. Zde je potřeba zdůraznit, že aplikace umožňuje ukládat zadané relační struktury do souborů obecného a rozšiřitelného datového formátu XML. Takováto reprezentace může sloužit například jako vstup pro další výpočetní aplikace, přičemž je důležité, že data uložená v těchto XML souborech je možné dále transformovat (ne pomocí navržené aplikace) tak, aby odpovídala požadavkům na vstupní data jednotlivých aplikací, která mohou s relačními strukturami dále pracovat. Aplikace může také najít své uplatnění v dokumentaci např. experimentů při řešení různých problému a to proto, že umožňuje uložení grafické reprezentace relačních struktur do bezeztrátového formátu PNG. Aplikace je navržena a implementována tak, aby její implementace byla přehledná a rozšiřitelná, proto je aplikace rozdělena do tří vrstev. Jedná se o vrstvy datovou, vrstvu aplikační logiky a prezentační vrstvu. Aplikace je implementována pomocí objektově orientovaného jazyka C# za použití frameworku.net s využitím moderní technologie WPF. Jedná se tedy o aplikaci cílenou na současné moderní verze operační systému MS Windows. Hlavním důvodem volby technologie WPF je snadnější práce s vektorovou grafikou. Vzhledem k volbě technologie WPF je prezentační vrstva tvořena okny deklarovanými pomocí značkovacího jazyka XAML, což umožňuje snadné oddělení vzhledu uživatelského rozhraní od aplikační logiky. 54

55 13. CONCLUSION This application has been developed, to be able to operate with relational structures, which contain binary relations of various types. These structures are direct generalization of graphs and can be used to represent many practically motivated problems from various fields. For example: transportation network analysis, web page link analysis or analysis of connections between actors within social networks. Some of these connections require to have their values (weights). Actual implementation of the application does not support user creation of weighted edges, but it is possible to extend the application, because of it's extendable design. This work briefly describes, how the designed application could be used during practical problems solving. The application could be used as simple graphic tool, to create and modify relational structures, used to represent problems from the fields listed above. It is necessary to state that, the application offers functionality to save relational structures to the general and extendable XML format. This representation could be used as an input for other computing applications. Data representation of relational structures can be simply transformed (not by this application), because of the XML format character. The application can be also used for documentation of experiments during various problems solving, because it offers functionality to save graphic representation of relational structures to the PNG graphic format. The application has been designed, to have understandable and extendable implementation. That is, why the application has been divided into three layers (data layer, application logic layer and presentation layer). The application has been implemented using object-oriented C# programming language, modern technology WPF and.net framework. The application has been targeted on modern versions of the MS Windows operation system. Main reason for choosing the WPF technology is fact that, WPF offers simple vector graphic manipulation as well as declarative implementation of user interface windows using the XAML markup language. 55

56 14. SEZNAM POUŽITÉ LITERATURY 1. Jiří Matoušek a Jaroslav Nešetřil. Kapitoly z diskrétní matematiky. Univerzita Karlova v Praze: Nakladatelství Karolinum ISBN Wilfrid Hodges. Shorter Model Theory. Cambridge University Press ISBN paperback. 3. Jonathan L. Gross, Jay Yellen. Graph Theory and Its Applications. Chapman & Hall/CRC, ISBN X. 4. Elliote Rusty Harold and W. Scott Means. XML in a Nutshell, Third edition. O'Reilly ISBN Bernd Bruegge and Allen H. Dution. Object-oriented software engineering: using UML, patterns, and Java. Prentice Hall, ISBN , Greg Roelofs. PNG: the definitive guide. O'Reilly, ISBN , Simon Robinson, Christian Nagel, Jay Glynn. Professional C#. Wiley Pub., ISBN , Matthew MacDonald. Pro Wpf in C# Apress, ISBN , Lori A. MacVittie. XAML in a nutshell. O'Reilly Media, Inc., ISBN , Linton C. Freeman. Social network analysis. SAGE, ISBN , Stanley Wasserman, Katherine Faust. Social network analysis: methods and applications. Cambridge University Press, Joseph C. Rattz. Jr., Adam Freeman. Pro Linq: Language Integrated Query in C# Apress, ISBN ,

57 15. SEZNAM POUŽITÝCH INTERNETOVÝCH ZDROJŮ 1. Wikipedia ( ); Orientovaný graf Wikipedia ( ); Graph Theory Wikipedia ( ); Social network Wikipedia ( ); Social network analysis Wikipedia ( ); Portable Network Graphics MSDN ( ); Introduction to WPF MSDN ( ); Introduction to WPF - Graphics Wikipedia ( ); Bézierova křivka. 57

58 16. SEZNAM POUŽITÝCH SYMBOLŮ A ZKRATEK Zkratka Popisek {x, y} Neuspořádaná dvojice x, y R G= V, E x, x Kn e w e Cn C t Uspořádaná dvojice Relace Graf jako uspořádaná dvojice vrcholů a hran Smyčka Úplný graf s n vrcholy Hrana e Váha hrany e Kružnice Funkce popisující dráhu Beziérovi křivky XML PNG UC WPF XAML LINQ X (v popisu událostí) Extensible Markup Language Portable Network Graphics Use Case (Případ užití) Windows Presentation Foundation Extensible Application Markup Language Language Integrated Query Libovolná akce!= (v popisu událostí) Libovolná akce různá od uvedené 58

59 17. SEZNAM OBRÁZKŮ 1. Obrázek 1: Ukázka orientovaného grafu, neorientovaného grafu a smyčky 2. Obrázek 2: Úplný graf 3. Obrázek 3: Kružnice 4. Obrázek 4: Orientovaný a neorientovaný graf 5. Obrázek 5: Multigraf a relační struktura 6. Obrázek 6: Zachycení vzájemných propojení různých typů mezi aktéry sociální sítě 7. Obrázek 7: Datová vrstva aplikace 8. Obrázek 8: Třídy aplikační logiky a prezentační vrstvy 9. Obrázek 9: Třídy aplikační a prezentační vrstvy - grafická reprezentace prvků relační struktury a vodící mřížka 10. Obrázek 10: Ukázka dotazu pro výběr orientovaných hran mezi vrcholy v1 a v2 11. Obrázek 11: Zdrojový kód pro generování vrcholů kružnice 12. Obrázek 12: Zdrojový kód pro generování vrcholů do mřížky 13. Obrázek 13: XAML struktura hlavního okna aplikace 14. Obrázek 14: Ukázka hlavního okna aplikace 15. Obrázek 15: Ukázka okna NewGraphWindow 16. Obrázek 16: Ukážka okna GenerateCircleWindow 17. Obrázek 17: Ukázka okna GenerateGridWindow 18. Obrázek 18: Ukázka okna AddEdgesToCircleWindow 19. Obrázek 19: Ukázka okna AddEdgesToGridWindow 20. Obrázek 20: Ukázka okna CustomizeEditorWindow 21. Obrázek 21: Ukázka okna HideEdgesWindow 59

60 18. SEZNAM TABULEK 1. Tabulka 1: Přehled případů užití 2. Tabulka 2: Události UIVertex 3. Tabulka 3: Události UIEdge 4. Tabulka 4: Události Canvas 5. Tabulka 5: Události MainWindow 60

61 19. SEZNAM PŘÍLOH 1. Třídní diagram aplikace část 1 2. Třídní diagram aplikace část 2 3. Ukázka XML souboru s exportovanou relační strukturou 4. XSD šablona pro datový XML souboru 5. CD obsahující text práce, implementovanou aplikaci a zdrojové kódy 61

62 PŘÍLOHA 1 TŘÍDNÍ DIAGRAM APLIKACE ČÁST 1 62

63 20. PŘÍLOHA 2 TŘÍDNÍ DIAGRAM APLIKACE ČÁST 2 63

Postupy práce se šablonami IS MPP

Postupy práce se šablonami IS MPP Postupy práce se šablonami IS MPP Modul plánování a přezkoumávání, verze 1.20 vypracovala společnost ASD Software, s.r.o. dokument ze dne 27. 3. 2013, verze 1.01 Postupy práce se šablonami IS MPP Modul

Více

MBI - technologická realizace modelu

MBI - technologická realizace modelu MBI - technologická realizace modelu 22.1.2015 MBI, Management byznys informatiky Snímek 1 Agenda Technická realizace portálu MBI. Cíle a principy technického řešení. 1.Obsah portálu - objekty v hierarchiích,

Více

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13. Grafy doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Grafy 104 / 309 Osnova přednášky Grafy

Více

Zobrazte si svazy a uspořádané množiny! Jan Outrata

Zobrazte si svazy a uspořádané množiny! Jan Outrata LatVis Zobrazte si svazy a uspořádané množiny! Jan Outrata Motivace potřeba visualizovat matematické (algebraické) struktury rychle, přehledně a automaticky počítačovými prostředky ruční kreslení je zdlouhavé

Více

GIS Geografické informační systémy

GIS Geografické informační systémy GIS Geografické informační systémy Obsah přednášky Prostorové vektorové modely Špagetový model Topologický model Převody geometrií Vektorový model Reprezentuje reálný svět po jednotlivých složkách popisu

Více

Základní pojmy teorie grafů [Graph theory]

Základní pojmy teorie grafů [Graph theory] Část I Základní pojmy teorie grafů [Graph theory] V matematice grafem obvykle rozumíme grafické znázornění funkční závislosti. Pro tento předmět je však podstatnější pohled jiný. V teorii grafů rozumíme

Více

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA BAKALÁŘSKÁ PRÁCE 2002 SEDLÁK MARIAN - 1 - OSTRAVSKÁ UNIVERZITA PŘÍRODOVĚDECKÁ FAKULTA KATEDRA INFORMATIKY A POČÍTAČŮ Vizualizace principů výpočtu konečného

Více

Reliance 3 design OBSAH

Reliance 3 design OBSAH Reliance 3 design Obsah OBSAH 1. První kroky... 3 1.1 Úvod... 3 1.2 Založení nového projektu... 4 1.3 Tvorba projektu... 6 1.3.1 Správce stanic definice stanic, proměnných, stavových hlášení a komunikačních

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

GEOM LITE - MANUÁL hlavní obrazovka

GEOM LITE - MANUÁL hlavní obrazovka GEOM LITE - MANUÁL hlavní obrazovka Levý panel Pomoci levého panelu je možné vybírat aktivní vrstvy, měnit jejich průhlednost a pořadí. V dolní části je zobrazena legenda. Horní panel V horním panelu se

Více

5.15 INFORMATIKA A VÝPOČETNÍ TECHNIKA

5.15 INFORMATIKA A VÝPOČETNÍ TECHNIKA 5.15 INFORMATIKA A VÝPOČETNÍ TECHNIKA 5. 15. 1 Charakteristika předmětu A. Obsahové vymezení: IVT se na naší škole vyučuje od tercie, kdy je cílem zvládnutí základů hardwaru, softwaru a operačního systému,

Více

Odpadové hospodářství v ORP Ústí nad Labem

Odpadové hospodářství v ORP Ústí nad Labem mapová aplikace Odpadové hospodářství Návod na ovládání veřejné mapové aplikace: Odpadové hospodářství v ORP Ústí nad Labem Pro správné zobrazení mapové aplikace je potřeba mít nainstalovaný zásuvný modul

Více

Pro správné zobrazení mapové aplikace je potřeba mít nainstalovaný zásuvný modul Flash Adobe Player.

Pro správné zobrazení mapové aplikace je potřeba mít nainstalovaný zásuvný modul Flash Adobe Player. Návod na ovládání veřejné mapové aplikace: Generel cyklodopravy Pro správné zobrazení mapové aplikace je potřeba mít nainstalovaný zásuvný modul Flash Adobe Player. Logo, název Panel nástrojů Odkazy Vrstvy

Více

Vzdělávací obsah vyučovacího předmětu

Vzdělávací obsah vyučovacího předmětu V.9.3. Vzdělávací obsah vyučovacího předmětu Vzdělávací oblast: Inormatika a informační a komunikační technologie Vyučovací předmět: Informatika Ročník: 1. ročník + kvinta chápe a používá základní termíny

Více

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části

Více

GIS Geografické informační systémy

GIS Geografické informační systémy GIS Geografické informační systémy Obsah přednášky Prostorové vektorové modely Špagetový model Topologický model Převody geometrií Vektorový model Reprezentuje reálný svět po jednotlivých složkách popisu

Více

Průvodce aplikací FS Karta

Průvodce aplikací FS Karta Průvodce aplikací FS Karta Základní informace k Aplikaci Online aplikace FS Karta slouží k bezpečnému ukládání osobních údajů fyzických osob a k jejich zpracování. Osobní údaje jsou uloženy ve formě karty.

Více

TGH02 - teorie grafů, základní pojmy

TGH02 - teorie grafů, základní pojmy TGH02 - teorie grafů, základní pojmy Jan Březina Technical University of Liberec 28. února 2017 Metainformace materiály: jan.brezina.matfyz.cz/vyuka/tgh (./materialy/crls8.pdf - Introduction to algorithms)

Více

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML ROZHRANÍ ESA XML Ing. Richard Vondráček SCIA CZ, s. r. o., Thákurova 3, 160 00 Praha 6 www.scia.cz 1 OTEVŘENÝ FORMÁT Jednou z mnoha užitečných vlastností programu ESA PT je podpora otevřeného rozhraní

Více

RELAČNÍ DATABÁZE ACCESS

RELAČNÍ DATABÁZE ACCESS RELAČNÍ DATABÁZE ACCESS 1. Úvod... 2 2. Základní pojmy... 3 3. Vytvoření databáze... 5 4. Základní objekty databáze... 6 5. Návrhové zobrazení tabulky... 7 6. Vytváření tabulek... 7 6.1. Vytvoření tabulky

Více

Strategie ochrany před negativními dopady povodní a erozními jevy přírodě blízkými opatřeními v České republice

Strategie ochrany před negativními dopady povodní a erozními jevy přírodě blízkými opatřeními v České republice Strategie ochrany před negativními dopady povodní a erozními jevy přírodě blízkými opatřeními v České republice Návod k prezentačnímu mapovému portálu Obsah: 1. Úvod... 3 2. Obecná část mapového portálu...

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího

Více

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox 02. HODINA Obsah: 1. Typy souborů a objektů 2. Ovládací prvky Label a TextBox 3. Základní příkazy a vlastnosti ovládacích prvků 4. Práce s objekty (ovládací prvky a jejich vlastnosti) 2.1 Typy souborů

Více

Možnosti tisku v MarushkaDesignu

Možnosti tisku v MarushkaDesignu 0 Možnosti tisku v MarushkaDesignu OBSAH 1 CÍL PŘÍKLADU...2 2 PRÁCE S PŘÍKLADEM...2 3 UKÁZKA DIALOGOVÉHO OKNA...3 4 STRUČNÝ POPIS PŘÍKLADU V MARUSHKADESIGNU...5-1 - 1 Cíl příkladu V tomto příkladu si ukážeme

Více

SCHÉMA aplikace ObčanServer 2 MENU aplikace Mapové kompozice

SCHÉMA aplikace ObčanServer 2 MENU aplikace Mapové kompozice ObčanServer Nápověda SCHÉMA aplikace ObčanServer 2 MENU aplikace Mapové kompozice Příklady mapových kompozic Katastrální mapa Územní plán Funkční plochy Letecký snímek Pasport hřbitova Císařské otisky

Více

Novinky v Solid Edge ST7

Novinky v Solid Edge ST7 Novinky v Solid Edge ST7 Primitiva Nově lze vytvořit základní geometrii pomocí jednoho příkazu Funkce primitiv je dostupná pouze v synchronním prostředí Těleso vytvoříme ve dvou navazujících krocích, kde

Více

Specifikace softwarového díla & Časový plán implementace. pro. MEF Editor

Specifikace softwarového díla & Časový plán implementace. pro. MEF Editor Specifikace softwarového díla & Časový plán implementace pro MEF Editor Cílem projektu je vytvoření pluginu do vývojového prostředí Visual Studio 2010. Plugin bude umožňovat grafickou editaci objektů spojených

Více

BALISTICKÝ MĚŘICÍ SYSTÉM

BALISTICKÝ MĚŘICÍ SYSTÉM BALISTICKÝ MĚŘICÍ SYSTÉM UŽIVATELSKÁ PŘÍRUČKA Verze 2.3 2007 OBSAH 1. ÚVOD... 5 2. HLAVNÍ OKNO... 6 3. MENU... 7 3.1 Soubor... 7 3.2 Měření...11 3.3 Zařízení...16 3.4 Graf...17 3.5 Pohled...17 1. ÚVOD

Více

Územní plán Ústí nad Labem

Územní plán Ústí nad Labem mapová aplikace Územní plán Ústí nad Labem Návod na ovládání veřejné mapové aplikace: Územní plán Ústí nad Labem Logo, název Panel nástrojů Vrstvy Odkazy Výběr podkladové mapy Rychlá navigace Hledání Obsah

Více

Obsah. Zpracoval:

Obsah. Zpracoval: Zpracoval: houzvjir@fel.cvut.cz 03. Modelem řízený vývoj. Doménový (business), konceptuální (analytický) a logický (návrhový) model. Vize projektu. (A7B36SIN) Obsah Modelem řízený vývoj... 2 Cíl MDD, proč

Více

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ ÚVOD Technologie elastické konformní transformace rastrových obrazů je realizována v rámci webové aplikace NKT. Tato webová aplikace provádí

Více

INFORMATIKA PRO ZŠ. Ing. Veronika Šolcová

INFORMATIKA PRO ZŠ. Ing. Veronika Šolcová INFORMATIKA PRO ZŠ 2 Ing. Veronika Šolcová 6. 7. 2016 1 Anotace: 1. Nástroje I 2. Ukládání dokumentu 3. Otevírání dokumentu 4. Nový dokument 5. Nástroje II 6. Nástroje III 7. Kopírování 8. Mazání 9. Text

Více

Programátorská dokumentace

Programátorská dokumentace Programátorská dokumentace Požadavky Cílem tohoto programu bylo představit barevné systémy, zejména převody mezi nejpoužívanějšími z nich. Zároveň bylo úkolem naprogramovat jejich demonstraci. Pro realizaci

Více

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů. Modely datové Existují různé úrovně pohledu na data. Nejvyšší úroveň je úroveň, která zachycuje pouze vztahy a struktury dat samotných. Konceptuální model - E-R model. Další úrovní je logická úroveň Databázové

Více

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová Základy informatiky Teorie grafů Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová Obsah přednášky Barvení mapy Teorie grafů Definice Uzly a hrany Typy grafů Cesty, cykly, souvislost grafů Barvení mapy

Více

Globema CS s.r.o. NetStork. Popis funkcí

Globema CS s.r.o. NetStork. Popis funkcí Globema CS s.r.o. NetStork Popis funkcí Obsah 1 Automatizovaná kontextová nápověda... 3 2 Automaticky generovaná interaktivní schémata... 3 2.1 Schémata průběhů trubek, výkopů... 4 2.2 Schémata šachet...

Více

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ]

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ] Aplikované úlohy Solid Edge SPŠSE a VOŠ Liberec Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ] 1 CÍL KAPITOLY V této kapitole si představíme Nástroje kreslení pro tvorbu 2D skic v modulu Objemová součást

Více

Nápověda k používání mapové aplikace Katastrální mapy Obsah

Nápověda k používání mapové aplikace Katastrální mapy Obsah Nápověda k používání mapové aplikace Katastrální mapy Obsah Práce s mapou aplikací Marushka... 2 Přehledová mapa... 3 Změna měřítka... 4 Posun mapy... 5 Druhy map... 6 Doplňkové vrstvy... 7 Vyhledávání...

Více

Kontingenční tabulky v MS Excel 2010

Kontingenční tabulky v MS Excel 2010 Kontingenční tabulky v MS Excel 2010 Autor: RNDr. Milan Myšák e-mail: milan.mysak@konero.cz Obsah 1 Vytvoření KT... 3 1.1 Data pro KT... 3 1.2 Tvorba KT... 3 2 Tvorba KT z dalších zdrojů dat... 5 2.1 Data

Více

Jihočeská univerzita v Českých Budějovicích Pedagogická fakulta Katedra informatiky Akademický rok: 2008-09

Jihočeská univerzita v Českých Budějovicích Pedagogická fakulta Katedra informatiky Akademický rok: 2008-09 Jihočeská univerzita v Českých Budějovicích Pedagogická fakulta Katedra informatiky Akademický rok: 2008-09 Studijní obor: Výpočetní technika a informatika Technologie SVG aktuální standard webové vektorové

Více

Návod k použití softwaru Solar Viewer 3D

Návod k použití softwaru Solar Viewer 3D Návod k použití softwaru Solar Viewer 3D Software byl vyvinut v rámci grantového projektu Technologie a systém určující fyzikální a prostorové charakteristiky pro ochranu a tvorbu životního prostředí a

Více

Popis funkcí tlačítek jednotlivých modulů programu OGAMA

Popis funkcí tlačítek jednotlivých modulů programu OGAMA Nevázaná příloha bakalářské práce VYUŽITÍ OPEN-SOURCE NÁSTROJŮ PRO PŘÍPRAVU, PRŮBĚH A VYHODNOCENÍ EYE-TRACKING EXPERIMENTŮ Popis funkcí tlačítek jednotlivých modulů programu OGAMA Michal KUČERA, 2014 Replay

Více

VIANIV. Interaktivní návrh nivelety. Příručka uživatele. Revize PRAGOPROJEKT a.s. & VIAPONT s.r.o.

VIANIV. Interaktivní návrh nivelety. Příručka uživatele. Revize PRAGOPROJEKT a.s. & VIAPONT s.r.o. ROADPAC 06 Příručka uživatele Revize 13.08.2006 PRAGOPROJEKT a.s. & VIAPONT s.r.o. PRAGOPROJEKT a.s., 147 54 Praha 4, K Ryšánce 16 VIAPONT s.r.o., Vodní 13, 602 00 Brno O B S A H 1. ÚVOD... 3 2. SOUBORY

Více

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná. Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,

Více

Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/

Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/ Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/02.0024 Geografie Mapové servery a jejich ovládání Ovládání mapových serverů v prostředí

Více

CORELDRAW SEZNÁMENÍ S PROGRAMEM. Lenka Bednaříková

CORELDRAW SEZNÁMENÍ S PROGRAMEM. Lenka Bednaříková CORELDRAW SEZNÁMENÍ S PROGRAMEM Lenka Bednaříková SEZNÁMENÍ S OKNEM APLIKACE Panel nabídek Panel nástrojů Panel vlastností Ukotvitelné panely Okno nástrojů Paleta barev Okno kresby Pravítko Stavový řádek

Více

Rastrová reprezentace

Rastrová reprezentace Rastrová reprezentace Zaměřuje se na lokalitu jako na celek Používá se pro reprezentaci jevů, které plošně pokrývají celou oblast, případně se i spojitě mění. Používá se i pro rasterizované vektorové vrstvy,

Více

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců.

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců. Přehledy pro Tabulky V programu CONTACT Professional 5 naleznete u firem, osob a obchodních případů záložku Tabulka. Tuto záložku lze rozmnožit, přejmenovat a sloupce je možné definovat dle vlastních požadavků

Více

Mapa Česka: www.mapa-ceska.cz

Mapa Česka: www.mapa-ceska.cz Mapa Česka: www.mapa-ceska.cz Mapový portál Mapa Česka, který je dostupný na internetové adrese www.mapa-ceska.cz, byl vytvořen v roce 2014 v rámci bakalářské práce na Přírodovědecké fakultě Univerzity

Více

Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta. 6 RNDr., Ph.D. Katedra didaktiky matematiky Univerzita Karlova v Praze Matematicko-fyzikální fakulta petra.surynkova@mff.cuni.cz http://surynkova.info množina vrcholů a množina hran hrana vždy spojuje

Více

DUM 03 téma: Tvary - objekty

DUM 03 téma: Tvary - objekty DUM 03 téma: Tvary - objekty ze sady: 1 tematický okruh sady: Vektorová grafika ze šablony: 09 Počítačová grafika určeno pro: 2. ročník vzdělávací obor: vzdělávací oblast: číslo projektu: anotace: metodika:

Více

RadioBase 3 Databázový subsystém pro správu dat vysílačů plošného pokrytí

RadioBase 3 Databázový subsystém pro správu dat vysílačů plošného pokrytí Databázový subsystém pro správu dat vysílačů plošného pokrytí RadioBase je datový subsystém pro ukládání a správu dat vysílačů plošného pokrytí zejména pro služby analogové a digitální televize a rozhlasu.

Více

Tvorba kurzu v LMS Moodle

Tvorba kurzu v LMS Moodle Tvorba kurzu v LMS Moodle Před počátkem práce na tvorbě základního kurzu znovu připomínám, že pro vytvoření kurzu musí být profil uživatele nastaven administrátorem systému minimálně na hodnotu tvůrce

Více

Profilová část maturitní zkoušky 2013/2014

Profilová část maturitní zkoušky 2013/2014 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

Úvod. Program ZK EANPRINT. Základní vlastnosti programu. Co program vyžaduje. Určení programu. Jak program spustit. Uživatelská dokumentace programu

Úvod. Program ZK EANPRINT. Základní vlastnosti programu. Co program vyžaduje. Určení programu. Jak program spustit. Uživatelská dokumentace programu sq Program ZK EANPRINT verze 1.20 Uživatelská dokumentace programu Úvod Základní vlastnosti programu Jednoduchost ovládání - umožňuje obsluhu i málo zkušeným uživatelům bez nutnosti většího zaškolování.

Více

xrays optimalizační nástroj

xrays optimalizační nástroj xrays optimalizační nástroj Optimalizační nástroj xoptimizer je součástí webového spedičního systému a využívá mnoho z jeho stavebních bloků. xoptimizer lze nicméně provozovat i samostatně. Cílem tohoto

Více

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MS Access generování složitějších sestav Ing. Kotásek Jaroslav

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MS Access generování složitějších sestav Ing. Kotásek Jaroslav Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Autor: Číslo: Anotace: Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MS Access generování

Více

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Otázka č. 1 Datový model 1. Správně navržený ERD model dle zadání max. 40 bodů teoretické znalosti konceptuálního modelování správné

Více

GRAFICKÉ ŘEŠENÍ ROVNIC A JEJICH SOUSTAV

GRAFICKÉ ŘEŠENÍ ROVNIC A JEJICH SOUSTAV GRAFICKÉ ŘEŠENÍ ROVNIC A JEJICH SOUSTAV Mgr. Jitka Nováková SPŠ strojní a stavební Tábor Abstrakt: Grafické řešení rovnic a jejich soustav je účinná metoda, jak vysvětlit, kolik různých řešení může daný

Více

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Otázka č. 1 Datový model 1. Správně navržený ERD model dle zadání max. 40 bodů teoretické znalosti konceptuálního modelování správné

Více

Systém elektronického rádce v životních situacích portálu www.senorady.cz

Systém elektronického rádce v životních situacích portálu www.senorady.cz Systém elektronického rádce v životních situacích portálu www.senorady.cz Obec Senorady Miroslav Patočka 2006 Obsah: 1. Úvodní informace 1.1 Informace pro uživatele 1.1.1 Přístupnost HTML, PDA, WAP, XML

Více

Hlavní okno aplikace

Hlavní okno aplikace Hlavní okno aplikace Ovládací prvky mapy Základní ovládací panel Panely pro ovládání jednotlivých funkcí aplikace jsou zobrazeny/skryty po kliknutí na záhlaví příslušného panelu. Vrstvy Seznam vrstev slouží

Více

POČÍTAČOVÁ GRAFIKA VEKTOROVÁ GRAFIKA VÍCENÁSOBNÉ KOPÍROVÁNÍ

POČÍTAČOVÁ GRAFIKA VEKTOROVÁ GRAFIKA VÍCENÁSOBNÉ KOPÍROVÁNÍ POČÍTAČOVÁ GRAFIKA VEKTOROVÁ GRAFIKA VÍCENÁSOBNÉ KOPÍROVÁNÍ VÍCENÁSOBNÉ KOPÍROVÁNÍ Kopírování jednoho prvku je častá činnost v mnoha editorech. Vícenásobné kopírování znamená opakování jednoho prvku v

Více

DATABÁZE MS ACCESS 2010

DATABÁZE MS ACCESS 2010 DATABÁZE MS ACCESS 2010 KAPITOLA 5 PRAKTICKÁ ČÁST TABULKY POPIS PROSTŘEDÍ Spuštění MS Access nadefinovat název databáze a cestu k uložení databáze POPIS PROSTŘEDÍ Nahoře záložky: Soubor (k uložení souboru,

Více

Projekt. Sestavení projektu

Projekt. Sestavení projektu Projekt V záložce Nástroje / Projekt MISYS jsou přehledně uspořádány funkce, které slouží k sestavení a editaci projektu. Lze také zapnout nástrojovou lištu Projekt (pravé tlačítko myši v šedé oblasti

Více

Použití prezentací. K heslovitému sdělení informací. Oživení obrázky, schématy, tabulkami, Nevhodné pro dlouhé texty. Doprovodná pomůcka při výkladu

Použití prezentací. K heslovitému sdělení informací. Oživení obrázky, schématy, tabulkami, Nevhodné pro dlouhé texty. Doprovodná pomůcka při výkladu PowerPoint 2007 Osnova Koncept a použití prezentací Seznámení s pracovním prostředím MS Word 2007 Režimy zobrazení Užitečná nastavení Základní práce s dokumenty Práce s textem a objekty Šablony a jejich

Více

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze. 3.00.01.09 Kontakty 08/2010. 1 Obsah

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze. 3.00.01.09 Kontakty 08/2010. 1 Obsah 1 Obsah 1 Obsah... 1 2 Úvod a spouštění SW Palstat CAQ... 2 2.1.1 Návaznost na další SW moduly Palstat CAQ... 2 2.2 Přihlášení do programu... 2 2.2.1 Stanovení přístupu a práv uživatele... 2 2.2.2 Spuštění

Více

AC FORM FILLER. aplikace pro podání žádosti o poskytnutí finančního příspěvku. Verze 1.0

AC FORM FILLER. aplikace pro podání žádosti o poskytnutí finančního příspěvku. Verze 1.0 aplikace pro podání žádosti o poskytnutí finančního příspěvku Verze 1.0 2013 AutoCont CZ a.s. Veškerá práva vyhrazena. Tento dokument obsahuje informace důvěrného charakteru a informace v něm obsažené

Více

DOKUMENTACE REDAKČNÍHO SYSTÉMU PINYA

DOKUMENTACE REDAKČNÍHO SYSTÉMU PINYA DOKUMENTACE REDAKČNÍHO SYSTÉMU PINYA Obsah Obsah... 4 Pinya CMS... 5 Přihlášení do systému... 6 Položky v menu administrace... 7 Uživatelé... 8 Správa uživatelů... 8 Nový uživatel... 9 Role... 10 Vytvoření

Více

UNIVERZITA PARDUBICE

UNIVERZITA PARDUBICE UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Uživatelský manuál: Korporátní publikační systém se zaměřením na správu, výrobu a distribuci reklamních tiskovin Vojtěch Pešl Uživatelský manuál

Více

7. Enterprise Search Pokročilé funkce vyhledávání v rámci firemních datových zdrojů

7. Enterprise Search Pokročilé funkce vyhledávání v rámci firemních datových zdrojů 7. Enterprise Search Pokročilé funkce vyhledávání v rámci firemních datových zdrojů Verze dokumentu: 1.0 Autor: Jan Lávička, Microsoft Časová náročnost: 30 40 minut 1 Cvičení 1: Vyhledávání informací v

Více

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace. Popis ovládání 1. Úvod Tento popis má za úkol seznámit uživatele se základními principy ovládání aplikace. Ovládání je možné pomocí myši, ale všechny činnosti jsou dosažitelné také pomocí klávesnice. 2.

Více

Editor pro vizualizaci interiérů bytů

Editor pro vizualizaci interiérů bytů České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačové grafiky a interakce Bakalářská práce Editor pro vizualizaci interiérů bytů Dominik Vondráček Vedoucí práce: Ing. David Sedláček

Více

8.2 Používání a tvorba databází

8.2 Používání a tvorba databází 8.2 Používání a tvorba databází Slide 1 8.2.1 Základní pojmy z oblasti relačních databází Slide 2 Databáze ~ Evidence lidí peněz věcí... výběry, výpisy, početní úkony Slide 3 Pojmy tabulka, pole, záznam

Více

Uživatelská příručka. 06/2018 Technické změny vyhrazeny.

Uživatelská příručka. 06/2018 Technické změny vyhrazeny. Uživatelská příručka 1 OBSAH 1 ÚVOD... 3 1.1 Merbon SCADA... 3 1.1.1 K čemu program slouží...3 2 Přihlášení a odhlášení z programu... 4 3 Projekty... 5 3.1 Výběr zobrazení... 5 3.2 Schémata... 6 3.3 Grafy...

Více

Co je nového 2018 R2

Co je nového 2018 R2 Co je nového 2018 R2 Obsah NOVINKY... 5 1: Vyhledat prvek... 5 2: Čáry modelu podle... 6 3: Duplikovat výkresy... 7 4: Délka kabelů... 8 5: Výškové kóty... 9 VYLEPŠENÍ... 10 1: Excel Link... 10 2: Uspořádání

Více

Prostředí Microstationu a jeho nastavení. Nastavení výkresu

Prostředí Microstationu a jeho nastavení. Nastavení výkresu Prostředí Microstationu a jeho nastavení Nastavení výkresu 1 Pracovní plocha, panely nástrojů Seznámení s pracovním prostředím ovlivní pohodlí, rychlost, efektivitu a možná i kvalitu práce v programu Microstation.

Více

Popis a ovládání. Aplikace 602XML Filler

Popis a ovládání. Aplikace 602XML Filler Popis a ovládání Aplikace 602XML Filler Základní okno aplikace 602XML Filler Nástrojová lišta Otevřený formulář Pracovní panel Stavový řádek Kontextová nápověda k formulářovému poli Nástrojová lišta Otevře

Více

Příprava dat v softwaru Statistica

Příprava dat v softwaru Statistica Příprava dat v softwaru Statistica Software Statistica obsahuje pokročilé nástroje pro přípravu dat a tvorbu nových proměnných. Tyto funkcionality přinášejí značnou úsporu času při přípravě datového souboru,

Více

VY_32_INOVACE_INF.10. Grafika v IT

VY_32_INOVACE_INF.10. Grafika v IT VY_32_INOVACE_INF.10 Grafika v IT Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Jiří Kalous Základní a mateřská škola Bělá nad Radbuzou, 2011 GRAFIKA Grafika ve smyslu umělecké grafiky

Více

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Úvod do informatiky přednáška čtvrtá Miroslav Kolařík Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Obsah 1 Pojem relace 2 Vztahy a operace s (binárními) relacemi

Více

2. přednáška z předmětu GIS1 Data a datové modely

2. přednáška z předmětu GIS1 Data a datové modely 2. přednáška z předmětu GIS1 Data a datové modely Vyučující: Ing. Jan Pacina, Ph.D. e-mail: jan.pacina@ujep.cz Pro přednášku byly použity texty a obrázky z www.gis.zcu.cz Předmět KMA/UGI, autor Ing. K.

Více

Nemocnice. Prvotní analýza a plán projektu

Nemocnice. Prvotní analýza a plán projektu Nemocnice Projekt do předmětu AIS Prvotní analýza a plán projektu Lukáš Pohl, xpohll00, xkosti03 Jan Novák, xnovak79 2009/2010 1 Neformální specifikace FN potřebuje informační systém, který bude obsahovat

Více

Modul IRZ návod k použití

Modul IRZ návod k použití Modul IRZ návod k použití Verze: 2 Datum: 26. 2. 2016 Tento dokument představuje stručný návod na použití modulu IRZ v programu EVI 8. Modul IRZ je určen na evidenci odpadů pro IRZ provozovny a hlášení

Více

NetStork 6 Nové Funkce

NetStork 6 Nové Funkce Nové domy 154. 164 00 Praha Přední Kopanina, Česká republika t: +420 720 733 874 stepan.kaiser@globema.cz netstork.globema.cz Version 1.0 2016-02-04 NetStork 6 Nové Funkce. Obsah 1. Podpora pro Ethernet...

Více

Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1

Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Autor: Inovace a zkvalitnění výuky prostřednictvím ICT Základy parametrického modelování Skicovací nástroje

Více

UniLog-D. v1.01 návod k obsluze software. Strana 1

UniLog-D. v1.01 návod k obsluze software. Strana 1 UniLog-D v1.01 návod k obsluze software Strana 1 UniLog-D je PC program, který slouží k přípravě karty pro záznam událostí aplikací přístroje M-BOX, dále pak k prohlížení, vyhodnocení a exportům zaznamenaných

Více

GIS Geografické informační systémy

GIS Geografické informační systémy GIS Geografické informační systémy Obsah přednášky Prostorové vektorové modely Špagetový model Topologický model Vektorový model Reprezentuje reálný svět po jednotlivých složkách popisu geoprvků. Geometrická

Více

P r e z e n t a c e p r o j e k t u. Přílohy k prezentaci

P r e z e n t a c e p r o j e k t u. Přílohy k prezentaci P r e z e n t a c e p r o j e k t u Přílohy k prezentaci 1. M o d u l Základní pojmy informačních a komunikačních technologií (ICT) Pochopení hlavních pojmů a základní znalost různých částí počítače. Pochopit,

Více

Zobrazování těles. problematika geometrického modelování. základní typy modelů. datové reprezentace modelů základní metody geometrického modelování

Zobrazování těles. problematika geometrického modelování. základní typy modelů. datové reprezentace modelů základní metody geometrického modelování problematika geometrického modelování manifold, Eulerova rovnost základní typy modelů hranový model stěnový model objemový model datové reprezentace modelů základní metody geometrického modelování těleso

Více

Moderní technologie ve studiu aplikované fyziky CZ.1.07/2.2.00/ Množiny, funkce

Moderní technologie ve studiu aplikované fyziky CZ.1.07/2.2.00/ Množiny, funkce Moderní technologie ve studiu aplikované fyziky CZ.1.07/2.2.00/07.0018 2. Množiny, funkce MNOŽIN, ZÁKLDNÍ POJMY Pojem množiny patří v matematice ke stěžejním. Nelze jej zavést ve formě definice pomocí

Více

GIS Mikroregionu Telčsko

GIS Mikroregionu Telčsko GIS Mikroregionu Telčsko Spuštění aplikace v internetu http.//www.bnhelp.cz Tato adresa je pouze dočasná nově se bude do mapy přistupovat ze stránek www.telcsko.cz nebo www.telc-etc.cz. Skrze odkaz Přihlášení

Více

Kurz GIS v egovernmentu POKROČILÝ

Kurz GIS v egovernmentu POKROČILÝ Vzdělávání v egon centru UH Reg. č. projektu: CZ.1.04/4.1.00/40.00094 Kurz GIS v egovernmentu POKROČILÝ egon centrum Uherské Hradiště Školitel: Martin Hudec e-mail: martin.hudec@mesto-uh.cz Zpracoval:

Více

MANUÁL VÝPOČTOVÉHO SYSTÉMU W2E (WASTE-TO-ENERGY)

MANUÁL VÝPOČTOVÉHO SYSTÉMU W2E (WASTE-TO-ENERGY) MANUÁL VÝPOČTOVÉHO SYSTÉMU W2E (WASTE-TO-ENERGY) 0 1. PRACOVNÍ PLOCHA Uspořádání a vzhled pracovní plochy, se kterým se uživatel během práce může setkat, zobrazuje obr. 1. Obr. 1: Uspořádání pracovní plochy

Více

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro administrátory. Verze 1.

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro administrátory. Verze 1. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM Manuál pro administrátory Verze 1.0 2012 AutoCont CZ a.s. Veškerá práva vyhrazena. Tento

Více

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13 Obsah Úvod 11 Platforma.NET 11.NET Framework 11 Visual Basic.NET 12 1 Základní principy a syntaxe 13 Typový systém 13 Hodnotové typy 13 Struktury 15 Výčtové typy 15 Referenční typy 15 Konstanty 16 Deklarace

Více

V této příloze je podrobně popsána struktura XML dokumentu s mapou (viz kapitolu 5.3), příklad tohoto XML dokumentu je na přiloženém CD v souboru

V této příloze je podrobně popsána struktura XML dokumentu s mapou (viz kapitolu 5.3), příklad tohoto XML dokumentu je na přiloženém CD v souboru Příloha 1: Struktura XML dokumentu V této příloze je podrobně popsána struktura XML dokumentu s mapou (viz kapitolu 5.3), příklad tohoto XML dokumentu je na přiloženém CD v souboru /mapa/map.xml. Obsah

Více

Téma: Práce se základními objekty, výplní a obrysem

Téma: Práce se základními objekty, výplní a obrysem Téma: Práce se základními objekty, výplní a obrysem Vypracovala: Ing. Jana Wasserbauerová TE NTO PR OJ E KT J E S POLUFINANC OVÁN EVR OPS KÝ M S OC IÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ REPUBLIKY. Cíl:

Více

MULTISIM VÝUKOVÝ ELEKTRONICKÝ MATERIÁL

MULTISIM VÝUKOVÝ ELEKTRONICKÝ MATERIÁL MULTISIM VÝUKOVÝ ELEKTRONICKÝ MATERIÁL MULTISIM ELECTRONIC EDUCATION MATERIAL Pavel BENAJTR Resumé Tématem bakalářské práce bylo vytvoření výukového elektronického materiálu pro simulační program Multisim

Více