3. diel - Atribúty a metódy v C#
V minulej lekcii, Prvá objektová aplikácia v C# - Hello object world, sme si ukázali, ako OOP funguje, vysvetlili sme si pojmy trieda a metóda. Naprogramovali sme si našu prvú objektovú aplikáciu.
V dnešnej lekcii C# si uvedieme parametre metód, naučíme sa používať atribúty a tým dokončíme našu prvú objektovú aplikáciu. Nakoniec si ukážeme využitie komentárov.
Parametre metódy
Dajme teraz našej metóde Greet() parameter name,
aby dokázala pozdraviť konkrétneho používateľa. Prejdeme do súboru
Greeter.cs a takto kód upravme:
public void Greet(string name) { Console.WriteLine("Hello user {0}", name); }
Vidíme, že syntax parametra metódy je rovnaká ako syntax premennej. Keby
sme chceli parametrov viac, oddeľujeme ich čiarkou. Upravíme teraz našu
metódu Main() v súbore Program.cs:
{CSHARP_CONSOLE} Greeter greeter = new Greeter(); greeter.Greet("Carl"); greeter.Greet("Peter"); Console.ReadKey(); {/CSHARP_CONSOLE}{CSHARP_OOP} class Greeter { public void Greet(string name) { Console.WriteLine("Hello user {0}", name); } } {/CSHARP_OOP}
A výsledok:
Konzolová aplikácia
Hello user Carl
Hello user Peter
Náš kód je teraz v metóde a my ho môžeme jednoducho pomocou parametrov volať znova s rôznymi parametrami. Nemusíme 2x opisovať "Hello user...". Kód budeme odteraz deliť logicky do metód.
Atribúty triedy
Triede pridáme nejaký atribút, ponúka sa atribút text, kde
bude uložený text pozdravu. Atribúty sa definujú rovnako ako premenné. Ako
pri metódach platí, že pred nich píšeme modifikátor prístupu. Pokiaľ
modifikátor nenapíšeme, bude atribút prístupný v rámci daného menného
priestoru (namespace), ale mimo neho už nie. Na čo presne
modifikátory prístupu slúžia si povieme ďalej v kurze. Upravme našu triedu
Greeter:
class Greeter { public string text; public void Greet(string name) { Console.WriteLine("{0} {1}", text, name); } }
Text teraz pochopiteľne musíme nastaviť vytvorené inštanciu v
Program.cs:
{CSHARP_CONSOLE} Greeter greeter = new Greeter(); greeter.text = "Hello user"; greeter.Greet("Carl"); greeter.Greet("Peter"); greeter.text = "Hello programmer"; greeter.Greet("Richard"); Console.ReadKey(); {/CSHARP_CONSOLE}{CSHARP_OOP} class Greeter { public string text; public void Greet(string name) { Console.WriteLine("{0} {1}", text, name); } } {/CSHARP_OOP}
Výsledok:
Konzolová aplikácia
Hello user Carl
Hello user Peter
Hello programmer Richard
Návratová hodnota metódy
Vzhľadom k objektovému návrhu nie je najvhodnejšie, aby každý objekt
ovplyvňoval vstup a výstup, ako sa mu zachce. Pochopiteľne narážame na
naše vypisovanie do konzoly. Každý objekt by mal mať určitú kompetenciu a
tú by nemal prekračovať. Poverme preto náš objekt iba zostavením pozdravu
a jeho výpis si spracujme už mimo, v našom prípade v metóde
Main(). Výhodou takto navrhnutého objektu je vysoká
univerzálnosť a znovupoužiteľnosť. Objekt doteraz vie len písať do
konzoly, my ho však prispôsobíme tak, aby daná metóda text iba vracala a
aby bolo na jeho príjemcovi, ako s ním naložia. Takto môžeme pozdravy
ukladať do súborov, písať na webové stránky alebo ďalej
spracovávať.
Keďže chceme, aby metóda vracala hodnotu string, zmeníme jej
doterajší typ void na string. Na návrat hodnoty
použijeme príkaz return. Príkaz return metódu
ukončí a vráti hodnotu. Akýkoľvek kód v tele metódy po
return sa už nevykoná! Upravme obe triedy:
Metóda Greet() v súbore Greeter.cs:
public string Greet(string name) { return String.Format("{0} {1}", text, name); }
Telo metódy Main() v súbore Program.cs:
{CSHARP_CONSOLE} Greeter greeter = new Greeter(); greeter.text = "Hello user"; Console.WriteLine(greeter.Greet("Carl")); Console.WriteLine(greeter.Greet("Peter")); greeter.text = "Hello programmer"; Console.WriteLine(greeter.Greet("Richard")); Console.ReadKey(); {/CSHARP_CONSOLE}{CSHARP_OOP} class Greeter { public string text; public string Greet(string name) { return String.Format("{0} {1}", text, name); } } {/CSHARP_OOP}
Teraz je náš kód napísaný podľa dobrých praktík.
Komentáre
Ešte našu triedu okomentujme, ako sa pristane a patrí. Komentáre budeme
písať nad názov triedy a nad názov každého atribútu a metódy. Na ich
zápis použijeme trojlomítko ///, IDE nám potom vygeneruje XML,
do ktorého všetko popíšeme. Oplatí sa nám to vo chvíli, keď na triede
používame nejakú metódu, jej popis sa nám potom zobrazí v našepkávači.
Zdokumentovaná trieda môže vyzerať napr. takto:
/// <summary> /// A class represents a greeter whose purpose is to greet the user /// </summary> class Greeter { /// <summary> /// Greeting text /// </summary> public string text; /// <summary> /// Greets a user with stored greetings text and his name /// </summary> /// <param name="name">The user's name</param> /// <returns>The greeting text</returns> public string Greet(string name) { return String.Format("{0} {1}", text, name); } }
Pri metóde Greet() nám prostredie IDE vygenerovalo komentár s
XML dokumentačnými tagmi. Používa sa tu <param>
nasledovaný názvom parametra name. Tento tag slúži na uvedenie
popisu, ktorý sa vzťahuje k danému parametru name (popis môže
pokračovať aj na ďalších riadkoch pre lepšiu prehľadnosť). Vzhľadom na
to, že metóda môže mať viac parametrov, umožňuje tento prístup
prehľadne a jednoznačne popísať každý z nich zvlášť. Ďalej bol
vygenerovaný tag <returns>, ktorý slúži na opis
návratovej hodnoty metódy – teda toho, čo metóda vracia.
Klikneme kurzorom na metódu Greet() v metóde
Main() a IDE nám naozaj popisky zobrazia:

A sme na konci. Nami napísaný program má už nejakú úroveň, aj keď vlastne nič nerobí. Za úlohu máte prerobiť si našu konzolovú kalkulačku do objektov. A teraz už môžeme začať pracovať na našej aréne.
V nasledujúcom cvičení, Riešené úlohy k 1.-3. lekcii OOP v C# .NET, si precvičíme nadobudnuté skúsenosti z predchádzajúcich lekcií.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 3x (48.79 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C#

David sa informačné technológie naučil na