vbaClass beoordelen

Status
Niet open voor verdere reacties.

bas38

Gebruiker
Lid geworden
5 dec 2015
Berichten
15
Allen,
Ik ben voor het eerst begonnen met het maken van ClassModules
Ik heb 2 Classes gemaakt waarvan ik wil vragen of iemand misschien een oordeel wil geven over de opzet.

Opzet:
De 1e class [clsBaseObject] moet een basis object voorstellen met een aantal standaard properties van een werktuig
De 2e class [clsMotor] moet de properties van clsBaseObject beschikbaar hebben en daar zelf dan nog een aantal 'motor specifieke' properties bij hebben.

Als ik het object clsMotor aangemaakt heb in het geheugen moet ik zowel de properties van clsBaseObject als clsMotor op dezelfde manier kunnen beheren

Uitvoering:

clsBaseObject
clsMotor
Module1 met een sub om te testen

clsBaseObject
Code:
Option Explicit

'**************************
'*** Private Properties ***
'**************************

Private pBouwJaar As Integer
Private pFabrikant As String
Private pMerk As String
Private pTypeNummer As String
Private pSerieNummer As String
Private pExtraInfo  As String

'**************************
'*** Public Properties ***
'**************************

Public Property Get BouwJaar() As Integer
    BouwJaar = pBouwJaar
End Property
Public Property Let BouwJaar(value As Integer)
    pBouwJaar = value
End Property
Public Property Get Fabrikant() As String
    Fabrikant = pFabrikant
End Property
Public Property Let Fabrikant(value As String)
    pFabrikant = value
End Property
Public Property Get Merk() As String
    Merk = pMerk
End Property
Public Property Let Merk(value As String)
    pMerk = value
End Property
Public Property Get TypeNummer() As String
    TypeNummer = pTypeNummer
End Property
Public Property Let TypeNummer(value As String)
    pTypeNummer = value
End Property
Public Property Get SerieNummer() As String
    SerieNummer = pSerieNummer
End Property
Public Property Let SerieNummer(value As String)
    pSerieNummer = value
End Property
Public Property Get ExtraInfo() As String
    ExtraInfo = pExtraInfo
End Property
Public Property Let ExtraInfo(value As String)
    pExtraInfo = value
End Property

'**************************
'*** Class Initialize *****
'**************************
Private Sub Class_Initialize()
    Me.BouwJaar = 2017
    Me.Fabrikant = "Tesla"
    Me.Merk = "Amazing Car"
    Me.TypeNummer = "Model S"
    Me.SerieNummer = "JHFD468"
    Me.ExtraInfo = "Programming = Easy?"
    Debug.Print "clsBaseObject Ininialized"
End Sub

clsMotor

Code:
Option Explicit

'**************************
'*** Private Properties ***
'**************************

Private pToerenTal As String
Private pVermogen As String
Private pCarterInhoud As String
Private pSmeerolieType As String
Private pLocatieOpSchip As String

'**************************
'*** Public Properties ***
'**************************
Public pBaseObject As clsBaseObject

Public Property Get Toerental() As String
    Toerental = pToerenTal
End Property

Public Property Let Toerental(value As String)
    pToerenTal = value
End Property

'**********************************************************
'*** SET PUBLIC PROPERTIES INHERITED FROM CLSBASEOBJECT ***
'**********************************************************
Public Property Get BouwJaar() As String
    BouwJaar = pBaseObject.BouwJaar
End Property

Public Property Let BouwJaar(value As String)
    pBaseObject.BouwJaar = value
End Property

Public Property Get Fabrikant() As String
    Fabrikant = pBaseObject.Fabrikant
End Property

Public Property Let Fabrikant(value As String)
    pBaseObject.Fabrikant = value
End Property

Public Property Get Merk() As String
    Merk = pBaseObject.Merk
End Property

Public Property Let Merk(value As String)
    pBaseObject.Merk = value
End Property

Public Property Get TypeNummer() As String
    TypeNummer = pBaseObject.TypeNummer
