Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdJuliana Brander Laatst gewijzigd meer dan 10 jaar geleden
1
Zelf objecten maken in VBA Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009
2
Wat is een Objectgeoriënteerd programmeren? Objectgeoriënteerd, vaak afgekort tot OO, is een paradigma dat gebruikt wordt bij het objectgeoriënteerd programmeren en objectgeoriënteerde opslag van data. Bij deze benadering wordt een systeem opgebouwd uit objecten, waarbij ieder object gemaakt is vanuit de definitie van een klasse.paradigmasysteemklasse Belangrijke eigenschappen van objectgeoriënteerd programmeren zijn: Encapsulation (Informatie verbergen): het kunnen verbergen van de interne werking van objecten, waardoor op een hoger niveau geprogrammeerd kan worden. Modulariteit: programma's zijn eenvoudig uit te breiden en klasses zijn makkelijk te hergebruiken (Overerving: het specifieker kunnen maken van een klasse, waarbij (een deel van) een generieke klasse kan worden overgeërfd.) (Polymorfisme: een functie kan geschreven worden voor generieke objecten, en uitgevoerd worden op specifiekere objecten, zonder dat de functie van het bestaan van de specifiekere objecten hoeft af te weten.)Polymorfisme
3
Objecten Eigenschappen (Word: activedocument.name) Methoden (Word: activedocument.save) Gebeurtenissen (Word: Document_Close())
4
Begin van OO Type Employee Name As String Address As String Salary As Double End Type
5
Eigenschappen - I P ublic strNaam As String In klassemodule (bijv. clsUser) Publieke eigenschap Geen code mogelijk
6
Gebruik van object Declareren Dim x As New clsUser Vullen x.strNaam = "Jan“ Lezen Msgbox x.strNaam
7
Eigenschappen = II Nu wel code mogelijk Members / Property Get / Property Let Private mAdres As String Property Get strAdres() As String strAdres = mAdres End Property Property Let strAdres(strAdres As String) mAdres = strAdres End Property
8
Methode (als Sub) Private mBericht As String Private mMailAdres As String Property Let strMailAdres(strAdres As String) mMailAdres = strAdres End Property Property Let strBericht(strBericht As String) mBericht = strBericht End Property Public Sub mailenmaar() Rem code voor mail Rem mail.to = mMailAdres Rem mail.body = strBericht Rem mail.send MsgBox "Bericht voor " & mAdres & vbCr & mBericht End Sub
9
Methode (als Function) Public Function mailenmaar2() As Boolean Rem code voor mail Rem mail.to = mMailAdres Rem mail.body = strBericht Rem mail.send On Error GoTo foutje: MsgBox "Bericht voor " & mAdres & vbCr & mBericht mailenmaar2 = True Exit Function foutje: mailenmaar2 = False End Function
10
Gebruik van methoden Dim x As New clsUser x.strNaam = "Jan" x.strAdres = “Gracht 13" x.strMailAdres = "a@b.nl" x.strBericht = "Groeten " & Time x.Mailenmaar If x.mailenmaar2 = True Then MsgBox "Mail is verzonden" End If
11
Collections.. Dim objlistNamen As New Collection objlistNamen.Add x Dim intAantal As integer intAantal = objlistNamen.Count For i = 1 To intAantal MsgBox objlistNamen.Item(i).strNaam Next Dim objTest As New clsUser For Each objTest In objlistNamen MsgBox objTest.strNaam Next
12
Demo – Formulier en Klasse Klasse met gebeurtenissen Updatemax updatetext Formulier dat regeert op gebeurtenissen in Klasse objTikker_UpdateMax objTikker_UpdateText
13
Events in de Klasse Public Event Updatetext(ByVal dblJump As Double) Public Event UpdateMax(ByVal intqwerty As Integer) Public Sub tikkenmaar() RaiseEvent UpdateMax(mintMax) For j = 1 To 15 For i = 1 To 100000000 Next RaiseEvent Updatetext(j) Next End Sub
14
Reageren in het formulier op Klasse-events Private WithEvents objTikker As clstimer Private Sub objTikker_UpdateMax(ByVal intqwerty As Integer) Me.Label3.Caption = intqwerty End Sub Private Sub objTikker_Updatetext(ByVal dblJump As Double) Me.Label1.Caption = dblJump Me.Label2.Width = dblJump * 15 DoEvents End Sub
15
Start en einde Klasse Private Sub Class_Initialize() Rem code bij initialiseren van de klasse MsgBox "Welkom" mintMax = 200 mintMin = 0 End Sub Private Sub Class_Terminate() Rem code bij afsluiten van de klasse MsgBox "Tot ziens" End Sub
16
Complete code op formulier Private WithEvents objTikker As clstimer Private Sub CommandButton1_Click() Set objTikker = New clstimer Call objTikker.tikkenmaar End Sub Private Sub objTikker_UpdateMax(ByVal intqwerty As Integer) Me.Label3.Caption = intqwerty End Sub Private Sub objTikker_Updatetext(ByVal dblJump As Double) Me.Label1.Caption = dblJump Me.Label2.Width = dblJump * 15 DoEvents End Sub
17
Formulier met progressbar
18
Public Event Updatetext(ByVal dblJump As Double) Public Event UpdateMax(ByVal intqwerty As Integer) Private mintMax As Integer Private mintMin As Integer Property Get intMax() As Integer intMax = mintMax End Property Property Let intMax(intinvoer As Integer) If intinvoer > 200 Then intinvoer = 200 If intinvoer < 0 Then intinvoer = 100 mintMax = intinvoer End Property Public Sub tikkenmaar() RaiseEvent UpdateMax(mintMax) For j = 1 To 15 For i = 1 To 100000000 Next RaiseEvent Updatetext(j) Next End Sub Private Sub Class_Initialize() Rem code die wordt doorlopen bij initialiseren van de klasse MsgBox "Welkom" mintMax = 200 mintMin = 0 End Sub Private Sub Class_Terminate() Rem code die wordt doorlopen bij afsluiten van de klasse MsgBox "Tot ziens" End Sub
19
Hyperlinks nl.wikipedia.org/wiki/Objectgeori%C3%AB nteerd nl.wikipedia.org/wiki/Objectgeori%C3%AB nteerd www.startvbdotnet.com/oop/default.aspx www.startvbdotnet.com/oop/default.aspx www.cpearson.com/excel/Classes.aspx www.cpearson.com/excel/Classes.aspx http://www.garyradley.com/vbatutor/ http://www.garyradley.com/vbatutor/
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.