12.07.2015 Views

CES 2004 - Vitajte na stránkach www.einsty.hostujem.sk

CES 2004 - Vitajte na stránkach www.einsty.hostujem.sk

CES 2004 - Vitajte na stránkach www.einsty.hostujem.sk

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

P R O G R A M U J E M EAko <strong>na</strong> Visual Basic .NET11. èasV tejto èasti seriálu si ukáeme, ako vo Visual Basicu .NET implementova jeden z hlav−ných pilierov objektovo orientovaného programovania, ktorým je dediènos. Dozviete sa,aký typ dediènosti Visual Basic .NET podporuje a aký úitok vám môe zaradenie dediè−nosti prinies. Okrem toho sa môete teši aj <strong>na</strong> obrov<strong>sk</strong>ú programovú ukáku, ktorávyuíva dediènos <strong>na</strong> zostrojenie odvodenej triedy, ktorá je schopná vykres¾ova obrázky<strong>na</strong> rôzne pozície formulára.DEDIÈNOS VO VISUAL BASICU .NET. V predchádzajúcich verziách programo−vacieho jazyka Visual Basic sme <strong>na</strong> rozdiel od programátorov pracujúcich v C++ nemalimonos prís do kontaktu s plnohodnotne implementovanou formou dediènosti. .NETverzia Visual Basicu však ponúkla kompletné spektrum elementov OOP, a preto môemei my vyui túto príleitos a písa svoje objektovo orientované aplikácie pomocou dede−nia tried. Dediènos vyjadruje istý vzah medzi urèitými programovacími entitami, predo−všetkým triedami a ich èlenmi. Ešte prv ako sa vrhneme <strong>na</strong> presný opis dediènosti, maliby sme si vysvetli, èo rozumieme pod pojmom bázová trieda a podtrieda. Pojem bázovátrieda oz<strong>na</strong>èuje základnú, resp. mater<strong>sk</strong>ú triedu, ktorá je programovým podkladom <strong>na</strong>vznik ïalších, odvodených tried. Odvodená trieda je exaktnou kópiou bázovej triedy, èoz<strong>na</strong>mená, e odvodená trieda obsahuje všetky metódy, funkcie a iné èleny, ktoré pouívabázová trieda. Odvodené triedy sa zvyknú oz<strong>na</strong>èova aj ako podtriedy, prièom ekvivalen−tom pre bázové triedy je termín supertriedy.Vývojová platforma .NET Framework 1.0, resp. 1.1 pracuje s jednoduchou dediè−nosou. Pri tomto type dediènosti je vopred stanovené, e odvodená trieda bude mavdy iba jedného priameho predka. V tomto smere sa teda vstavaná podoba dediènostilíši od dediènosti, ktorú poz<strong>na</strong>jú <strong>na</strong>príklad programátori v jazyku C++ (tu mono pouiaj tzv. viacnásobnú dediènos, ktorá dovo¾uje programátorovi vytvori takú odvodenútriedu, ktorá má viacerých priamych predkov). Keïe jednoduchú dediènos vyadujepriamo vývojový rámec .NET Framework, je pochopite¾né, e aj programovacie jazyky pra−cujúce <strong>na</strong>d týmto rámcom sa budú správa podobne. S jednoduchou dediènosou sa tedastretneme nielen vo Visual Basicu .NET, ale takisto v C# èi v riadenom C++.Obr. 1Diferencia medzi jednoduchou a viacnásobnou dediènosouZaradenie jednoduchej dediènosti je rozhodne prínosom, pretoe dochádza k eliminá−cii chybných implementácií dediènosti, ktoré boli a sú známe práve z jazykov typu C++.Jednoduchá dediènos zaruèuje, e kadá odvodená trieda má práve jedného priamehopredka, a preto nedochádza k zbytoèným komplikáciám a krkolomným programovýmkonštrukciám. Na druhej strane správne pouitie viacnásobnej dediènosti môe vyriešiniektoré nároèné programátor<strong>sk</strong>é problémy. Pokia¾ patríte medzi programátorov vy−uívajúcich Visual C++ .NET, stále môete viacnásobnú dediènos pouíva, ale iba v ne−riadenom (unma<strong>na</strong>ged) programovom kóde. Keïe beh neriadeného programovéhokódu nie je kontrolovaný spoloèným behovým prostredím (Common Language Run−time) platformy .NET Framework, mono v tomto type kódu poui aj i<strong>na</strong>k „zakázané“programovacie koncepcie. Rozdiel medzi jednoduchou a viacnásobnou dediènosou pred−stavuje obr. 1.Triedy a vzahy medzi nimi sa dajú modelova aj pomocou objektovo orientovanéhoz<strong>na</strong>èkovacieho jazyka UML. Podrobné štúdium tohto jazyka by však vyadovalo jeden celýseriál, a preto sa ním <strong>na</strong> tomto mieste nebudeme zaobera. My si vystaèíme s jednodu−chými schémami, no pokia¾ plánujete venova sa OOP programovaniu <strong>na</strong> vyššej úrovni,mali by ste ovládnu aj základy tohto jazyka.V èom spoèíva prvotný výz<strong>na</strong>m dediènosti? Predovšetkým v programovacom prístupe,ktorý nám umoòuje znovu poui u raz vytvorený zdrojový kód. Ak teda <strong>na</strong>príklad vyvi−nieme triedu, ktorá bude schopná realizova vstupno−výstupné operácie, môeme tútotriedu poui aj v ïalších projektoch. Tým si ušetríme ve¾ké mnostvo práce, ktoré by smei<strong>na</strong>k venovali písaniu v zásade podobného programového kódu.VYTVÁRAME PRVÚ PROGRAMOVÚ UKÁKU DEDIÈNOSTI. Aby sme si pred−viedli zavedenie dediènosti v praxi, vytvoríme programovú ukáku, v ktorej zostrojíme dvetriedy: bázovú a odvodenú. Charakter objektov bázovej triedy môe by akýko¾vek, no pretento príklad som zvolil „automobilovú“ verziu. Objekty <strong>na</strong>šej bázovej triedy budú pred−stavova automobily. Náš návrh však bude všeobecne zameraný, a preto sa nebudemesústreïova <strong>na</strong> konkrétnu automobilovú z<strong>na</strong>èku. Z tohto dôvodu budeme implementovalen jednoduchú koncepciu, ktorá bude obsahova iba nieko¾ko metód (PohybVpred aPohybVzad) a vlastností (VýkonMotora, PoèetPrevodovýchStupòov a Maximál<strong>na</strong>Rých−los). Ïalej od bázovej triedy odvodíme podtriedu a dokáeme, e podtrieda zdedila všet−ky charakteristiky bázovej triedy. Postupujte pod¾a uvedených inštrukcií:1. Spustite Visual Basic .NET a vytvorte štandardnú aplikáciu pre Windows (WindowsApplication).2. Vyberte ponuku Project a klepnite <strong>na</strong> poloku Add Class.3. Zdrojový kód triedy upravte pod¾a <strong>na</strong>sledujúceho vzoru (komentáre slúia len<strong>na</strong> vysvetlenie práce kódu, a preto ich odpisova nemusíte):'Aktivácia vo¾by Option Strict.Option Strict On'Deklarácia a definícia triedy Automobil.Public Class Automobil'Deklarácia premenných s oborom triedy, ktoré budú prístupné poèas'celého ivotného cyklu inštancie tejto triedy.'Odkazová premenná Obrázok obsahuje referenciu <strong>na</strong> objekt'triedy Image.Dim Obrázok As Image'Pomocou premennej g zí<strong>sk</strong>ame prístup k inštancii'triedy Graphics aktuálneho formulára.Dim g As Graphics'Hodnotové premenné Poloha_X a Poloha_Y obsahujú súradnice,'ktoré reprezentujú ¾avý horný roh vytvoreného grafického objektu.Dim Poloha_X, Poloha_Y As Integer'Prvý variant preaeného konštruktora. Tento konštruktor pracuje's obrázkom, ktorý je zí<strong>sk</strong>aný z grafického súboru, <strong>na</strong>chádzajúceho sa'v rov<strong>na</strong>kom adresári ako spustite¾ný (.EXE) súbor aplikácie.'Upozornenie: Pre správny chod aplikácie je dôleité, aby sa'v uvedenom adresári <strong>na</strong>chádzal istý grafický súbor. Rov<strong>na</strong>ko je'dôleité, aby ste v prípade potreby modifikovali názov'cie¾ového grafického súboru.Public Sub New()'Pomocou zdie¾anej metódy FromFile triedy Image vytvoríme'z obsahu obrázkového súboru grafický objekt.Obrázok = Image.FromFile(Application.StartupPath & "\auto1.png")'Metóda CreateGraphics zabezpeèí tvorbu grafického objektu'aktuálnej inštancie triedy Form.g = Form.ActiveForm.CreateGraphics'Premenná Poloha_X obsahuje x−ovú súradnicu ¾avého horného'rohu regiónu grafického objektu.Poloha_X = (Form.ActiveForm.Size.Width − _CInt(Obrázok.PhysicalDimension.Width)) \ 2'Premenná Poloha_Y obsahuje y−ovú súradnicu ¾avého horného'rohu regiónu grafického objektu.Poloha_Y = (Form.ActiveForm.Size.Height − _CInt(Obrázok.PhysicalDimension.Height)) \ 2'Metóda DrawImage vykres¾uje obsah obrázka <strong>na</strong> formulár.g.DrawImage(Obrázok, New Rectangle(Poloha_X, Poloha_Y, _CInt(Obrázok.PhysicalDimension.Width), _CInt(Obrázok.PhysicalDimension.Height)))End Sub'Druhý variant preaeného konštruktora. Tento konštruktor'pracuje s grafickým súborom, ku ktorému cestu zadá pouívate¾.'Cesta musí obsahova aj názov samotného grafického súboru,2/<strong>2004</strong> PC REVUE 155

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!