End Property

Public Property Let TypeNummer(value As String)
    pBaseObject.TypeNummer = value
End Property

Public Property Get SerieNummer() As String
    SerieNummer = pBaseObject.SerieNummer
End Property

Public Property Let SerieNummer(value As String)
    pBaseObject.SerieNummer = value
End Property

Public Property Get ExtraInfo() As String
    ExtraInfo = pBaseObject.ExtraInfo
End Property

Public Property Let ExtraInfo(value As String)
    pBaseObject.ExtraInfo = value
End Property

'**************************
'*** Class Initialize *****
'**************************

Private Sub Class_Initialize()
Set Me.pBaseObject = New clsBaseObject
Debug.Print "pBaseObject Ininialized"
End Sub

''**************************
''*** Class Terminate *****
''**************************

Private Sub Class_Terminate()
    Set Me.pBaseObject = Nothing
    Debug.Print "pBaseObject destroyed"
End Sub

Module1 met sub test

Code:
Option Explicit

Sub test()
Dim Motor As clsMotor

Set Motor = New clsMotor

    With Motor
        .Fabrikant = "Caterpillard"
        .TypeNummer = "6068HFG"
        .SerieNummer = "12RT8KlP89"
        .Toerental = "1500 RPM"
        .BouwJaar = 2012
        .ExtraInfo = "Brandstofverbruik 67 Ltr/Uur"
    End With
    
Debug.Print Motor.Fabrikant
Debug.Print Motor.TypeNummer
Debug.Print Motor.SerieNummer
Debug.Print Motor.Toerental
Debug.Print Motor.BouwJaar
Debug.Print Motor.ExtraInfo

Set Motor = Nothing
End Sub

Alvast bedankt voor evt reactie's
 
Zet het in een db, zodat we kunnen zien hoe e.e.a. werkt, lijkt me een stuk handiger voor ons.
 
Link naar de db

Sorry niet zo handig idd
Bij deze de db als bijlage.
 

Bijlagen

  • cls.zip
    25,7 KB · Weergaven: 24
Lijkt prima te werken, toch? Ik zie er in ieder geval geen gekke dingen in, als zou ik de clsBaseObject niet vullen bij het initialiseren:

Code:
Private Sub Class_Initialize()
    Debug.Print "clsBaseObject Initialized"
End Sub

Maar dus bij het gebruik:
Code:
Dim Motor As clsMotor
Dim MainObj As clsBaseObject

    Set MainObj = New clsBaseObject
    With MainObj
        .BouwJaar = 2017:                               Debug.Print .BouwJaar
        .Fabrikant = "Tesla":                           Debug.Print .Fabrikant
        .Merk = "Amazing Car":                          Debug.Print .Merk
        .TypeNummer = "Model S":                        Debug.Print .TypeNummer
        .SerieNummer = "JHFD468":                       Debug.Print .SerieNummer
        .ExtraInfo = "Programming = Easy?":             Debug.Print .ExtraInfo
    End With
    Debug.Print
    
    Set Motor = New clsMotor
    With Motor
        .Fabrikant = "Caterpillar":                     Debug.Print .Fabrikant
        .TypeNummer = "6068HFG":                        Debug.Print .TypeNummer
        .SerieNummer = "12RT8KlP89":                    Debug.Print .SerieNummer
        .Toerental = "1500 RPM":                        Debug.Print .Toerental
        .BouwJaar = 2012:                               Debug.Print .BouwJaar
        .ExtraInfo = "Brandstofverbruik 67 Ltr/Uur":    Debug.Print .ExtraInfo
    End With
    Set Motor = Nothing
 
bedankt

Bedankt voor de reactie ,goed om te horen dat ik in de goede richting zit.
 
't Is nog redelijk basic, dus er valt nog weing fout te doen :).
 
Haha Ja dat is zo

Ik kom geheid nog wel wat moeilijkheden tegen de komende tijd.
Als ik nog vragen heb zal ik niet schromen om ze te stellen :thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan