|
Začátečník |
Pokročilý |
Profesionál |
|||||
|
|
|
||||||
Úvod
do světa .NET /1. díl Moderní technologie
vývoje softwaru |
||||||||
|
|
Budete potřebovat
přibližně 30 minut |
|
Operační systém
použitý v příspěvku: Windows XP Vývojové nástroje:
Visual Basic .NET |
||||
|
Milí čtenáři,
vítám vás u zbrusu nového seriálu, který se bude zabývat momentálně nejmodernějším nástrojem pro tvorbu .NET aplikací, a sice Visual Basicem .NET. Seriál je určen zejména pro začátečníky, no věřím, že bude užitečný rovněž pro pokročilé uživatele a také softwarové profesionály, kteří budou chtít povznést formu vývoje svých aplikací na .NET úroveň. Společně tak prozkoumáme všechny „zákoutí“ nového programovacího jazyka a už teď vás mohu ujistit, že o zábavu budeme mít vystaráno. Vysvětlíme si použití jazyka, způsob sestavování .NET aplikací, použití ovládacích prvků, základy objektově orientovaného programování a spoustu dalšího. Cílem seriálu je naučit i naprosté začátečníky budovat, používat a udržovat programové aplikace pro platformu Windows. Pokud jste ještě neprogramovali ve Visual Basicu, případně neprogramovali vůbec, nevěšte hlavu. I vám se totiž otvírají dveře do kouzelného světa .NET technologií. Stačí jenom vykročit...
Obsah |
Co budete potřebovat
Kromě chuti naučit se něco nového a ochoty věnovat studiu i trochu času budete rozhodně potřebovat ty správné nástroje k vaší práci. Především byste měli disponovat poměrně výkonným počítačem a odpovídajícím softwarovým zázemím. Co se týče hardwaru, společnost Microsoft uvádí tuto minimální počítačovou konfiguraci, na které by měl Visual Basic .NET jakž takž pracovat. Co tedy budete potřebovat?
· 450 megahertzový procesor třídy Pentium II nebo lepší,
· 160 MB operační paměti RAM,
· 3,5 GB volného místa na instalačním disku a dalších 500 MB volného místa na systémovém disku,
· mechaniku CD-ROM, případně DVD-ROM,
· a obrazovkové rozlišení alespoň 800x600 obrazových bodů při 8bitové hloubce barev.
I když se v mnoha materiálech uvádí tato konfigurace jako poměrně dostačující, není tomu zcela tak. Pro praktické využití je nutno počítat s daleko silnější „mašinou“. Osobně bych vám doporučil alespoň gigahertzový procesor a nejméně 256 megabajtů operační paměti. Velkou výhodu získáte, jestliže vlastníte kvalitní monitor s úhlopříčkou minimálně 17 palců a rozlišením 1024x768 obrazovkových bodů při 32bitové barevné hloubce. Protože VB .NET obsahuje velké množství oken, podoken, vysouvacích oken a ohromné množství dalších nástrojů, které budete chtít mít na obrazovce, investice do větší plochy monitoru se zde zcela jasně vyplatí.
Po prozkoumání hardwarové části se pojďme podívat, jaké jsou nároky nového Visual Basicu na softwarové zabezpečení. Aby mohl VB dýchat, musí být podepřen operačním systémem Windows 2000 nebo XP. I když první zkušebné verze běhaly i pod Win9x, ostrá verze je v tomto směru náročnější a není je tedy možné instalovat pod starší typy operačního systému Windows.
Pomalu, ale jistě se dostáváme k představení samotného programovacího nástroje. Visual Basic .NET můžete získat v těchto vyhotoveních:
· Visual Basic .NET Standard,
· Visual Basic .NET Professional,
· Visual Basic .NET Enterprise Developer
· a Visual Basic .NET Enterprise Architect.
|
Pro úplnost je
zapotřebí dodat, že zkušební (trial) verzi Visual Basicu .NET, případně i
Visual Studia .NET lze získat jako přílohu k zahraniční literatuře,
která se zabývá programováním v uvedených nástrojích. Literatura tohoto
druhu se ovšem vyznačuje poněkud vysokou cenou, která se může vyšplhat až na
několik tisíc korun. |
Dobrá, technické specifikace máme za sebou a teď se můžeme podívat, na čem stojí celá .NET technologie.
První kroky s .NET Framework
Veškerá funkcionalita technologie .NET leží na pověstném základném kameni, který je známý jako .NET Framework. .NET Framework představuje prostředí pro vývoj a běh aplikací, přičemž do jeho působnosti patří takřka všechny operace, jež jsou s vývojem a exekucí programového kódu spjaty (alokace a dealokace paměti, provádění programových instrukcí atd.) Prostředí rámce .NET Framework je tvořené dvěma hlavními součástmi: Common Language Runtime a Base Class Library. Podívejme se, co se za těmito záhadnými názvy skrývá.
Common Language Runtime (CLR)
CLR je zodpovědná za skutečný běh aplikací .NET. Zabezpečuje vše potřebné, kompilaci kódu, jeho běh, alokaci paměti, zprávu procesů a vláken. CLR s sebou přináší velmi zajímavou koncepci pro kompilaci a následnou exekuci programového kódu. Pokud jste pracovali s předchozí verzi Visual Basicu, víte, že aplikaci jste mohli přeložit jak do tzv. P-kódu, tak i do nativního (strojového) kódu počítače. Zcela jiná je v tomto směru situace v prostředí .NET Framework. Když budete kompilovat aplikaci .NET, kompilátor nebude překládat výsledný kód aplikace do nativního formátu. Místo toho je všechen kód standardně zkompilován do určité jazykové mezivrstvy, které se říká Microsoft Intermediate Language, zkráceně MSIL (někdy se můžete střetnout i se zkratkou IL).
|
MSIL je nízkoúrovňový jazyk, pozůstávající z instrukcí, kterým
rozumí Common Language Runtime. Protože jde o jazyk, který nemůže být přímo
prováděn, dochází později (v době běhu aplikace) ke kompilaci kódu MSIL do
nativního formátu počítače. |
Abyste měli lepší představu o kódu jazyka MSIL, můžete si tento kód představit jako jistý druh polotovaru. Tak jako musí být polotovar upraven do podoby finálního produktu, tak i segment kódu MSIL musí být před použitím „upraven“ do strojového jazyka, kterému je schopen počítač bezprostředně porozumět. Úprava kódu MSIL do nativního kódu je realizována právě prostřednictvím CLR, která při této operaci využívá služeb Just-In-Time (zkráceně JIT) kompilátoru.
JIT kompilátor přeloží potřebné kódové instrukce, vyhradí pro ně prostor v paměti a spustí je. Jestliže v budoucnosti programová logika poručí, že je třeba použít další instrukce programu, je opět zavolán JIT kompilátor, který přeloží další kód do jeho nativní podoby, a tak zabezpečí spuštění žádaných programových instrukcí.
Situaci sestavení .NET aplikace a její exekuce znázorňuje obr. 1.
Obr. 1 – Schematické zobrazení sestavení a způsobu běhu
.NET aplikace
Protože je všechen kód nejdříve překládán do MSIL kódu, mohou různé aplikace, vytvořené v různých programovacích jazycích standardu .NET (Visual Basic .NET, Visual C# .NET a Visual C++ .NET) společně komunikovat. Z uvedeného důvodu musí všechny kompilátory .NET jazyků vyhovovat určitým pravidlům, která definuje Common Language Specification (CLS). Tím je garantována mezijazyková kompatibilita.
Base Class Library (BCL)
BCL, nebo jednodušeji řečeno knihovna základních tříd, představuje robustní kolekci tříd, typů, rozhraní a objektů, které můžete při vývoji vašich vlastních aplikací využít. Příchuť koncepce objektově orientovaného programování je v BCL přítomna v daleko větší míře, jako kdykoliv předtím. Prakticky na každém kroku vývoje máte do činění s třídami, jejich instancemi (objekty) a popravdě řečeno, ani si tuto skutečnost příliš neuvědomujete. pro zachování pořádku je BCL členěna do tzv. jmenných prostorů. Pod pojmem jmenný prostor lze chápat určitou množinu spřízněných funkcí. Všechny jmenné prostory jsou organizovány hierarchicky, od základní úrovně, kterou představuje jmenný prostor System až po další a další větvě, které ukrývají další kolekce jmenných prostorů. Pokud budete vyvíjet standardní „okenní“ aplikaci pro Windows, v hojné míře vám poslouží třídy jmenného prostoru System.Windows.Forms. Jak si můžete z uvedeného zápisu jmenného prostoru všimnout, jestliže se chcete dostat k dalším (vnořeným) jmenným prostorům jednoho jmenného prostoru, použijete operátor tečka (.).
Abyste ovšem nemuseli v programovém kódu neustále zadávat plně kvalifikovaný název jmenného prostoru, můžete si situaci zjednodušit použitím klíčového slova Imports a zadáním kýženého jmenného prostoru. Předpokládejme, že pracujeme s jmenným prostorem System.Windows.Forms.Form. Tento nám umožňuje přistupovat k vlastnostem a metodám třídy Form, ze které se tvoří samotné objekty formulářů. Abychom ale nemuseli vždy zadávat tento dlouhý název jmenného prostoru, vložíme odkaz na jmenný prostor takto:
Imports
System.Windows.Forms
A nyní se na formulář budeme odkazovat jenom pomocí klíčového slova Form.
|
Klíčové slovo Imports se musí ve VB .NET uvádět na samém začátku
programového kódu, ihned za příkazy Option, jestliže nějaké používáte. |
Anatomie .NET aplikace
Změny v stavbě aplikací, které přinesl .NET Framework, jsou vskutku revolučního charakteru. Předně, základní stavební jednotkou se stává tzv. assembly. Assembly lze chápat jako jistou kolekci programového kódu, programových zdrojů a metadat. Každá assembly obsahuje manifest, který popisuje její vnitřní strukturu. Manifest obvykle poskytuje informace o následujících skutečnostech:
· identifikaci assembly, kterou tvoří její jméno a číslo verze,
· seznamu typů použitých v assembly,
· seznamu jiných assembly, které daná assembly vyžaduje ke své činnosti,
· a konečně o bezpečnostních nařízeních pro popisovanou assembly.
V této souvislosti je důležité si uvědomit, že každá assembly může obsahovat pouze jeden manifest.
Assembly dále tvoří jeden nebo i několik modulů, které obsahují programový kód .NET aplikace a také metadata, popisující tento kód. Veškerý programový kód, který assembly obsahuje, se nachází ve formě MSIL kódu. Příklad jednoduché assembly můžete vidět na obr. 2.
Obr. 2 – Struktura jednoduché assembly
Common Type System (CTS)
Common Type System je odpovědný za typovou kompatibilitu .NET aplikací. Jak již dobře víte, v procesu kompilace aplikací dochází k přebudování programového kódu do podoby MSIL. Toto se děje u všech programovacích jazyků platformy .NET, ne jenom u Visual Basicu. Chceme-li hovořit o kompatibilitě na nízké úrovni, musí být nějakým způsobem upravený i typový systém všech aplikací. V kódu MSIL jsou všechny odpovídající si datové typy jednotlivých programovacích jazyků .NET vyjádřeny ve stejné podobě. Ukažme si příklad. Visual Basic .NET i Visual C++ .NET mohou pracovat s datovým typem Integer (ve VB je označení typu Integer, ve VC++ int). Aby byla zabezpečená jednotnost, při překladu aplikací do MSIL kódu jsou všechny výskyty datového typu Integer (resp. int) nahrazeny jednotným systémovým typem System.Int32. Podobně je to i u ostatních datových typů.
CTS tvoří dvě skupiny typů:
·
hodnotové typy
·
referenční typy
|
Proměnné hodnotových typů obsahují konkrétní hodnotu, která je uložená
v paměti. Touto hodnotou může být např. číslo v pevné nebo
pohyblivé řádové čárce. Proměnné referenčního typu v sobě uchovávají
odkaz na paměťové místo, kde se nachází hodnota. |
K hodnotovým typům patří:
· základní datové typy (Integer, Boolean, Char, ...)
· uživatelsky definované typy (struktury)
· enumerační (výčtové) typy
K referenčním typům patří:
· třídy
· rozhraní
· pole
· delegáti
· ukazatele
Pro dokonalejší probádání problematiky hodnotových a referenčních typů bychom si měli povědět o tom, jak se s těmito typy zachází v operační paměti počítače. Ještě předtím ovšem musíte porozumět dvěma základním pojmům z oblasti paměťového managementu. Jde o pojmy zásobník (stack) a hromada (heap).
Zásobník si můžete představit jako oblast paměti, která je vyhrazena pro běh jisté programové aplikace. V okamžiku, kdy je jako odpověď na vzniklou událost volána programová funkce, jsou všechny proměnné, které tato funkce používá umístěny na zásobník. Když je volána další funkce, tak i její proměnné jsou uloženy na zásobník, ovšem „nad“ předchozí uložené proměnné. Zásobník pracuje na principu LIFO (angl. Last In First Out, tedy poslední dovnitř, první ven). To je ve skutečnosti hlavní princip fungování zásobníku. Podle tohoto principu je možné ze zásobníku vybírat jenom ty proměnné, které tam byly uložené naposled. Jestliže volaná funkce ukončí svou činnost, všechny její proměnné jsou odstraněny ze zásobníku. Jinak řečeno, paměť, kterou tyto proměnné okupovaly, je uvolněna a přístupná pro další operace.
Oblast paměti, která je rezervována pro tvorbu objektů, se nazývá hromada (heap). Tato oblast je pod správou Common Language Runtime, která za tímto účelem využívá služeb pokročilé správy paměti označované jako Garbage Collection (GC).
Hodnoty přiřazené do hodnotových typů jsou ukládány vždy na zásobník. Naproti tomu, u proměnných referenčních typů je situace zajímavější. Zde je samotný objekt uložený na hromadě, avšak proměnná, která obsahuje odkaz na tento objekt se nachází na zásobníku. Tuto situaci lze pozorovat na obr. 3.
Obr. 3 – Ilustrace práce hodnotových a
referenčních typů
Pokud je o to požádaná, proměnná poskytne adresu paměti, na které je objekt uložen. Jestliže je proměnná zrušena, zruší se i odkaz na objekt, který byl v dané proměnné umístěn. Ovšem pozor! Jestliže existují další reference na daný objekt, tento není zlikvidován. Destrukce objektu (prostřednictvím Garbage Collection) nastává až ve chvíli, když na něj nejsou navázány žádné další odkazy.
Ján Hanák