Objektum Orientált Programozás Visual Basicben
2 Objektumok Object – egy dolog, tárgy, „valami” –Command button, text box, stb. Jellemzők –Properties – tulajdonságok, adatok, változók Caption, text, listindex Viselkedés –Method – cselekvés, akció, eljárások, függvények Clear, movenext, additem –Events – az objektum válaszai a felhasználó cselekvésére vagy más eseményre (automatikusan kiváltódó metódusok) Click, got focus, activate
3 Osztály modul Új objektum típusokat, azaz osztályokat az osztály modulban készíthetünk Project, Add Class Module – "C" prefixum használatos Az osztály modulban fogjuk definiálni a –Properties –Methods –Events
4 Osztályok és példányok Az eszköztár elemei osztályokat reprezentálnak Valójában az osztályok egy példányát adjuk a programunkhoz, amikor a tool box-ból választunk –Pl. minden textbox a formon a textbox osztály egy példánya Használd az Object Browser (F2) hogy lásd az osztályokat és a hozzájuk tartozó tulajdonságokat (Properties), metódusokat (Methods) és eseményeket (Events) Vegyük észre, hogy az osztály azonos szerepet tölt be, mint a típus, az objektum pedig mint a változó –Text1 pl. szövegdoboz típusú „változó”
5 Objektum Orientált Terminológia Encapsulation (Egybezártság) –A tulajdonságok és a metódusok egységbe vannak zárva –Az objektummal csak azt tudjuk megtenni, amit az objektum tud (kérni lehet, manipulálni nem) –Az adatait nem láthatjuk közvetlenül
6 Objektum Orientált Terminológia Polymorphism (Többalakúság) –Különböző osztályok ugyanolyan névvel tartalmazhatnak komponenseket, de ezek különbözhetnek egymástól –A programozók az objektum vagy a végrehajtás pontos ismerete nélkül tudnak kérni cselekvéseket az objektumoktól –Pl. Debug.Print, Printer.Print
7 Objektum Orientált Terminológia Inheritance (Öröklődés) –Létező osztályokból származtathatóak új osztályok –VB6 ezt nem tudja…. Tehát nem „igazi” OOP (Object Oriented Programming) –A VB.Net már igen (2001)
8 Objektum Orientált Terminológia Reusability (Újrafelhasználhatóság) –Az öröklődés hátsószándéka –VB nem teljesen engedi, de: Delegáció ÉS Superclasses-olyan osztályok, melyek osztott kódjait elérhetjük
9 Objektum Orientált Terminológia Jellemzők –Tulajdonságokként jelenik meg –A tulajdonságokat változókkal adjuk meg az osztálymodulban Viselkedés –Metódusokként jelenik meg –A metódusokat eljárásokkal és függvényekkel adjuk meg az osztálymodulban
10 Új osztály létrehozása Project, Add Class Module
11 Az osztály tulajdonságai A Class Module-n belül a General Declarations-ban adjuk meg Ne használjuk a Public módosítót, sértjük vele az encapsulation elvet –(minden objektum felelőséggel kell hogy tartozzon a saját adatai tekintetében) Private tulajdonságnév as típus
12 Értékek hozzárendelése a tulajdonságokhoz Speciális eljárásokkal történik (Tools, Add Procedure,Property) –Értékek átadása a class module-nak –Értékek átvétele a class module-ból Property Let procedure –Tulajdonságok beállítására Property Get procedure –Tulajdonságok átvételére –Muszáj visszaadni egy értéket (függvény) –Külső tantárgyi koncentráció: A papagájnak muszáj zsivajogni!!!!
13 Property Get Property Get PNév ([paraméterek] [As Típus] ) Utasítások PNév=TulajdonságNév End Property Például: Property Get LastName () as String LastName=mstrLastName End Property A Class modulban generálva az általános deklarációs részben
14 Property Let Property Let PNév([paraméterek] érték [As Típus] ) Utasítások TulajdonságNév=érték End Property Example: Property Let LastName (strLastName as String) mstrLastName=strLastName End Property
15 Példányosítás: Dim objnév as New osztálynév (General Declarations) Dim objnév as osztálynév (General Declarations). Set objnév=New osztálynév (Pl. Form_Load)
16 Példányosítás: Dim|Public|Private objnév As New osztnév Dim mEmployee As New CEmployee Private mInventory As New CInventory Vagy Dim mEmployee As CEmployee Set mEmployee=New CEmployee Private mInventory As CInventory Set mInventory=New CInventory
17 Erőforrások felszabadítása Form_Unload-ban –Set mEmployee = Nothing
18 Inicializáló és termináló események Minden Class Module rendelkezik két előredefiniált eseménnyel: Class_Initialize –Amikor egy objektum létrehozódik Class_Terminate –Amikor egy objektum „Nothing”-gé válik –Kilép a láthatóságból (pl. lokális változóként volt jelent)
19 Esemény generálás Objektum által Lehetnek –Esemény létrehozó –Eseményt lekezelő (Click, MouseUp, stb)
20 Reagálás az eseményekre Az eseményekre való reagálás szerint az objektumok lehetnek –Termelő –Csökkentő Examples of events we are used to seeing as responding –cmdOK_Click –form_MouseUp
21 Event Examples User clicks a command button –Event Source(Provider)=the Command Button Form module's command button's click event executes –Event Sink(Consumer)=Form
22 How to generate an event Declare the event in the General Declarations section of the class module, pass arguments with an event if you wish Public Event TaskComplete( ) Raise the event in code in the same module the Event was delcared in If mblnJobFinished Then RaiseEvent TaskComplete End If
23 How to respond to an event Declare the object using WithEvents Private WithEvents mMyTask as CMyTask Instantiate the object using Set Set mMyTask=New CMyTask Write the code for the event procedure When finished release the object variable using Nothing keyword
24 Collections A Collection Class holds references for a series of objects created from the same class or from different classes Actually a collection holds references to the objects –You reference by Index Number or a Key –Similar to list box and the associated items in the list box
25 Key for Collection Objects Key must be a string Can be used to reference individual objects in the collection Declare the Key as String at the module level of the Class module for the object (not the collection) Add Property Get and Let procedures
26 Creating a Collection Create a new class module Name it as plural of the objects in the collection –CProducts is a Collection of CProduct objects Declare an object variable "As Collection" (in Gen Declarations) and VB automatically provides: –Add, Remove, and Item methods –Count property
27 Creating a collection cont. Code the Class_Initialize Event –Set equal to New Collection Code the Class_Terminate Event –Set equal to Nothing Code the private function that calculates the next Item number and/or assigns the Key
28 Creating a collection cont. Code the Add Wrapper Event to add items to the collection Code the Remove Wrapper Event to remove items to the collection Code Item Wrapper Event to access individual elements in the collection Write Property Get and Let for the Count property of the collection