Představení jazyka C#
V následujících kapitolách se seznámíme se základní konstrukcí jazyka C#, základními pojmy a principy, které jsme již poznali v předchozích kapitolách týkající se algoritmizace. Tyto a další principy implementujeme pomocí tohoto programovacího jazyka.
5. Jmenný prostor
Ve vygenerované základní struktuře kódu pro typ konzolové
aplikace jsou na začátku kódu
uvedeny za klíčovým slovem using (též nazývaným direktiva) tzv. jmenné prostory, nebo někdy také označovány
též prostor jmen (anglický termín „Namespace“) - viz Kód 1.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HelloWorldPromenna
Kód 1: Jmenné prostory - program HelloWorldPromenna - konzolová aplikace
Tyto jmenné prostory slouží k tomu, aby logicky sdružovaly typy (datové typy a třídy), které spolu souvisejí (můžeme je brát jako příjmení k identifikátorům – názvům knihoven) – např. pokud chceme vypsat v konzoli text a využíváme jmenný prostor System, můžeme pak pouze napsat příkaz Console.WriteLine() namísto zdlouhavého System.Console.WriteLine(). Můžeme také vytvářet vlastní jmenné prostory pomocí klíčového slova namespace. Lze také definovat vnořené jmenné prostory. Přístup do takového prostoru se provede vypsáním jména vnějšího, pak se uvede tečka a následuje jméno vnitřního jmenného prostoru.
Seskupení
Při překladu zdrojového kódu vzniká seskupení (nebo také sestava – anglicky „Assembly“), které obsahuje jeden nebo několik modulů – spustitelné soubory (*.exe), dynamické knihovny (*.dll) nebo jiné součásti programů včetně tzv. manifestu, tj. souboru s dodatečnými informacemi. Spustitelné soubory nebo dynamické knihovny obsahují kromě mezikódu (univerzálního pomocného jazyku – CIL) také tzv. metadata – doplňující informace o datových typech – např. jak se jmenují třídy, jaké obsahují metody apod. Tyto informace mohou využívat nejen překladače, ale i ostatní programy např. pro automatické generováni dokumentace. V seskupení jsou také uloženy informace o lokalizaci (kultuře – jazykové mutaci seskupení). [3]
Seskupení může obsahovat mnoho tříd. Třídy zahrnuté v knihovně tříd prostředí .NET Framework (také obsahuje třídu System.Console), jsou instalovány společně s Visual Studio na počítač. Knihovna tříd .NET Framework obsahuje tisíce tříd. Tyto třídy nelze vměstnat do stejného seskupení, protože toto seskupení by bylo obrovské a šlo by jen těžko spravovat. Proto knihovna tříd .NET Framework je rozdělena do velkého počtu seskupení rozdělených podle funkcí, které vykonávají, nebo podle technologií, které implementují. Například „základní“ sestava (ve skutečnosti nazývaná mscorlib.dll) obsahuje všechny běžné třídy, například System.Console, a další sestavy obsahují třídy pro manipulaci s databázemi, přístup k webovým službám, vytváření GUI atd. Pokud chceme použít třídu v seskupení, musíme přidat odkaz na toto seskupení do našeho projektu. Klíčové slovo using nám umožní tato seskupení používat jako jmenný prostor ve zdrojovém kódu. Měli bychom také vědět, že mezi seskupením a jmenným prostorem nemusí nutně existovat ekvivalence 1: 1: Jediné seskupení může obsahovat třídy definované v mnoha jmenných prostorech a jediný jmenný prostor může zahrnovat více seskupení. Například třídy a položky ve jmenném prostoru System jsou ve skutečnosti implementovány několika seskupeními zahrnující mscorlib.dll, System.dll a System.Core.dll. To sice zní zpočátku velmi zmateně, ale po čase si lze na tuto skutečnost zvyknout. Když používáme Visual Studio k vytvoření aplikace, vybraná šablona automaticky zahrnuje odkazy na příslušná seskupení. To zjistíme tak, že v panelu Solution Explorer u daného projektu rozbalíme složku s odkazy – References. Konzolová aplikace automaticky obsahuje odkazy na seskupení nazvané Microsoft.CSharp, System, System.Core, System.Data, System.Data.DataSetExtensions, System.Net.Http, System.Xml a System.Xml.Linq. Možná nás překvapí, že mscorlib.dll není v tomto seznamu zahrnuta. Důvodem je to, že všechny aplikace .NET Framework musí toto sestavení používat, protože obsahuje základní funkce nutné pro běh aplikace. Složka References uvádí pouze volitelná seskupení (tato seskupení můžeme podle potřeby přidat nebo odebrat z této složky).