Mendelova univerzita v Brně Provozně ekonomická fakulta
Analýza a návrh informačního systému příspěvkové organizace DDM Tišnov Bakalářská práce
Vedoucí práce: doc. Ing. Ivana Rábová, Ph.D.
Jan Helán
Brno 2014
Na tomto místě bych rád poděkoval především paní doc. Ing. Ivaně Rábové, Ph.D. za vedení, cenné rady a připomínky při tvorbě této bakalářské práce. Dále bych také rád poděkoval panu doc. Ing. Dr. Jiřímu Rybičkovi za vytvoření a publikaci šablony pro sazbu závěrečných prací a také pracovníkům DDM Tišnov za možnost nahlédnutí do interních záležitostí a chodu organizace.
Čestné prohlášení Prohlašuji, že jsem tuto práci: Návrh a analýza informačního systému příspěvkové organizace DDM Tišnov vypracoval/a samostatně a veškeré použité prameny a informace jsou uvedeny v seznamu použité literatury. Souhlasím, aby moje práce byla zveřejněna v souladu s § 47b zákona č. 111/1998 Sb., o vysokých školách ve znění pozdějších předpisů, a v souladu s platnou Směrnicí o zveřejňování vysokoškolských závěrečných prací. Jsem si vědom/a, že se na moji práci vztahuje zákon č. 121/2000 Sb., autorský zákon, a že Mendelova univerzita v Brně má právo na uzavření licenční smlouvy a užití této práce jako školního díla podle § 60 odst. 1 Autorského zákona. Dále se zavazuji, že před sepsáním licenční smlouvy o využití díla jinou osobou (subjektem) si vyžádám písemné stanovisko univerzity o tom, že předmětná licenční smlouva není v rozporu s oprávněnými zájmy univerzity, a zavazuji se uhradit případný příspěvek na úhradu nákladů spojených se vznikem díla, a to až do jejich skutečné výše. V Brně dne 2. února 2014
_______________________________
Abstract Helán, J. Analysis and design of information system contributory organization DDM Tišnov. Bachelor thesis. Brno: Mendel University, 2014. This thesis deals with analysis of current state of information processing suin the contributory organization DDM Tišnov, creating a suitable model of information system for the organization and implementation part of the system into working web application. Part of this thesis is an economic evaluation of the proposal, including the hardware. Keywords Bachelor thesis, DDM Tišnov, proposal, analysis, information system, web application.
Abstrakt Helán, J. Analýza a návrh informačního systému příspěvkové organizace DDM Tišnov. Bakalářská práce. Brno: Mendelova Univerzita v Brně, 2014. Tato bakalářská práce se zabývá analýzou současného stavu zpracování informací v příspěvkové organizaci DDM Tišnov, vytvořením vhodného modelu informačního systému pro tuto organizaci a implementací části systému do funkční webové aplikace. Součástí práce je ekonomické zhodnocení návrhu, včetně hardwarového vybavení. Klíčová slova Závěrečná práce, DDM Tišnov, návrh, analýza, informační systém, webová aplikace.
ASP.NET ............................................................................................................................... 19
4.1.1
Představení ............................................................................................................... 19
4.1.2 4.1.3
.NET Framework .................................................................................................... 19 Kompilace, vícejazyčnost a CLR ........................................................................ 19
4.1.4 4.1.5
Webové formuláře a jiné vysokoúrovňové funkce.................................... 20 Serverové ovládací prvky.................................................................................... 21
4.1.6 4.1.7
Modely tvorby kódu a jejich vazby .................................................................. 22 Obsluha událostí ..................................................................................................... 23
4.1.8
Zpracování a životní cyklus stránky ............................................................... 24
4.1.9
Vývojové prostředí ................................................................................................ 26
4.2
Prezentační vrstva ........................................................................................................... 26
4.2.1
HTML a CSS ............................................................................................................... 26
Entitně relační diagram systému ..................................................................... 37
Návrh řešení
38
6.1 Rozvržení stránky ............................................................................................................ 38 6.1.1 Základní prvky stránky ........................................................................................ 38 6.1.2 Doplňující prvky stránky ..................................................................................... 39 6.2
Role a oprávnění uživatelů ........................................................................................... 40
Ekonomické zhodnocení ................................................................................................ 48
7.3
Možnosti rozšíření ........................................................................................................... 49
8
Závěr
50
9
Literatura
51
A
Obsah přiloženého DVD
53
Seznam obrázků
11
Seznam obrázků Obr. 1
Kompilace webové stránky ASP.NET
20
Obr. 2
Životní cyklus stránky ASP.NET
25
Obr. 3
Ukázka stromové struktury HTML dokumentu pomocí DOM
28
Obr. 4
Diagram případu užití organizace DDM Tišnov
33
Obr. 5
Diagram tříd organizace DDM Tišnov
36
Obr. 6
ER diagram informačního systému DDM Tišnov
37
Obr. 7
Hlavička stránky
38
Obr. 8
Ukázka drobečkové navigace na stránce Detail přihlášky
38
Obr. 9
Primární navigační panel
39
Obr. 10
Filtrace činností na stránce Evidence činností
39
Obr. 11
Informační panel zobrazující účastníky činnosti
39
Obr. 12
Přihlašovací formulář
40
Obr. 13
Webová stránka Evidence činnosti v DDM Tišnov
42
Obr. 14
Webová stránka Detail činnosti Základy práce na PC
43
Obr. 15
Modální okno pro přidání člena do činnosti
44
Obr. 16
Výřez webové stránky Evidence členů
45
Obr. 17
Webová stránka obsahující Detail člena
46
Obr. 18
Webová stránka Detail přihlášky
47
12
Seznam tabulek
Seznam tabulek Tab. 1
Počty účastníku k 31. 10. 2012
31
Tab. 2
Odhad nákladů na pořízení IS
49
Úvod a cíl práce
13
1 Úvod a cíl práce 1.1
Úvod
V dnešní době jsou přesné informace a jejich rychlé vyhledání klíčem k úspěšnému zvládnutí všech manažerských rozhodnutí. Proto je velkým trendem posledních let nasazování informačních systémů i do příspěvkových a dalších organizací. Informační systémy poskytují lepší kontrolu a přístup k uloženým informacím, ve srovnání s ručním vyhledáváním informací v dokumentech umístěných v různých složkách. Dům dětí a mládeže v Tišnově jsem navštěvoval od svého dětství a vyplňováním přihlášek do různých kroužků jsem nevědomky zvětšoval množství ukládaných dokumentů. Dnes už DDM nenavštěvuji, zato si ale uvědomuji, kolik nezáviděníhodné práce mají řídící pracovníci s evidencí těchto dokumentů, proto při rozhodování o tvorbě informačního systému padla má volba právě na tuto organizaci.
1.2
Cíl práce
Cílem práce je na základě analýzy datových toků v příspěvkové organizaci Dům dětí a mládeže navrhnout a implementovat část informačního systému v podobě webové aplikace, která umožní pracovníkům jednodušší práci s evidencemi přihlášek a účastníků činností a také správu těchto činností. Návštěvníkům DDM dále nabídne možnost vyplnění přihlášky elektronickou formou, čímž přispěje k zefektivnění a větší automatizaci některých podnikových procesů. Součástí návrhu je také ekonomická analýza nákladů pro zavedení informačního systému a zhodnocení tohoto řešení.
14
Metodika zpracování
2 Metodika zpracování 2.1
Zvolený přístup
Pro analýzu, návrh a implementaci informačního systému jsem zvolil objektově orientovaný přístup, který nahlíží na informační systém jako na kolekci komunikujících objektů a umožňuje jednodušší rozšiřitelnost tohoto systému.
2.2
Analýza problému
Při návrhu informačního systému bylo nutné nejprve zjistit, jaké úlohy by měl tento systém zvládat. Díky konzultacím s paní ředitelkou DDM Tišnov jsem získal přehled o jednotlivých úkonech, které by měla výsledná webová aplikace umět řešit. Tyto úkony byly sepsány do seznamu funkčních a nefunkčních požadavků na systém a později byly použity pro tvorbu diagramu případu použití.
2.3
Návrh řešení problému
Po provedení prvotní analýzy bylo potřeba získané informace reprezentovat. Pro toto znázornění byly využity prvky grafického jazyka UML. Dynamické chování systému bylo popsáno použitím diagramu případu použití (tzv. Use Case diagram) a pro popis statické struktury systému byl použit diagram tříd (tzv. Class diagram). Oba tyto diagramy byly realizovány pomocí CASE nástroje Visual Paradigm for UML, který mohou všichni studenti Provozně ekonomické fakulty bezplatně využívat. Poslední částí návrhu bylo zhotovení nástinu uživatelského vzhledu aplikace. Pro tuto fázi návrhu se mi nejvíce osvědčily klasické nástroje – tužka a papír, které se ukázaly jako nejefektivnější.
2.4
Implementace
Dalším logickým krokem byla transformace návrhu do kódu a vytvoření webové aplikace. Vzhledem k objektově orientovanému návrhu jsem zvolil implementaci na platformě .NET, konkrétně pomocí kombinací technologie ASP.NET a programovacího jazyka C#. Dále byly použity jazyky HTML, CSS, JavaScript a SQL. Implementace probíhala ve vývojovém prostředí Visual Studio 2010 od firmy Microsoft, které je volně dostupné díky univerzitní licenci pro studenty PEF.
2.5
Testování
Poslední částí vývoje informačního systému bylo testování funkcionality výsledné webové aplikace na testovacích datech, poskytnutých organizací DDM Tišnov a diskuze s pracovníky organizace ohledně uživatelského prostředí aplikace.
Objektová analýza
15
3 Objektová analýza V minulosti byl vývoj programového kódu pro většinu webových aplikací pojat strukturovaně. Aplikace byla rozdělena na funkční a datovou část a analytický návrh probíhal téměř pouze v datové části. Složitost programů narůstala a vznikaly problémy v propojení a soudržnosti datové a funkční vrstvy. Dalším problémem bylo velmi složité provádění změn, údržba a další rozšiřování systému. Z těchto důvodů se ve světě začal čím dál více používat objektově orientovaný přístup, který umožňuje zvýšení produktivity vývojářských prací. Toto zlepšení je důsledkem důkladnější analýzy, návrhu a efektivnějšího programovaní. Pro potřeby analýzy a návrhu je jedním z nejpropracovanějších přístupů použití unifikovaného modelovacího jazyka UML. (Schmuller, 2001)
3.1
Jazyk UML
V dřívějších dobách výpočetní techniky se programátoři obvykle příliš nespoléhali na hloubkové analýzy problému. Vývoj systému byl víceméně založen na metodě „pokus omyl“. Programátoři sami psali program celý od začátku do konce a doufali v příznivý výsledek. Často však docházelo k problémům vzniklým nedostatečnou komunikací mezi vývojáři a klientem. V dnešní době je základem dobře připravený plán, ve kterém klient musí dobře rozumět, co budou vývojáři dělat a vývojáři musí vědět, co klient přesně chce. Řešením je zorganizovat proces vývoje tak, aby mu analytici, klienti, programátoři a ostatní osoby, které se účastní vývoje systému, dokázali porozumět a souhlasili s ním. Takovou organizaci a uspořádání zajišťuje jazyk UML. UML (Unified Modeling Language) je výsledkem práce analytiků a designerů, kteří v průběhu 80. a 90. let vytvářeli metody umožňující popsat objektově orientovanou analýzu a návrh. První verze modelovacího jazyka UML vznikla v roce 1997 a dnes je jedním z nejpoužívanějších a nejperspektivnějších nástrojů ve světě vývoje systému. Jazyk UML umožňuje systémovým vývojářům standardně a srozumitelně zachytit představy o systému a zprostředkovat je dalším osobám. (Kanisová, 2006) Aktuálně používaná verze 2.0 obsahuje tři skupiny diagramů. První skupinou jsou strukturní diagramy popisující statické chování systému, mezi tyto diagramy můžeme řadit: diagram tříd diagram komponent diagram nasazení diagram balíčků Další skupinou jsou diagramy chování popisující dynamickou strukturu systému, jmenovitě:
16
Objektová analýza
diagram aktivit diagram případu užití stavový diagram Poslední skupina, diagramy interakce, obsahuje tyto diagramy: sekvenční diagram diagram komunikace diagram časování Zvýrazněné diagramy byly použity při tvorbě návrhu a jsou popsány v další části práce. 3.1.1
Diagram případu užití
Již dlouhou dobu se vývojáři snaží modelovat všechny typické interakce uživatele se systémem. Cílem tohoto snažení je, aby vývojáři lépe pochopili skutečné požadavky uživatelů a aby mohl být přesně vymezen rozsah budoucí aplikace. A právě případy užití zachycují funkčnost, která bude výsledným informačním systémem pokryta. Každý případ užití popisuje jeden ze způsobů použití systému a dohromady tvoří diagram případů použití. Diagram případů užití si můžeme představit jako soubor scénářů pro používání systému. Každý scénář popisuje posloupnost (sekvenci) událostí. Každou sekvenci inicializuje osoba, jiný systém, část hardwaru nebo uplynutí jistého času. Osoby, které sekvenci inicializují, se nazývají aktéři. Události, které jsou výsledkem sekvence, se nazývají případy užití. Jednotlivé případy užití jsou součástí systému, který je omezen hranicí systému. Mezi aktéry a jednotlivým případy užití existují vazby, tyto vazby mohou existovat i mezi jednotlivými případy užití. Aktér je jakýkoliv externí objekt, který komunikuje, tj. vyměňuje si informace, se systémem. Všechny akce v systému jsou vyvolány právě těmito aktéry. Pohled na případy užití očima aktérů nám může usnadnit nalezení případu užití. V některých systémech může být obtížné identifikovat kompletní seznam případů užití, a proto je lépe nejprve definovat všechny aktéry a následně pro každého z nich najít příslušný případ užití. Ačkoliv je pro znázornění aktérů v jazyce UML zaveden symbol postavičky, nejsou těmito aktéry vždy lidé. Jako aktér může vystupovat externí systém, který potřebuje informace z našeho systému, ale dokonce i čas. Čas jako aktér se používá v situacích, kdy se v určitou hodinu spouští v systému pravidelné zpracování bez zásahu obsluhy. Takovouto situací může být pravidelné zálohování dat nebo denní uzávěrka. Při identifikaci aktérů na konkrétním projektu se často setkáváme se situací, kdy nalezneme několik aktérů, kteří spouštějí stejné případy užití a liší se pouze tím, že někteří spouští další případy užití. V takovém je vhodné použít generalizaci aktérů, která usnadňuje modelování vazeb mezi aktéry a případy užití. Pro definici případu užití je nutné se nejprve seznámit se scénářem případu užití. Scénář je sekvence kroků popisujících interakci mezi aktérem a systémem.
Objektová analýza
17
Dobře napsaný scénář ne náhodou připomíná skutečný scénář např. divadelních her, ve kterém je v každém kroku poznat, kdo zastupuje jakou roli a jakou vykonává akci. Případ užití je tedy sada scénářů, které spojuje dohromady společný cíl. Tento případ užití je vždy iniciován aktérem a vyjadřuje, co budoucí systém nabídne uživateli. Případy užití reprezentují vždy jen vnější pohled na systém. V praxi převládá pravidlo, že případ užití má výchozí scénář, který je typu „všechno jde hladce“ a několik dalších scénářů popisující alternativní cesty, které popisují postup při zjištění různých chyb nebo mimořádných stavů. Každý případ užití by měl mít konkrétní popis, aby se předešlo nejasnostem. Při vytváření popisu je vhodné dodržovat jednotný slovník pro všechny použité termíny. Další upřesnění případu užití je možné pomocí takzvaných vstupních a výstupních podmínek. Ty definují podmínky, za kterých je možné případ užití zahájit a kritéria, které musí být splněna po skončení případu užití. V jazyce UML je případ užití zobrazován jako elipsa, ve které je zanesen jeho název. (Kanisová, 2006) Kromě vztahů mezi případy užití a aktéry existuje také několik druhů vztahů mezi samotnými případy užití. Jedná se o vztahy: relace <> generalizace případů užití relace <<extend>> Relace <> se objevuje tam, kde existuje stejná nebo podobná část sekvence scénáře, opakující se ve více případech užití. Jinak řečeno, jedná se o vyčlenění společného chování ze scénářů základních případů užití. Důležité je, že základní případ užití, není bez rozšiřujícího případu užití kompletní a nelze provést. Zobecnění (generalizace) případů užití umožňuje převést společné chování více případů užití do rodičovského případu užití. Tato technika, ale není příliš doporučována, protože zvyšuje nepřehlednost modelu případu užití. Relace <<extend>> přidává nové, rozšiřující chování do základního případu užití. Podstatným rozdílem oproti relaci <> je fakt, že základní případ užití je bez rozšiřujícího případu sám o sobě soběstačný a použitelný. K základnímu scénáři přidává tzv. body rozšíření (extension points), které nejsou součástí scénáře, ale pouze poukazují na místo ve scénáři, kde může být funkčnost rozšířena. Případ užití může mít více bodů rozšíření a rozšiřující případ užití může rozšiřovat jeden nebo více těchto bodů rozšíření. Všechny tyto vazby se v jazyce UML znázorňují čárkovanou čárou mezi danými případy užití. (Kanisová, 2006) 3.1.2
Diagram tříd
Při návrhu objektově orientovaných systémů se modelují šablony pro vytvoření tříd objektů. Každá třída je jednoznačně určena svými atributy a operacemi. Při návrhu třídy určujeme pouze název a typ atributy. Atributům se přiřazují skutečné hodnoty až při vzniku instance objektu.
18
Objektová analýza
Atributy třídy jsou nositeli informací a jsou definovány svým názvem, datovým typem a viditelností. Viditelnost je charakteristika, která určuje atributům možnosti přístupu. V UML rozlišujeme tři základní typy: Public. Označuje veřejný přístup, to znamená, že kterýkoliv element systému může k těmto atributům přistupovat. Private. Označuje soukromý přístup. K atributům mají přístup pouze operace implementované v dané třídě. Protected. Označuje chráněny přístup. K atributům mohou přistupovat pouze operace implementované v dané třídě a v jejich potomcích. Kromě atributů obsahují třídy také operace. Ty popisují její chování a mají také svou charakteristiku, která obsahuje název, viditelnost, argumenty a návratový datový typ operace. Diagramy tříd zobrazují statickou strukturu systému, především vztahy mezi třídami. Vztahy, které jednotlivé třídy navzájem pojí, jsou asociace, agregace, kompozice a specializace/generalizace. Podřízenost jednoho objektu vůči druhému je v analýze chápána buď jako agregace, nebo jako kompozice. Jednou z nejčastějších vazeb modelování tříd je agregace. Agregace vyjadřuje, že jedna třída je částí druhé třídy. Příklad této vazby je třída Auto a třída Motor. Kompozice je pouze speciální typem agregace, ve které podřízený objekt nemůže existovat bez nadřízeného objektu. Posledním typem vazby je asociace. Ta znázorňuje vztah mezi jednou či více třídami, které mezi sebou mají přímý vztah. (Kanisová, 2006)
3.2
Diagram entit
Při tvorbě datového modelu rozdělujeme pohled na data na logický a fyzický datový model. Logický datový model je nezávislý na implementaci, naproti tomu fyzický model již zvolenou relační databázi zohledňuje. Logický datový model je znázorněn pomocí diagramu entit. (Kanisová, 2006) Diagram entit obsahuje několik elementů. Mezi tyto elementy řadíme: Entita. Abstraktní datový objekt, který seskupuje určitá data. Atribut. Položky dané entity. Atributy jsou určeny svým formátem (datovým typem) a velikostí. Vazba. Vazba jasně určuje vztah mezi entitami. Existují tři typy vazeb a to vazba 1:1, 1:N a M:N. Klíč. Klíč je významný atribut, který může vyjadřovat jednoznačnost (primary key), unikátnost (unique key) nebo propojení s jinou entitou (foreign key).
Použité jazykové prostředky
19
4 Použité jazykové prostředky 4.1 4.1.1
ASP.NET Představení
Jedná se o relativně novou generaci technologií od firmy Microsoft, která slouží k vytváření webových aplikací. Je jednou z nejdůležitějších součástí .NET Frameworku, který soustřeďuje skupinu technologií do platformy nabízející kompletní řešení pro vývoj nejen webových, ale i desktopových aplikací pro operační systém Windows. 4.1.2
.NET Framework
Framework .NET skýtá ohromnou kolekci funkcionality, která je seskupena do logicky uspořádaného a hierarchicky seřazeného kontejneru, nazvaného jmenný prostor (namespace). Každý jmenný prostor poskytuje různé funkce a dohromady poskytují funkcionalitu pro téměř jakýkoliv aspekt distribuovaného vývoje. Tato velká skupina nástrojů se označuje termínem knihovna tříd (class library). Třídy Frameworku .NET používáme v ASP.NET stejným způsobem jako v jakémkoliv jiném druhu aplikace .NET. Navzdory tomu, že každý druh aplikace má své specifické zákonitosti, většina jmenných prostorů .NET Frameworku je společná pro všechny typy aplikací. Příkladem společného jmenného prostoru může být přístup k databázím nebo vícevláknové programovaní. Kromě součásti ASP.NET obsahuje .NET Framework další technologii pro vývoj webových služeb a komunikační infrastruktury aplikací (WCF), technologii pro vytváření efektních uživatelských rozhraní (WPF) a také podporuje implementaci jazyka LINQ, který slouží pro objektový přístup k datům v databází a dalších objektech. (MacDonald, 2008) 4.1.3
Kompilace, vícejazyčnost a CLR
Vývoj pomocí technologie ASP.NET není omezen na jeden programovací jazyk, ale umožňuje používat všechny jazyky podporující CLR (Common Language Runtime) jako jsou například Visual Basic .NET, JScript .NET nebo mnou preferovaný C#. Tento princip je umožněn tím, že se všechny aplikace ASP.NET vždy kompilují, a to ve dvou etapách. V první etapě se kód napsaný v jakémkoliv z výše uvedených jazyků zkompiluje do přechodného jazyka, který se nazývá Microsoft Intermediate Language (MSIL nebo jen IL). Výsledný kód je téměř identický bez závislosti na původním jazyce. Zkompilovanému souboru s kódem se říká assembly. Druhá etapa nastává těsně před vykonáním stránky. V tomto okamžiku se kód v IL zkompiluje do nativního, nízko úrovňového strojového kódu. Tato kompilace nese označení just-in-time (JIT) a probíhá stejně jak pro webové tak i desktopové aplikace .NET. Vizualizaci tohoto kompilačního procesu vidíme na následujícím obrázku.
20
Použité jazykové prostředky
Obr. 1 Kompilace webové stránky ASP.NET Zdroj: ASP.NET 4 a C# 2010: Tvorba dynamických stránek profesionálně
Kompilace JIT by nebyla tak užitečná, kdyby se musela provádět pokaždé při zobrazení webové stránky. Nový kód IL se vytvoří pouze tehdy, dojde-li ke změně ve zdroji. Patrně nejdůležitějším prvkem enginu ASP.NET je to, že běží uvnitř prostředí Common Language Runtime. Využití tohoto prostředí poskytuje několik podstatných výhod, jak uvádí MacDonald, 2011 : Automatická správa paměti a „svoz odpadků“ (garbage collection). Typová bezpečnost. Rozšiřovatelné metadata (dodatečné informace popisující kód). Strukturované zpracování chyb. Multithreading (fond vláken). 4.1.4
Webové formuláře a jiné vysokoúrovňové funkce
Klíčovou myšlenkou při vývoji pomocí ASP.NET je model navrhování webové stránky zvaný webové formuláře (web forms). Tento model je abstrakce, která modeluje stránku jako kombinaci objektů. Když prohlížeč požaduje konkrétní stránku, vytvoří se nejprve instance objektu stránky. Do tohoto objektu se poté vytvoří další objekty pro všechny ovládací prvky, které jsou uvnitř požadované stránky. Model webových formulářů používán od verze ASP.NET 1.0 je prakticky totožný s modelem v aktuální verzi ASP.NET 4.5. To je důkazem dobrého návrhu této technologie, díky které se mohli vývojáři zaměřit na přidávání mnoha dalších vysokoúrovňových funkcí, mezi které můžeme zařadit (MacDonald, 2011) :
Použité jazykové prostředky
21
Vzory stránek. Tzv. master pages jsou opětovně využitelné šablony stránky, pomocí kterých lze jednoduše zařídit, aby každá stránka měla jednotný vzhled nebo obsahovala stejné záhlaví a zápatí. Motivy. V originále themes slouží k nadefinování standardizované sady charakteristik vzhledu webových prvků. Navigace. Tento nástroj umožňuje definování map webu, které popisují logické uspořádání stránek. Obsahuje také navigační prvky, jako jsou stromy nebo drobečkové navigace (breadcrumbs). Bezpečnost a členství. Byly přidány funkce podporující ukládání přihlašovacích údajů uživatele (credentials), autentizace založená na rolích a předem vytvořené prvky obsluhující registraci a přihlášení uživatele. Ovládací prvky pro zdroje dat. Pomocí těchto prvků lze přiřadit k jiným serverovým ovládacím prvkům data pro dynamické generování obsahu. Web Parts. Umožňují zobrazit na jedné stránce různé informace pomocí oddělených panelů. Profily. Tato funkce se stará o ukládání informací o jednotlivých uživatelích do databáze, bez nutnosti psaní databázového kódu. 4.1.5
Serverové ovládací prvky
Další důležitou vlastností technologie ASP.NET je objektově orientovaný model. Díky tomuto objektovému modelu máme z kódu přístup ke všem objektům v .NET Frameworku a můžeme těžit ze všech vlastností objektově orientovaného programovaní, jako je používaní rozhraní (interfaces) nebo rozšiřovaní tříd děděním. Typickou ukázku objektově orientovaného myšlení v ASP.NET můžeme nalézt u serverových ovládacích prvků (server-based controls). Serverové ovládací prvky jsou zapouzdřené objekty, ke kterým můžeme přistupovat z kódu a manipulovat s nimi (např. měnit vzhled, poskytnout nějaká data nebo reagovat na událost). Vývojáři nemusí psát ručně zdrojový kód jazyka HTML, protože jednotlivé objekty ovládacích prvků se do HTML převádí samy, těsně předtím, než webový server pošle stránku klientovi. Tyto prvky můžeme rozdělit na dvě kategorie: Ovládací prvky HTML Jedná se o klasické statické fragmenty HTML, ke kterým je přidán atribut runat=“server“. Díky tomuto atributu se z nich stávají funkční ovládací prvky na straně serveru, ke kterým můžeme přistupovat a manipulovat s nimi ze zdrojového kódu. Můžeme zpracovávat jejich události, nastavovat jim atributy nebo vázat prvek na zdroj dat. Serverový ovládací prvek může vypadat třeba takto: Tento fragment značí ovládací prvek v podobě textového vstupního pole.
22
Použité jazykové prostředky
Webové ovládací prvky Tyto prvky poskytují mnohem vyšší úroveň abstrakce a více funkcionality. Značky webových ovládacích prvků ASP.NET vždy začínají prefixem „asp:“ (zařazení do jmenného prostoru) a pokračují jménem třídy, který identifikuje název ovládacího prvku, který chceme vložit do stránky. Při načítání stránky se ASP.NET samo postará o převod ovládacích prvků a dle nastavení prohlížeče klienta zvolí správný fragment HTML, díky kterému proběhne korektní vykreslení. Příkladem webového ovládacího prvku je následující fragment, který vytvoří textové pole (HTML značka ) s textem „Ahoj světe“. U obou kategorií ovládacích prvků jsou povinné atributy ID a runat. První jmenovaný slouží k jednoznačnému identifikování prvku na stránce a druhý poskytuje frameworku informaci, že se jedná o serverový prvek. Rodina webových ovládacích prvků zahrnuje kromě jednoduchých (TextBox, Label, Button apod.), také komplikované prvky, které mohou ušetřit programátorovi spoustu práce s psaním kódu. Jedná se buďto o prvky, které slouží jako užitečné utility (Calendar, RequiredValidator) nebo o prvky, které se starají o zobrazování určitých informací ze zdrojů dat (GridView, TreeView). Tyto složité objekty mají naimplementovány někdy až desítky atributů, kterými lze upravit vše od vzhledu, řazení nebo stránkování výstupních dat až po funkcionalitu v případě vzniknu nebo zániku události. 4.1.6
Modely tvorby kódu a jejich vazby
Abychom mohli používat ovládací prvky, musíme je nejprve nějak dostat do webového formuláře. K tomu slouží dva modely vytváření kódu: Přímý kód (incline code). Kód v pozadí (code-behind). Přímý kód se podobá tradičnímu ASP, kde se veškerý kód a HTML ukládají do jediného souboru .aspx. Obslužný kód v některém jazyce .NET se píše do jednoho nebo více bloků označených tagem <script>, ve kterém můžeme reagovat na události ovládacích prvků a používat různé funkce. Naproti tomu, v případě kódu v pozadí, se každá webová stránka rozdělí do dvou soborů. Do souboru .aspx, ve kterém budou uloženy HTML značky a značky ovládacích prvků, a dále do souboru .cs, který bude obsahovat zdrojový kód stránky. Tento model nabízí mnohem lepší možnosti uspořádání, protože odděluje uživatelské rozhraní od programovací logiky, což je velmi smysluplné v situacích, kdy se vytvářené webové stránky začnou komplikovat a míchání zdrojového kódu a značek by vytvořilo nepřehledný, dlouhý kód. Používání modelu kódu v pozadí je všeobecně preferováno. (MacDonald, 2011) Propojení obslužného kódu s přímým kódem je zařízeno pomocí direktivy Page. Ta specifikuje jazyk stránky a říká ASP.NET, kde hledat přidružený soubor s kódem. Při kompilaci stránky se tímto propojením vygenerují členské proměnné
Použité jazykové prostředky
23
a díky parciálním třídám se sloučí s třídou naší stránky. Na příklad si vezmeme následující textové pole s názvem mujInput: Po kompilaci vznikne členská proměnná s modifikátorem viditelnosti: protected System.Web.UI.TextBox mujInput; Příznak protected značí, že se jedná o soukromou proměnnou, ke které mají přístup pouze potomci této třídy. System.Web.UI.TextBox jsou zřetězené názvy jmenných prostorů, do kterých tento ovládací prvek patří a mujInput je název prvku udaný atributem ID. Tato generace probíhá naprosto automaticky a nevědomky ji využíváme pokaždé, když z obslužného kódu čteme nebo nastavujeme hodnotu objektu mujInput. Zmíněné nastavení hodnoty probíhá následujícím způsobem: mujInput.Text = “Ahoj světe“; Tímto výrazem jsme do atributu Text, datového typu string, který je součástí objektu mujInput, přiřadili hodnotu „Ahoj světe“. 4.1.7
Obsluha událostí
K docílení interakce s uživatelem našeho webu je potřeba zpracovávat události, ke kterým dojde po uživatelském úkonu, jako je kliknutí na tlačítko. Toto zpracování probíhá uvnitř obsluh událostí (event handlers). Přidání obsluhy události probíhá ve dvou krocích. Prvním krokem je přidáním atributu OnNázevUdálosti (např. OnClick, OnCheckedChange, atd.) k ovládacímu prvku a nastavením jeho hodnoty na název metody, která obstarává danou funkcionalitu události. Druhým krokem je vytvoření právě této metody v obslužném kódu. Tato metoda musí mít nastaven modifikátor viditelnosti na protected, aby k ní mohl přímý kód přistoupit. V hlavičce funkce musí být dále uvedeny dva vstupní atributy, které funkce přejímá, a to atribut typu object a druhý atribut, který je typu EventArgs nebo některého odvozeného typu. Příklad tlačítka s nastavenou obsluhou události vidíme na následujícím řádku: Hlavička metody, která zpracuje tuto událost, potom vypadá takto: protected void tlacitko_Click(object sender, EventArgs e) Tato metoda splňuje všechny náležitosti, které byly řečeny výše - obsahuje modifikátor viditelnosti protected, a v hlavičce jsou definovány vstupní proměnné sender, typu object a proměnná e, typu EventArgs. Příznak void značí, že tato metoda nemá žádnou návratovou hodnotu.
24
Použité jazykové prostředky
Druhým způsobem, kterým lze ovládacím prvkům přiřadit obsluhu události, je prostřednictvím delegátů. Delegátů se využívá, vytváříme-li ovládací prvek dynamicky z obslužného kódu. Ukázka přidání delegátu v obslužném kódu: tlacitko.Click += tlacitko_Click; Tento zápis nám říká, že do atributu Click, který je typu Event Handler (obsluha události), přidáme metodu na jeho obsluhu. Tato metoda je identická s metodou použitou u prvního způsobu vytváření obsluh událostí. 4.1.8
Zpracování a životní cyklus stránky
Když už víme, jak ovládací prvky vložit do webového formuláře a nastavit jim obsluhu událostí, měli bychom si přiblížit, jak probíhá zpracování těchto událostí a celé webové stránky. Nejprve je třeba připomenout, že se webové aplikace vykonávají na serveru, nikoliv na klientovi. Uživatel sice provádí úkony ve svém prohlížeči, ale skutečné operace (jako je aktualizace dat v databázi) běží na vzdáleném webovém serveru. Předěl mezi klientem a serverem je zpracován technikou zvanou postback, kdy se stránka a veškeré informace dodané uživatelem, odešlou na server, kde se vykonají jisté akce. Jakmile ASP.NET obdrží takovou stránku, spustí odpovídající události na straně serveru. V HTML slouží k odeslání dat na server značka