3. diel - Atribúty a metódy v C# Nové
V predchádzajúcom cvičení, Riešené úlohy k 1.-2. lekcii OOP v C# .NET, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.
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 uží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> /// The class represents the greeter, which serves to greet users /// </summary> class Greeter { /// <summary> /// Greeting text /// </summary> public string text; /// <summary> /// Greets the user with a greeting text and their name /// </summary> /// <param name="name">User name</param> /// <returns>Text with greeting</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 budúcej lekcii, Hracia kocka v C# - Zapuzdrenie, konštruktor a Random, začneme takú jednoduchú hračku, necháme dva
objekty (bojovníkmi) súperiť v aréne (tiež objekte). Máte sa na čo
tešiť .
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é 1x (114.29 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C#