VB - 46. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

VB - 46. lekceVB - 46. lekce

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

VB - 46. lekce

Google       Google       30. 8. 2006       19 150×

46.1 Objekty a objektově orientované programování v jazyce VB
46.2 Třídy, co to je, k čemu jsou, jak se vytváří
46.3 Vytvoření instance třídy, tedy objektu
46.4 Domácí úkol
46.5 V další lekci

Reklama
Reklama

46.1 Objekty a objektově orientované programování v jazyce VB

Myslím, že jako první by bylo záhodno zavést nějakou terminologii. A začal bych asi tím, co je to vlastně OOP.

Objektově orientované programování spočívá v tom, že při programování pracujeme s objekty. Za objekt můžeme považovat třeba i formulář, tlačítko, textbox, nebo třeba objekt screen. Objekt má nějaké svoje vlastnosti a metody, ty tvoří interface (rozhraní) objektu. Pomocí metod a vlastností s objektem komunikujeme. Objekt má také nějaká svoje data, ke kterým vlastně nemáme přímý přístup a můžeme je měnit například pomocí různých metod, které nám objekt nabízí. O objektu tedy říkáme, že je zapouzdřen. Zapouzdření je věc velmi užitečná a zabrání změně dat, které by mohly objekt „poškodit“. Hned to vysvětlím: K datům v objektu nepřistupujeme přímo, to, že bychom nějakým příkazem jen tak přepsali, jak se to dělá u běžných proměnných, například:

lngDolniMezPole = 5

To nehrozí. My bude postupovat tímto způsobem:

NázevObjeku.ZpišDataTamATam (proměnnáKteráObsahujeOnyData)

O zapsání dat se tedy postará nějaká metoda. Ale u někoho může vyvstat otázka: Proč je to bezpečnější? No je to z toho důvodu že když proceduru oné metody vhodně upravíme, můžeme kontrolovat, zda stav objektu umožňuje zapsání proměnné. Bez příkladu se to špatně vysvětluje, tak si vezměme například objekt, který bude sloužit k ukládání dat a zároveň umožní data uvnitř sebe uzamknout. Například takto:

Call Trezor.Uloz (něco)
Call Trezor.Zamkni (heslo)
Data =  Trezor.Cti 'V proměné bude navráceno například oznámení o tom, že je trezor uzavřen.
Call Trezor.Uloz (něco) 'Data se opět neuloží a to proto, že je trezor uzamčen. Pokud bychom výsledek funkce vložili do proměnné, mohlo by tam být opět hlášení o uzavřeném trezoru.
Call Trezor.Odemkni (heslo) 'Teď již z trezoru můžeme číst i do něj data ukládat.

Tím bychom za sebou tedy měli jednu z výhod objektů, a to právě zapouzdření. Objekty mají spoustu výhod, ale dostaneme se k nim pěkně postupně.

46.2 Třídy; co to je, k čemu jsou, jak se vytváří

O objektu říkáme, že je instancí třídy. A co to znamená pro nás běžné smrtelníky? No je to poměrně jednoduché. Třída je vlastně vzor, podle nějž se objekt vytvoří. Třída je tedy to, co budeme vytvářet my. A jak taková třída vypadá a jak sní následovně budeme pracovat? Budeme potřebovat modul třídy, do kterého budeme psát kód. Chová se jako běžný modul a vytvoříme ho v nabídce Projekt → Add ClassModule. V modulu třídy potom dělíme kód na několik částí, a to Public a Private; část Private obsahuje procedury, ke kterým nemáme přístup přes rozhraní objektu, tedy se k nim vůbec nedostaneme, a modul je ale využívá jako své interní funkce či procedury, většinou bývají v části Private všechny proměnné. Část Public tvoří právě rozhraní (interface) modulu. Obsahuje především funkce a procedury. Ty slouží k ovládání objektu. Nyní malá ukázka třídy trezor. Zatím jen základní vlastnosti. Časem se podíváme na to, jak třídu udělat profesionálnější. A takovou, aby se nám s ní pracovalo co nejlépe.

Dim slot1 As String
Dim slot2 As String
Dim slot3 As String
Dim slot4 As String
Dim slot5 As String
Dim zavreno As Boolean
Dim oHeslo As String

Public Function Zapis(data As String, slot As Byte) As String
    If zavreno = False Then
        Select Case slot
        Case 1
            slot1 = data
        Case 2
            slot2 = data
        Case 3
            slot3 = data
        Case 4
            slot4 = data
        Case 5
            slot5 = data
        End Select
        Zapis = "data byla zapsána do slotu" & slot
    Else
        Zapis = "trezor je zavřený, data nelze zapsat"
    End If
End Function

Public Function Cteni(slot As Byte) As String
    If zavreno = False Then
        Select Case slot
        Case 1
            Cteni = slot1
        Case 2
            Cteni = slot2
        Case 3
            Cteni = slot3
        Case 4
            Cteni = slot4
        Case 5
            Cteni = slot5
        End Select
    Else
        Cteni = "trezor je zavřený, nelze číst data"
    End If
End Function

Public Function ZavriOtevri(heslo As String) As String
    If zavreno = False Then
        oHeslo = heslo
        zavreno = True
        ZavriOtevri = "Otevři"
    Else
        If heslo = oHeslo Then
            zavreno = False
            ZavriOtevri = "Zavři"
        Else
            ZavriOtevri = "špatné heslo"
        End If
    End If
End Function

To je tedy onen krátký slibovaný kód. Ale není příliš dokonalý a není problém zapsat špatné hodnoty. Proto je nutné tento kód ošetřit optimálně funkcí Private, která se bude kontrolovat vstupní hodnoty, zda nejsou chybné. Proč jsem to neudělal a předkládám vám takový nedokonalý kód? Pokud to chcete vědět, zkuste se podívat dolů pod nadpis Domácí úkol.

46.3 Vytvoření instance třídy, tedy objektu

Takže máme vytvořenou nějakou tu třídu. Ale co si teď s onou třídou počít nebo jak ji využít? Použijeme ji, když to řeknu hodně zjednodušeně, jako formičku, podle které se vytvoří objekt. A s objektem již můžeme pracovat. Objekt vytvoříme takto:

Dim objkt As Object

Private Sub Form_Load()
Set objkt = New trezor
End Sub

Příkaz Set vytvoří z třídy trezor objekt „objkt“, ten má nyní vlastnosti třídy; je to stejné jako když na formulář vložíte tlačítko, rozdíl je v tom, že pracujeme (zatím) jen v kódu. Objektů můžeme vytvořit kolik je libo či tolik, na kolik nám bude stačit paměť. S objektem potom pracujeme skrze funkce a procedury, které tvoří interface objektu. Komunkace může vypadat třeba takto:

Private Sub Command1_Click()
a = objkt.Zapis(Text1.Text, Val(Text2.Text))
MsgBox a
End Sub

Private Sub Command2_Click()
Command2.Caption = objkt.ZavriOtevri(Text3.Text)
End Sub

Private Sub Command3_Click()
Text1.Text = objkt.Cteni(Val(Text2.Text))
End Sub

To, co zde momentálně uvádím, není ani zdaleka optimální. Stejně jako není ani třída objektu trezor, který jsem uvedl. A tak bude i tato část kódu patřit k domácímu úkolu.

46.4 Domácí úkol

Zadání domácího úkolu je veskrz prosté; spočívá ve zrobustnění kódu tak, aby byl odolný vůči chybným zadáním. A také se podívat na to, jak to celé funguje. Prostě to pochopit.

46.5 V další lekci

V další lekci budeme pokračovat v třídách a objektech. Proto ti, kteří z toho zatím nejste moudří, nezoufejte, v příští lekci se již nebudeme věnovat tolik teorii, ale kousek po kousku si vytvoříme dva objekty, a to zásobník a frontu se vším všudy.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Jiří ChytilAutor programuje ve VB, zajímá se o elektrotechniku, studuje na SOŠ Elektrotechnické - obor číslicová technika.
Web    

Nové články

Obrázek ke článku Konference: Moderní informační systémy podporují automatizaci

Konference: Moderní informační systémy podporují automatizaci

Současná situace v šíření onemocnění Covid-19 klade na řadu firem nové nároky a mnohé z nich jsou nyní více než kdy jindy závislé na nejmodernějších informačních technologiích. Proto i v oblasti podnikových informačních systémů vidíme rostoucí důraz na automatizaci nebo na důslednou integraci. Také o těchto trendech se bude mluvit na konferenci Firemní informační systémy, která se koná 24.9.2020 v pražském Kongresovém centru Vavruška na Karlově náměstí.

Reklama
Reklama
Obrázek ke článku Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Za cenu šesti dolarů lze celkem bez obtíží koupit nový, líbivě vyhlížející flash disk. Přidaná hodnota, které se vám spolu s ním dostane, už tak moc líbivá není. To, co se před pár sekundami tvářilo jako externí disk, se po připojení k počítači změní v důmyslné elektrické křeslo, které vaše zařízení v onen příslovečný škvarek promění za pár sekund. Cílovou skupinou pro koupi takových zařízení by mohli být záškodníci, kteří by tímto způsobem osnovali pomstu třeba vůči záletnému partnerovi. 

Obrázek ke článku Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Snad nikdy není špatná příležitost na investici do hodnotného vzdělání. Obzvlášť v případě, že absolvent dovede teoretické poznatky přetavit v praktické dovednosti, využitelné při řešení problémů i v komunikaci. Právě na to se specializuje studijní program MBA Řízení informačních technologií, vyučovaný na Business Institutu.

Obrázek ke článku Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Pandemie Covid-19 otřásla trhem práce v základech. Dopady krize pocítilo celkově až 45 % zaměstnanců. Není divu, že čím dál větší jistotu přináší obor IT. Ten zůstal krizí téměř nepoznamenán a při nutnosti začít dělat věci na dálku se ještě více ukázalo, jak moc mnohé firmy kvalitní IT potřebují. Do IT nyní přicházejí začátečníci, kteří v něm vidí lukrativní budoucnost a jistotu, ale i freelanceři a zaměstnanci z oborů zasažených krizí

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý