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

Visual Basic - 51. lekceVisual Basic - 51. lekce

 

Visual Basic - 51. lekce

Google       Google       7. 2. 2007       23 161×

51.1 Začneme zase u tříd
51.2 Události vytvoření a zničení objektu třídy
51.3 Procedury vlastností
51.4 Defaultní vlastnost
51.5 Metody
51.6 Domácí úkol
51.7 V další lekci

51.1 Začneme zase u tříd

Vím, minule jsem vám slíbil ActiveX, ale k nim je ještě celkem dlouhá cesta a abychom je mohli začít tvořit, potřebujeme ještě nějaké základy tříd. Pokud si dobře vzpomínáte, je to celkem nedávno, co jsme se třídami zabývali. O třídách jsme si toho zatím řekli jen velice málo a přitom toho umožňují tolik a je k nim toliko co říci. Jak jsem se již zmínil, ze tříd tvoříme objekty. Jsou tedy jakýmisi šablonami, ze kterých se vytvoří objekty podle jejich vzoru. Důležitým pojmem v oblasti OOP je zapouzdření. Co ono zapouzdření vlastně vůbec je? No, jedná se o to, že většinou uživateli objektu nedáme přímý přístup k proměnným, ale měníme je pomocí procedur událostí. Tím zajišťujeme to, že se objekt může nacházet pouze v předpokládaných stavech (pokud to kvalitně ošetříme).


51.2 Události vytvoření a zničení objektu třídy

Pokud je nějaký objekt třídy vytvořen, například pomocí kódu:


Set objMeno = New Class1

…nebo jako dočasný objekt tímto způsobem:


    Dim objMeno As New Class1
    Print objMeno.val

…kdy je objekt vytvořen až při prvním použití některé z jeho metod, vlastností, a ne na řádku:


    Dim objMeno As New Class1

…je vyvolána procedura události Class_Initialize, ve které můžete obsloužit vnitřek třídy, a to od nastavení proměnných, přes kdoví co možné i nemožná, třeba až po informování o tom, že třída byla vytvořena. Obdobně je při ukončení života objektu zavolána událost Class_Terminate a celé to může vypadat asi takto:


Private Sub Class_Initialize()
    MsgBox "Právě jsem vznikl já, nový objekt."
End Sub

Private Sub Class_Terminate()
    MsgBox "Právě jsem zanikl."
End Sub

…i když toto není moc k využití, kdybyste totiž otravovali uživatele s každým nově vzniklým objektem, tak by vás asi proklínal. Můžete si to vyzkoušet na následujícím kódu, který dáte do normálního formuláře:


Private Sub Command1_Click()
    Set objMeno = New Class1
End Sub

Private Sub Command2_Click()
    Set objMeno = Nothing
End Sub

Kód:


Set objMeno = Nothing

…nastaví proměnou objMeno tak, aby byla prázdná (neobsahovala žádný odkaz na objekt) a nezabírala tak zbytečně paměť. A zruší tak existující vytvořený objekt a je tedy vyvolána událost Class_Terminate.


51.3 Procedury vlastností

Jak zajisté víte, tak objekty většinou mají nějaké vlastnosti, které můžeme číst, a do některých můžeme i zapisovat. Tomu se tak může dít dvěma způsoby. Prvním se vůbec zabývat nebudeme, protože nemá s OOP nic společného, jsou to proměnné Public, ale pšššt, nic jsem neřekl! Tou druhou, to je ta, kterou se budeme zabývat, je používání procedur vlastností. A jak je to s kódem? No, bez ošetření a úprav vstupních údajů to může vypadat například takto:


Property Get Value() As Long
    Value = lngValue
End Property

Property Let Value(val As Long)
    lngValue = val
End Properte

Zápis a čtení těchto proměnných je potom velice jednoduché a je to jako všude jinde – jenom jméno objektu, tečka a:


    objMeno.Value = 1
    Print objMeno.Value

Vlastnosti pouze pro čtení vytvoříme tak, že vynecháme proceduru Let. Prostě ji pro proměnnou vůbec nezapíšeme.

Objektové proměnné potom místo Let používají Set, jinak je to obdobné. Pokud chceme využít vlastnosti variant, je situace komplikovanější. Metody Let a Set jsou voleny podle toho, jakým způsobem do proměnné přiřazujeme, ale metoda Get musí být přizpůsobena tomu, aby mohla vracet jak odkaz na objekt, tak i běžnou vlastnost. Jak toto udělat, byste mohli vědět, o něčem podobném jsme se bavili už kdysi dávno.


51.4 Defaultní vlastnost

Co je to defaultní vlastnost? Asi bude nejlepší ukázat to na příkladu. Pokud bychom tedy měli nějakou běžnou vlastnost, která se u objektu bude často používat, můžeme s ní pracovat místo tímto způsobem:


Private Sub Command3_Click()
    objMeno.Value = 1
    Print objMeno.Value
End Sub

…způsobem tímto:


Private Sub Command3_Click()
    objMeno = 1
    Print objMeno
End Sub

…vlastnost ale musí být nastavena jako defaultní. A jak na to? No, jsme teď ve třídě, které se chystáme nastavit defaultní vlastnost, klikneme na nabídku Tools a vybereme Procedure attributes, zobrazí se nám okno, my si nahoře vybereme název vlastnosti, kterou chceme nastavit jako defaultní (neboli výchozí), klikneme na Advanced a v combu pod nápisem Procedure ID si vybereme: „(default)“. Defaultní pak může být jen jediná vlastnost a zastupuje ji přímo název objektu stejně tak, jako je tomu u TextBoxu, kde může být napsáno:

Text1 = "ahoj"

…namísto „složitého“:

Text1.Text = "ahoj"

V důsledku, neboť text je defaultní vlastností TextBoxu, je to jedno a totéž.


51.5 Metody

Metody jsou procedury a funkce. Mohou mít rozličnou činnost. K metodám, pokud znáte funkce a procedury, není příliš co dodávat. Je to naprosto analogické, žádné novoty nebo tak nás prozatím nečekají. Užívejte jich tedy tak, jako dříve s tím, že některé budou veřejné a jiné privátní. Privátní budou jakoby pomocné vevnitř třídy a Public budou tvořit její interface (rozhraní).


51.6 Domácí úkol

Jsme za padesátou lekcí a chtělo by to něco extra. Tím je to, že domácí úkoly už v dalších dílech nebudou, tedy nebudou takové, jaké bývali. Úkoly a jejich zadání nechám na vás, ať se vám rozvíjí kreativita. Jen to musí obsahovat látku probranou v lekci.


51.7 V další lekci

Pokračování toho, co jsme načali.

×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 Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

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