IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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:

            Greeter greeter = new Greeter();
            greeter.Greet("Carl");
            greeter.Greet("Peter");
            Console.ReadKey();
    class Greeter
    {

        public void Greet(string name)
        {
            Console.WriteLine("Hello user {0}", name);
        }

    }

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:

            Greeter greeter = new Greeter();
            greeter.text = "Hello user";
            greeter.Greet("Carl");
            greeter.Greet("Peter");
            greeter.text = "Hello programmer";
            greeter.Greet("Richard");
            Console.ReadKey();
    class Greeter
    {
        public string text;

        public void Greet(string name)
        {
            Console.WriteLine("{0} {1}", text, name);
        }

    }

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:

            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();
    class Greeter
    {
        public string text;

        public string Greet(string name)
        {
            return String.Format("{0} {1}", text, name);
        }
    }

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:

Metódy objektu greeter vo Visual Studio - Objektovo orientované programovanie v C# .NET

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#

 

Predchádzajúci článok
Riešené úlohy k 1.-2. lekcii OOP v C# .NET
Všetky články v sekcii
Objektovo orientované programovanie v C# .NET
Preskočiť článok
(neodporúčame)
Hracia kocka v C# - Zapuzdrenie, konštruktor a Random
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
3 hlasov
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity