62199e2a7c7aec9b94b079e20217f72c.ppt
- Количество слайдов: 83
Objektum Orientált Programozás Visual Basicben
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
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
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 (F 2) 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ó – Text 1 pl. szövegdoboz típusú „változó”
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
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
Objektum Orientált Terminológia • Inheritance (Öröklődés) – Létező osztályokból származtathatóak új osztályok – VB 6 ezt nem tudja…. Tehát nem „igazi” OOP (Object Oriented Programming) – A VB. Net már igen (2001)
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
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
Új osztály létrehozása • Project, Add Class Module
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
É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!!!!
Property Get PNév ([paraméterek] [As Típus] ) Utasítások PNév=Tulajdonság. Név End Property Például: Property Get Last. Name () as String Last. Name=mstr. Last. Name End Property A Class modulban generálva az általános deklarációs részben
Property Let PNév([paraméterek] érték [As Típus] ) Utasítások Tulajdonság. Név=érték End Property Example: Property Let Last. Name (str. Last. Name as String) mstr. Last. Name=str. Last. Name End Property
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)
Példányosítás: Dim|Public|Private objnév As New osztnév Dim m. Employee As New CEmployee Private m. Inventory As New CInventory Vagy Dim m. Employee As CEmployee Set m. Employee=New CEmployee Private m. Inventory As CInventory Set m. Inventory=New CInventory
Erőforrások felszabadítása • Form_Unload-ban – Set m. Employee = Nothing
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)
Esemény generálás • Objektum által • Lehetnek – Esemény létrehozó – Eseményt lekezelő (Click, Mouse. Up, stb)
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 – cmd. OK_Click – form_Mouse. Up
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
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 Task. Complete( ) • Raise the event in code in the same module the Event was delcared in If mbln. Job. Finished Then Raise. Event Task. Complete End If
How to respond to an event • Declare the object using With. Events Private With. Events m. My. Task as CMy. Task • Instantiate the object using Set m. My. Task=New CMy. Task • Write the code for the event procedure • When finished release the object variable using Nothing keyword
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
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
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
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
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
Állomány kezelés
• • Állományok Az állományok háttértárolón vannak Adatokat tartalmaznak Rekordok ==> Sorok Mezők ==> Adat elemek a sorokon belül
• A rekordok vége CR, a file vége EOF Szekvenciális • A mezők vesszővel vannak elválasztva – Változó hossz – Sztringek idézőjelek között (a számok nem) • Csak sorosan olvasható – Minden előző mezőt el kell olvasni az eléréshez
Példa "Lynne", "Weldon", "999 Wide Way", "Aiken", "SC", "29803" <CR> "Jim", "Buck", "1 Cow Lane", "Aiken", "SC", "29801" <CR> "Tom", "Thumb", "PO Box 200", "Aiken", "SC", "29802 -200" <EOF>
• A rekordok azonos hosszúságúak, van hivatkozási Random számuk • A mezők fix hosszúak és pozíciójúak – A hossznál kisebb adatok szóközökkel kiegészítődnek – A nagyobbak csonkolódnak • Tetszőleges sorrendben olvasható/írható • Táblázatszerűen képzelhető el
Példa
• Open file • Read, Write • Close file Kezeléseik
• Általában Open Statement a Form_Load-ban Open „elérésiút_állománynév" For {Input|Output|Append|Random} As #File. Sorszám [Len=hossz] File. Sorszám = 1 to 511, hossz Max = 32, 767 A hosszú elérési út helyett helyezzük az aktuális projekt alkönyvtárba az állományunkat, majd használjuk a App. Path kifejezést.
• Input – olvasásra Open For • Output – Írásra, BOF-t helyez el, majd felülír • Append – Az EOF-tól kezd írni • Random – Közvetlen elérésű állományokat olvas/ír
Példák Sequential Open "C: VB 6myfile. txt " For Input As #6 Open "A: myfile. txt " For Output As #1 Open App. Path & “myfile. txt " For Append As #2 Random Open "A: myfile. txt " For Random As #3 Len=60
Probléma: Az. File minősített teljes elérést kíván Open elérési útja • Vagy – Minden állomány a projekt alkönyvtárban – App. Path Dim str. Path as String str. Path=App. Path & "Filename. extension" Open str. Path for Input as #4 • Vagy – Common Dialog használata Show. Open metódussal
Azaz. . Dim str. File. Name as String With dlg. Common. Dialog. Title = "Open". Cancel. Error = False. Filter = "All Files (*. *)|*. *". Show. Open If Len(. File. Name) = 0 Then Exit Sub End If str. File. Name=. File. Name End With Open str. File. Name for Input as #1
A • Fájl lezárása Close • Általános helyei: utasítás – Form_Unload, mnu. File. Save. As, mnu. File. Exit Close [#File. Number] Ha a File. Number hiányzik, akkor minden nyitott fájl (Az END is lezár, de nem helyes)
Példák Close #6 Close #1, #3 Close
File. Number • Free. File Függvénnyel • A rendszer adja • Előnyei – Nincs összeakadás más alkalmazásokkal – Nem kell nyilvántartani Dim int. File. Number as Integer int. File. Number=Free. File Open "Names. txt" For Output As #int. File. Number
Szekvenciális állományok
Olvasás • Open for Input • Input utasítással olvasunk
Input • Általában a Form_Load-ban • Do Until EOF Input #File. Number, List of variables Input #2, str. Course. Num, str. Class, int. Hours
Input Dim str. Video. Title as String Do Until EOF(3) Input #3, str. Video. Title cbo. Video. Title. Add. Item str. Video. Title Loop Figyelem, számegyezés!!
Write • Open For Output!! • Általános helyei: – mnu. File. Save, mnu. File. Close , Form_Query. Unload • Close-zal zárul
• Példa Write #File. Number, List of variable or fields Write #1, txt. First. Name, txt. Last. Name, txt. Street, txt. City, txtx. State, txt. Phone Write #2, str. Course. Num, str. Class, int. Hours
• For…. Next Write Dim int. Index as Integer Open "A: videos. txt" For Output As #1 For int. Index=0 to cbo. Video. Title. List. Count-1 Write #1, cbo. Video. Title. List. Index Next int. Index Close #1
Törlés • Kill utasítás • Nem lehet nyitva Kill „elérésiút" Kill "A: Names. txt"
• Name utasításÁtnevezés • Nem lehet nyitva Re. Name „régi_elérés" As „Újelérés" Re. Name "A: Names. txt" As "A: People. txt"
Átírás • Vátoztatások mentése n n n n Open eredeti for Input Open temp file for Output Beolvasás pl. textboxba az eredetiből Kiírás textboxból a temp-be Close Kill eredeti Name temp
• • Új létrehozása Open név for Output Ha nincs, létrehozza Kiírás az áll-ba Close
Közvetlen elérésű állományok
• A rekordok azonos hosszúságúak, van hivatkozási Random számuk • A mezők fix hosszúak és pozíciójúak – A hossznál kisebb adatok szóközökkel kiegészítődnek – A nagyobbak csonkolódnak • Tetszőleges sorrendben olvasható/írható • Táblázatszerűen képzelhető el
Példa
• • Még mielőtt struktúra definiálása Rekord I/O történik Type/End Type Helye: General Declarations Fix hosszúságú sztringeket alkalmazzunk!! – Pl: Dim str. FName as String * 20
Type/End Type Private Type Person int. Emp. Num As Integer str. FName As String * 20 str. LName As String * 30 str. Phone As String * 12 cur. Rate As Currency End Type Dim mudt. Person. Record As Person Open App. Path & "Names. dat" For Random as #1 Len=Len (mudt. Person. Record) Lehetőség: mudt prefix a User Defined Type-hoz….
Open • Open után lehet írni, olvasni is • Ha nem létezőt nyitunk, létrehozza üresen • Egyszerre egy rekordot kezelhetünk
Olvasás • Open állomány for Random • Get utasítás
Get • Általában a Form_Load-ban • Do Until Get #File. Number, [Record. Number], Record. Name Get #2, 4, mudt. Person. Record Get #2, int. Record. Number, mudt. Person. Record Ha a Record. Number hiányzik, a következőt olvassuk
Put • Random file írására • Nyitva kell lennie "For Random" • Általában: – mnu. File. Save, mnu. File. Close vagy Form_Query. Unload • Close követi
Put #File. Number, [Record. Number], Record. Name Put #2, 4, mudt. Person. Record Put #2, int. Record. Number, mudt. Person. Record Ha Record. Number hiányzik, a következőt olvassuk
Mezőkhöz való hozzáférés • Get és Put • „pont jelölés”, segítség a User Defined Type megnézése
• Get Példa Get #2, 1, mudt. Person. Record txt. LName. Text=mudt. Person. Record. str. LName • Put: mudt. Person. Record. str. Phone=txt. Phone. Text Put #2, 1, mudt. Person. Record
• Length of File: a Fájl mérete byte-ban LOF Függvény • EOF helyett lehet használni • Maxrekszám=LOF/rekméret LOF(File. Number) LOF(3) int. Num. Records=LOF(3)/Len(mudt. Person. Record)
Seek Függvény • A fájlmutató értékét adja visza Seek(File. Number) int. Next. Record=Seek(3)
• • Kitörli az üres helyeket egy sztringből Trim Függvény Trim ==> mindkét végéről LTrim==> left RTrim ==> right Trim(String) LTrim(String) RTrim(String) txt. LName. Text=RTrim(mudt. Person. Record. str. LName)
Sub Get. Record(lng. Rec. Num as Long) Példa Get #1, lng. Rec. Num, mudt. Person. Record With mudt. Phone. Record txt. Emp. Num. Text =. int. Emp. Num txt. FName. Text = RTrim(. str. FName) txt. LName. Text = Rtrim(. str. LName) txt. Phone. Text = Rtrim(. str. Phone) txt. Rate. Text =. cur. Rate End With End Sub
Sub Put. Record(lng. Rec. Num as Long) Példa With mudt. Phone. Record. int. Emp. Num=Val(txt. Emp. Num. Text). str. FName = txt. FName. Text. str. LName = txt. LName. Text. str. Phone = txt. Phone. Text. cur. Rate = Val(txt. Rate. Text) End With Put #1, lng. Rec. Num, mudt. Person. Record End Sub
Grafika
• Mértékek és koordináta rendszer Grafika • Használjuk a RGB és QBColor függvényeket a színekhez • Grafika létrehozása • Load/change picture futási időben • Egyszerű animáció létrehozása • Timer control
• Scale=mértékegység rendszer The Graphics Environment • twips, point, pixels, inches vagy centimeters (default: twips) • Twip = 1/20 point; point = 1/72 inch • Pixel: Picture element • A koordináta rendszer origója 0, 0 (x, y) a balfelső sarokban • A konténereknek (pl. picture box) saját belső koordináta rendszerük van
• Olvasása/írása: Scale. Left, Scale. Top, Koordináta rendszer Scale. Width, Scale. Height • Image: Stretch property • Image-t hsználjunk ha lehet Picture. Box helyett (gyorsabb)
• Fore. Color, Back. Color, Fill. Color Színek • RGB függvény, konstansok (vb. Red) • A QBColor függvény átkonvertálja a régi színkonstansokat (0 -15) a nekik megfelelő RGB -be: frm. Main. Back. Color = QBColor(1) ‘Blue
• Form, Picturebox, Printer objektumokon rajzolnakcts Grafikus metódusok • Default: form • Pl: Cls, Pset, Line, Circle • Mások, mint a grafikus vezérklők • Újra kell rajzolni a grafikát, ha eltűnik, majd megjelenik egy form
• Draw. Width vastagság …. • Line szakasz (B paraméterrel téglalap) • Circle kerekített alakzatokra: • circles, ovals, arcs, pie-shaped wedges
• Az objektumok más-más rétegen vannak Rétegezés • Fedik egymást a rétegek • Az alapértelmezett rétegre kerülnek az objektumok • Auto. Redraw , Clip. Controls tulajdonságokkal befolyásolhatjuk a rétegek viselkedését
Még egy-két dolog • Lehet képeket hozzáadni futási és tervezési időben is • Elhelyezés: image, picturebox, form – Picture property! • A form Picture tulajdonsága a vezérlők mögött jelenik meg • A Load. Picture függvény futási időben tölt be egy képet a vezérlőbe
• Animate an object by: Simple Amimation a picture, – toggling between two pictures, moving – moving a picture, – or rotating through a series of pictures • VB icon library graphics often have two graphics of same size but opposite states (pushed in and out, for example)
• The Timer control triggers events at a The Timer Control programmer-specified time interval • Timer control is invisible at run time—simply place it on a form • Control triggers each time an interval elapses • Set the Interval property (0 to 65, 535) in milleseconds; disable by setting timer’s Enabled property to False
• Use the Scale method to change the scale of More Graphics Techniques your coordinate system – [Object]. Scale (x 1, y 1) - (x 2, y 2) – pic. Logo. Scale (0, 0) - (100, 100) changes the scale to 0 through 100 • Paint. Picture method places a graphic file on a form, picturebox, or the printer Paint. Picture pic. Logo. Picture, 100
62199e2a7c7aec9b94b079e20217f72c.ppt