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

Visual Basic - 51. lekceVisual Basic - 51. lekce

 

Visual Basic - 51. lekce

Google       Google       7. 2. 2007       18 838×

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

Reklama
Reklama

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 Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Reklama
Reklama
Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý