NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Lekce 3 - Atributy a metody v C# Nové

V minulé lekci, První objektová aplikace v C# - Hello object world, jsme si ukázali jak OOP funguje, vysvětlili jsme si pojmy třída a metoda. Naprogramovali jsme si naši první objektovou aplikaci.

V dnešní lekci C# si uvedeme parametry metod, naučíme se používat atributy a tím dokončíme naši první objektovou aplikaci. Nakonec si ukážeme využití komentářů.

Parametry metody

Dejme nyní naší metodě Pozdrav() parametr jmeno, aby dokázala pozdravit konkrétního uživatele. Přejdeme do souboru Zdravic.cs a takto kód upravme:

public void Pozdrav(string jmeno)
{
    Console.WriteLine("Ahoj uživateli {0}", jmeno);
}

Vidíme, že syntaxe parametru metody je stejná jako syntaxe proměnné. Kdybychom chtěli parametrů více, oddělujeme je čárkou. Upravíme nyní naši metodu Main() v souboru Program.cs:

            Zdravic zdravic = new Zdravic();
            zdravic.Pozdrav("Karel");
            zdravic.Pozdrav("Petr");
            Console.ReadKey();
    class Zdravic
    {

        public void Pozdrav(string jmeno)
        {
            Console.WriteLine("Ahoj uživateli {0}", jmeno);
        }

    }

A výsledek:

Konzolová aplikace
Ahoj uživateli Karel
Ahoj uživateli Petr

Náš kód je nyní v metodě a my ho můžeme jednoduše pomocí parametrů volat znovu s různými parametry. Nemusíme 2x opisovat "Ahoj uživateli...". Kód budeme odteď dělit logicky do metod.

Atributy třídy

Třídě přidáme nějaký atribut, nabízí se atribut text, kde bude uložen text pozdravu. Atributy se definují stejně jako proměnné. Jako u metod platí, že před ně píšeme modifikátor přístupu. Pokud modifikátor nenapíšeme, bude atribut přístupný v rámci daného jmenného prostoru (namespace), ale mimo něj už nikoliv. K čemu přesně modifikátory přístupu slouží si řekneme dále v kurzu. Upravme naši třídu Zdravic:

class Zdravic
{
    public string text;

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

}

Text nyní pochopitelně musíme nastavit vytvořené instanci v Program.cs:

            Zdravic zdravic = new Zdravic();
            zdravic.text = "Ahoj uživateli";
            zdravic.Pozdrav("Karel");
            zdravic.Pozdrav("Petr");
            zdravic.text = "Vítám tě tu programátore";
            zdravic.Pozdrav("Richard");
            Console.ReadKey();
    class Zdravic
    {
        public string text;

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

    }

Výsledek:

Konzolová aplikace
Ahoj uživateli Karel
Ahoj uživateli Petr
Vítám tě tu programátore Richard

Návratová hodnota metody

Vzhledem k objektovému návrhu není nejvhodnější, aby každý objekt ovlivňoval vstup a výstup, jak se mu zachce. Pochopitelně narážíme na naše vypisování do konzole. Každý objekt by měl mít určitou kompetenci a tu by neměl překračovat. Pověřme proto náš objekt pouze sestavením pozdravu a jeho výpis si zpracujme již mimo, v našem případě v metodě Main(). Výhodou takto navrženého objektu je vysoká univerzálnost a znovupoužitelnost. Objekt doposud umí jen psát do konzole, my ho však přizpůsobíme tak, aby daná metoda text pouze vracela a aby bylo na jeho příjemci, jak s ním naloží. Takto můžeme pozdravy ukládat do souborů, psát na webové stránky nebo dále zpracovávat.

Jelikož chceme, aby metoda vracela hodnotu string, změníme její dosavadní typ void na string. K návratu hodnoty použijeme příkaz return. Příkaz return metodu ukončí a navrátí hodnotu. Jakýkoli kód v těle metody po return se již neprovede! Upravme obě třídy:

Metoda Pozdrav() v souboru Zdravic.cs:

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

Tělo metody Main() v souboru Program.cs:

            Zdravic zdravic = new Zdravic();
            zdravic.text = "Ahoj uživateli";
            Console.WriteLine(zdravic.Pozdrav("Karel"));
            Console.WriteLine(zdravic.Pozdrav("Petr"));
            zdravic.text = "Vítám tě tu programátore";
            Console.WriteLine(zdravic.Pozdrav("Richard"));
            Console.ReadKey();
    class Zdravic
    {
        public string text;

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

Nyní je náš kód napsaný dle dobrých praktik.

Komentáře

Ještě naši třídu okomentujme, jak se sluší a patří. Komentáře budeme psát nad název třídy a nad název každého atributu a metody. K jejich zápisu použijeme trojlomítko ///, IDE nám poté vygeneruje XML, do kterého vše popíšeme. Vyplatí se nám to ve chvíli, kdy na třídě používáme nějakou metodu, její popis se nám poté zobrazí v našeptávači. Zdokumentovaná třída může vypadat např. takto:

/// <summary>
/// Třída reprezentuje zdravič, který slouží ke zdravení uživatelů
/// </summary>
class Zdravic
{
    /// <summary>
    /// Text pozdravu
    /// </summary>
    public string text;

    /// <summary>
    /// Pozdraví uživatele textem pozdravu a jeho jménem
    /// </summary>
    /// <param name="jmeno">Jméno uživatele</param>
    /// <returns>Text s pozdravem</returns>
    public string Pozdrav(string jmeno)
    {
        return String.Format("{0} {1}", text, jmeno);
    }

}

U metody Pozdrav() nám prostředí IDE vygenerovalo komentář s XML dokumentačními tagy. Používá se zde <param> následovaný názvem parametru jmeno. Tento tag slouží k uvedení popisu, který se vztahuje k danému parametru jmeno (popis může pokračovat i na dalších řádcích pro lepší přehlednost). Vzhledem k tomu, že metoda může mít více parametrů, umožňuje tento přístup přehledně a jednoznačně popsat každý z nich zvlášť. Dále byl vygenerován tag <returns>, který slouží k popisu návratové hodnoty metody – tedy toho, co metoda vrací.

Klikneme kurzorem na metodu Pozdrav() v metodě Main() a IDE nám opravdu popisky zobrazí:

Metody objektu zdravic ve Visual Studio - Objektově orientované programování v C# .NET

A jsme u konce. Námi napsaný program má již nějakou úroveň, i když vlastně nic nedělá. Za úkol máte předělat si naši konzolovou kalkulačku do objektů. A teď už můžeme začít pracovat na naší aréně.

V následujícím cvičení, Řešené úlohy k 1.-3. lekci OOP v C# .NET, si procvičíme nabyté zkušenosti z předchozích lekcí.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 0x (37.42 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

Předchozí článek
První objektová aplikace v C# - Hello object world
Všechny články v sekci
Objektově orientované programování v C# .NET
Přeskočit článek
(nedoporučujeme)
Řešené úlohy k 1.-3. lekci OOP v C# .NET
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
5 hlasů
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 se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity