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

2. diel - Prvý objektová aplikácie vo VB.NET - Hello object world

Minulá lekcie, Úvod do objektovo orientovaného programovania vo VB.NET , nás uviedla do objektovo orientovaného programovania. Už vieme, že objekty majú atribúty a metódy. Tiež vieme, že na vytvorenie objektu vytvoríme najprv triedu. Tá je vzorom, podľa ktorého následne tvoríme jej inštancie.

Na začiatku kurzu so základnými štruktúrami jazyka VB.NET sme si vytvorili program Hello world. V dnešnom tutoriále si urobíme podobný program ako úvod do objektovo orientovaného programovania. Naprogramujte si Hello object world!

Založme si vo Visual Studiu novú konzolovú aplikáciu tak, ako sme to robili doteraz. V Solution Exploreri napravo klikneme pravým tlačidlom myši na náš projekt a vyberieme Add -> Class. Ide to aj klávesouvou skratkou Shift + Alt + C.

Pridanie novej triedy class k Visual Basic projektu vo Visual Studio - Objektovo orientované programovanie vo Visual Basic .NET

Class pomenujeme Zdravic.vb a potvrdíme. Názov triedy píšeme vždy ťavie notáciou bez medzier a na rozdiel od premenných má každé slovo veľké prvé písmeno, teda aj prvé. Názov je samozrejme tiež bez diakritiky, tú v programe používame max. Vnútri textových reťazcov, nie v identifikátoroch.

Vytvorenie novej triedy v Visual Basic vo Visual Studio - Objektovo orientované programovanie vo Visual Basic .NET

Podľa tejto triedy neskôr vytvoríme objekt Zdravice, ktorý nás bude vedieť pozdraviť. Vidíme, že sa na program už pozeráme úplne inak, za každú akciu je zodpovedný nejaký objekt, nestačí iba niečo "nabušit" do Main (). V našom prípade vám to môže prísť zbytočné, pri zložitejších aplikácií si to budete pochvaľovať :)

V našom Solution Exploreri pribudne ďalší súbor .vb a VS nám ho otvorí. K pôvodnému Module1.vb s metódou Main () sa môžeme vrátiť pomocou záložky alebo cez Solution Explorer.

Pozrime sa, čo nám VS vygenerovalo a kód si popíšme. Následne si do triedy pridáme vlastnú metódu pre pozdravenie.

Public Class Zdravic

End Class

Public Class nám označuje verejnú triedu. Ak chceme, aby bola naša trieda viditeľná aj v Module1.vb, musíme ju mať verejnú.

Všimnite si, že kód je takmer rovnaký, ako ten v Module1.vb, hoci tam to bol modul, ktorý funguje podobne ako trieda. Už teda rozumieme tomu, čo sme predtým ignorovali. Náš konzolový program bola vlastne trieda, ktorá obsahovala jednu metódu Main (). Vidíme, že vo VB.NET sa v podstate neobjektové programovať ani nedá, čo je len dobre :)

Teraz si do triedy Zdravice pridáme metódu Pozdrav (), bude verejne viditeľná a nebude mať žiadnu návratovú hodnotu ani atribúty.

Deklarácia metódy vo VB.NET je teda nasledovné:

[modifikátor přístupu] Sub [JmenoMetody]

Pred metódou bude tzv. Modifikátor prístupu, v našom prípade public (verejná). Keby sme modifikátor vynechali, VB.NET by ju chápal ako private (neverejné). Ďalej bude nasledovať samotný názov metódy, metódy píšeme rovnako ako triedy ťavej notáciou s veľkým poč. Písmenom. Prvé písmeno názvu je však na rozdiel od premenných veľké! Ako deklarovať metódy s parametrami si ukážeme za chvíľu.

Do tela metódy zapíšeme kód pre výpis na konzolu.

Naša trieda bude teraz vyzerať takto:

Public Class Zdravic
    Public Sub Pozdrav()
        Console.WriteLine("Hello object world!")
    End Sub
End Class

Tu sme zatiaľ skončili, prejdeme do Module1.vb.

Teraz si v tele metódy Main () vytvoríme inštanciu triedy Zdravice. Bude to teda ten objekt Zdravice, s ktorým budeme pracovať. Objekty sa ukladajú do premenných, názov triedy slúži ako dátový typ. Inštancia má spravidla názov triedy, len má prvé písmeno malé. Vyhlásiť si premennú a následne v nej založme novú inštanciu triedy Zdravice:

Dim zdravic As Zdravic
zdravic = New Zdravic()

Prvý riadok hovorí: "Chcem premennú Zdravice, v ktorej bude inštancie triedy Zdravice". S premennými sme vlastne už takto pracovali.

Na druhom riadku je kľúčové slovo New, ktoré nám založia novú inštanciu triedy Zdravice. Túto inštanciu priradíme do našej premennej.

Pri vytvorení novej inštancie sa zavolá tzv. Konštruktor. To je špeciálna metóda na triede, preto pri vytvorení inštancie píšeme tie prázdne zátvorky, keďže voláme túto "vytvárajúci" metódu. Konštruktor spravidla obsahuje nejakú inicializáciu vnútorného stavu inštancie (napr. Dosadí východiskové hodnoty do premenných). My sme v kóde žiadny konštruktor nedeklaroval, VB.NET si preto vytvoril tzv. Implicitné prázdny konštruktor. Vytvorenie inštancie objektu je teda podobné volanie metódy. Celý zápis môžeme samozrejme skrátiť na:

Dim zdravic As Zdravic = New Zdravic()

Keďže v premennej teraz máme naozaj inštanciu triedy Zdravice, môžeme inštanciu nechať pozdraviť. Zavoláme na ňu metódu Pozdrav a to ako zdravic.Pozdrav (). K aplikácii pridáme ešte Console.ReadKey (). Kód metódy Main () bude teda teraz vyzerať nasledovne:

Dim zdravic As Zdravic = New Zdravic()
zdravic.Pozdrav()
Console.ReadKey()

Program spustíme.

Konzolová aplikácia
Hello object world!

Máme teda svoju prvú objektovú aplikáciu!

Dajme teraz našej metóde Pozdrav () parameter jmeno, aby dokázala pozdraviť konkrétneho užívateľa:

Public Sub Pozdrav(jmeno As String)
    Console.WriteLine("Ahoj uživateli {0}", jmeno)
End Sub

Vidíme, že syntax parametra metódy je rovnaká, ako syntaxe premenné, jenom vynecháme kľúčové slovo Dim. Keby sme chceli parametrov viac, oddeľujeme ich čiarkou. Upravíme teraz našu metódu Main ():

Dim zdravic As Zdravic = New Zdravic()
zdravic.Pozdrav("Karel")
zdravic.Pozdrav("Petr")
Console.ReadKey()

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ť "Ahoj užívateľovi ...". Kód budeme odteraz deliť logicky do metód.

Konzolová aplikácia
Ahoj uživateli Karel
Ahoj uživateli Petr

Triede pridáme nejaký atribút, ponúka sa text, kde bude uložený text pozdravu. Atribúty sa definujú rovnako, ako premenné. Ako u metód platí, že pred nich píšeme modifikátor prístupu, bez neho je VB.NET berie ako private. Upravme našu triedu:

Public Class Zdravic
    Public text As String

    Public Sub Pozdrav(jmeno As String)
        Console.WriteLine("{0} {1}", text, jmeno)
    End Sub
End Class

Text teraz musíme pochopiteľne nastaviť vytvorené inštanciu v Module1.vb:

Dim zdravic As 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()
Konzolová aplikácia
Ahoj uživateli Karel
Ahoj uživateli Petr
Vítám tě tu programátore Richard

Vzhľadom k objektovému návrhu nie je najvhodnejšie, aby si každý objekt ovplyvňoval vstup a výstup, ako sa mu zachce. Pochopiteľne narážam na naše vypisovanie do konzoly. Každý objekt by mal mať určitú kompetenciu a tú by nemal prekračovať. Povera náš objekt iba zostavením pozdravu a jeho výpis si spracujeme už mimo, v našom prípade v metóde Main (). Výhodou takto navrhnutého objektu je vysoká univerzálnosť a znovupoužitelnost. Objekt doposiaľ vie len písať do konzoly, my ho však prispôsobíme tak, aby daná metóda text iba vracala a bolo na jeho príjemcovi, ako s ním naloží. 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 a to String, zameníme kľúčové slovo Sub za Function a pridáme za okrúhle zátvorky As String. K návratu hodnoty použijeme príkaz Return. Return metódu ukončí a navráti hodnotu, akýkoľvek kód v tele metódy po return sa už nevykoná! Upravme obe triedy:

Metóda Pozdrav v Zdravic.vb:

Public Function Pozdrav(jmeno As String) As String
    Return String.Format("{0} {1}", text, jmeno)
End Function

Telo metódy Main v Module1.vb:

Dim zdravic As 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()

Teraz je náš kód podľa dobrých praktík. Ešte našu triedu Okomentujte, ako sa sluší a patrí. Komentáre budeme písať nad názov triedy a nad názov každého atribútu a metódy. K ich zápisu použijeme trojapostrof " '' '", VS 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 zobrazí v našepkávač. Ak by nám komentáre v kóde vadili (zaberajú predsa len niekoľko riadkov), môžeme ich sklapnúť pomocou malých tlačidiel "-". Zdokumentovaná trieda môže vyzerať napr. Nasledovne:

''' <summary>
''' Třída reprezentuje zdravič, který slouží ke zdravení uživatelů
''' </summary>
''' <remarks></remarks>
Public Class Zdravic

    ''' <summary>
    ''' Text pozdravu
    ''' </summary>
    ''' <remarks></remarks>
    Public text As String

    ''' <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 Function Pozdrav(jmeno As String) As String
        Return String.Format("{0} {1}", text, jmeno)
    End Function

End Class

Pozrieme sa, že nám VS naozaj popisky zobrazí:

Metódy objektu Zdravice vo Visual Studio - Objektovo orientované programovanie vo Visual Basic .NET

A sme u konca. 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. V budúcej lekcii, Riešené úlohy k 1.-2. lekciu OOP v VB .NET , si urobíme takú jednoduchú hračku, necháme dva objekty (bojovníkmi) súperiť v aréne (tiež objektu). Máte sa na čo tešiť ;-)

V nasledujúcom cvičení, Riešené úlohy k 1.-2. lekciu OOP v VB .NET, si precvičíme nadobudnuté skúsenosti z predchádzajúcich lekcií.


 

Predchádzajúci článok
Úvod do objektovo orientovaného programovania vo VB.NET
Všetky články v sekcii
Objektovo orientované programovanie vo Visual Basic .NET
Preskočiť článok
(neodporúčame)
Riešené úlohy k 1.-2. lekciu OOP v VB .NET
Článok pre vás napísal Michal Žůrek - misaz
Avatar
Užívateľské hodnotenie:
1 hlasov
Autor se věnuje tvorbě aplikací pro počítače, mobilní telefony, mikroprocesory a tvorbě webových stránek a webových aplikací. Nejraději programuje ve Visual Basicu a TypeScript. Ovládá HTML, CSS, JavaScript, TypeScript, C# a Visual Basic.
Aktivity