Používání objektů

První seznámení s OOP Již v prvních dílech jsme si řekli, že při vytváření webových stránek pomocí ASP.Net se ...


První seznámení s OOP
Již v prvních dílech jsme si řekli, že při vytváření webových stránek pomocí
ASP.Net se zapisují HTML značky doplněné o programový kód v nějakém
podporovaném jazyce, např. C#. Tento kód používá programovací model, známý jako
objektově orientované programování (OOP). Základní konstrukcí OOP je tzv. třída
(class). Každá třída nějakým způsobem popisuje určitý objekt. Třídy obsahují
vlastnosti popisující stav objektu, metody, které umožňují objektu něco dělat,
a události, které mohou být objektem vyvolány (budeme se jim věnovat později).
Objekty pak jsou instancemi tříd. Každý objekt tedy představuje nějaký
konkrétní případ abstraktní definice vytvořené třídou.
K vysvětlení lze použít analogie z reálného světa. Představte si třeba auto.
Jak jej lze popsat? Co umí? Auto má mnoho vlastností jako typ, model, rok
výroby, barvu, spotřebu apod. Taky dokáže spoustu věcí. Je s ním možné jet,
couvat nebo parkovat. Během jízdy navíc musí reagovat na celou řadu událostí
činnostmi, jako je točení volantem, sešlápnutí brzdy nebo zapnutí stěračů.
Spojení vlastností a akcí (těm se v OOP říká metody) abstraktně popisuje, co
auto dokáže. Zatím nijak nedefinujeme konkrétní auto, ale jen popisujeme obecné
vlastnosti, které mají všechna auta. V pojmech OOP je tento obecný popis
představován třídou. Objekt je pak již zcela konkrétní instancí dané třídy. V
našem případě by tedy objektem mohla být červená Škoda Octavia z roku 2002 se
spotřebou 7 litrů pohonné hmoty na 100 km. Každý objekt může používat metody
popsané ve třídě. Takže cestou na nákup touto škodovkou můžete použít metody
jedDopredu(), případně odboc(), po příjezdu k supermarketu použijete metodu
zaparkuj(). Až nakoupíte, vycouváte z parkoviště metodou couvej() atd.
Důležité také je, že stejně jako můžete mít několik aut, lze snadno vytvořit
více instancí téže třídy. Každá instance má pak své vlastní vlastnosti a
metody, které nijak neovlivňují ostatní instance, přestože jsou všechny
instancemi téže třídy. Prakticky to například znamená, že když u svého
červeného sportovního Ferrari (jedna instance třídy Auto) použijete metodu
jedDopredu(), tak sousedovo stříbrné Porsche (druhá instance třídy Auto)
zůstane klidně v garáži. Stejně tak, když soused pojede na výlet, nebude vám z
nádrže ubývat váš benzin.
Používání objektů
S objekty můžete na svých stránkách provádět tři základní operace:
n Vytvářet instance. n Nastavovat hodnotu vlastností.
n Volat metody.
Aby bylo možné s objektem vůbec začít pracovat, je nutné vytvořit jeho
instanci. U každého objektu se to musí udělat alespoň jednou. Všechny objekty
nemusejí mít vlastnosti, ale většinou je mají. Řekli jsme si totiž, že
vlastnosti popisují stav objektu. Například třída definující e-mail by měla
vlastnosti jako: tělo, předmět, komu, od, kopie atd.
Při používání objektu vždy voláme jednu nebo více jeho metod. Dejme tomu, že
zmíněná třída na posílání e-mailů by mohla mít metodu odesli(), která by e-mail
odeslala. Jestliže byste tedy chtěli tímto způsobem někomu poslat e-mail,
museli byste nejprve vytvořit instanci třídy. Pak pro tuto instanci nastavit
tělo zprávy, předmět, odesílatele atd. Nakonec byste zavolali metodu odesli().
Vytvoření instance
Aby bylo možné vytvořit instanci určité třídy, je potřeba, aby byla v této
třídě definována zvláštní metoda, která umožní vytvoření instance. Této metodě
se říká konstruktor. Konstruktor má tu zvláštnost, že se vždy jmenuje stejně
jako příslušná třída. Takže konstruktor třídy Auto se musí jmenovat Auto().
Pro vytvoření instance se použije následující syntax:
Auto skodovka = new Auto();
Klíčové slovo new slouží k inicializaci nového objektu. Konstruktor Auto()
vrací instanci třídy Auto. Vytvořenou instanci uchováváme v proměnné typu Auto.
Některé třídy mají i konstruktory, které umožňují nastavit instanci některé
počáteční hodnoty nebo jinak ovlivnit způsob, jakým má konstruktor objekt
vytvořit. Vytvoření objektu pomocí takového konstruktoru pak vypadá například
takto:
Auto cervenaSkodovka = new Auto("červená", "Škoda");
Nastavování vlastností
Poté co je instance objektu vytvořena, můžeme nastavit její vlastnosti. Pro
přístup k vlastnostem instance se používá jméno objektu a tečka. Například
barvu auta bychom nastavili takto:
skodovka.barva = "modrá";
Vlastnosti se podobají proměnným. Lze jim přiřadit hodnotu, mají typy a lze je
používat ve výrazech přesně jako proměnné.
Většinou se na začátku nastaví hodnoty vlastností a pak se volají metody
objektu, které s nastavenými hodnotami nějak pracují. Důležité je, že ne u
všech vlastností je možné měnit jejich hodnotu. Existují i vlastnosti, které
jsou pouze pro čtení a zapisovat se do nich nesmí.
Volání metod
Metody objektu se volají úplně stejně jako kterékoli jiné funkce. Pouze je
potřeba před názvem metody uvést i jméno objektu. Například takto:
skodovka.couvej();
Jinak se metody od funkcí nijak neliší. Mohou, ale nemusejí obsahovat parametry
a vracet nějakou hodnotu. Jestliže se pozorněji podíváte na ukázku volání
metody, zjistíte, že to není nic nového. Dokonce již od prvního dílu takový
zápis běžně používáme v příkazu Response.Write(). Response je totiž objekt
třídy HttpResponse, který ASP.Net vytváří automaticky. Write() je jedna z mnoha
metod tohoto objektu.
Třídy v .Net
Proč jsou třídy a objekty v ASP.Net tak důležité? Celý .Net Framework a tedy i
ASP.Net ve skutečnosti s ničím jiným než s objekty nepracuje. V ASP.Net je
totiž objektem všechno. Ať již je to výsledná stránka, formulář na stránce nebo
každý ovládací prvek, například nějaké tlačítko. Objektem jsou však ve
skutečnosti i věci, do kterých by to člověk na první pohled ani neřekl.
Například všechny datové typy, se kterými jsme se setkali, jsou vlastně
objekty. Nesmíte se nechat zmást tím, že se při práci s nimi nepoužívá klíčové
slovo new. V případě základních datových typů se o jeho použití postará ASP.Net
automaticky.
To, že i například datový typ int je ve skutečnosti třída s řadou vlastností a
metod, si dokážeme na příkladu, v němž se proměnná typu int převede na textový
řetězec pomocí metody toString(), kterou disponují všechny objekty v ASP.Net.
Schválně si vyzkoušejte, že následující kód bude fungovat:
int i;
string s;
s = i.toString();
Response.Write(s);
(pat) 6 1575









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.