Einfaches Beispiel für ein Klassenmodul

Es handelt sich um ein einfaches Beispiel für ein Klassenmodul, dass verschiedene Arten von Eigenschaften und Methoden darstellen soll.

Beschreibung des Klassenmoduls:

Es können Werte für einen Raum einer Wohnung / Haus festgelegt werden. Zu diesen Werten gehören Breite, Länge, Höhe, Name und Farbe des Raumes. Wenn diese Werte festgelegt sind, kann man Berechnungen über Wandgröße und Raumgröße durchführen lassen. Somit kann z.B. der Farbbedarf eines Raumes ermittelt werden.

Besonderheiten des Klassenmoduls:

Es gibt verscheidene Eigenschaften. Breite, Länge, Höhe, Name und Farbe des Raumes sind sowohl schreibbar wie lesbar. Die Eigenschaft Raumeinheit ist nur schreibbar aber nicht lesbar. Die Eigenschaft Einheit ist schreibgeschützt und somit nur lesbar.

Die Methode Zimmergroesse ist ohne Parameter aufzurufen. Die Methode Wandgroesse ist mit einer Festlegung der Wand bzw. des Fußßbodens (Raumgröße) aufrufbar. Der Parameter muss angegeben werden.

Es werden beim Initialisieren des Klassenmoduls Standardwerte gesetzt. 

Die Ausgabe erfolgt bereits formatiert. 

Die Module des Klassenmoduls:

 

               
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
Option Explicit 

'alle Deklarationen des Klassenmoduls
Private MyFarbe     As String 
Private MyRaum      As String 
Private MyLaenge    As Currency 
Private MyBreite    As Currency 
Private MyHoehe     As Currency 
Private MyEinheit   As String 

Public Enum vEinheit 
    cm = 1 
    m = 2 
    mm = 0 
End Enum 

Public Enum vWand 
    kurz = 0 
    lang = 1 
    Boden = 2 
End Enum 

'alles Eigenschaften
Public Property Let RaumEinheit(ByVal MyEinheiten As vEinheit) 
    MyEinheit = fktMyEinheit(MyEinheiten) 
End Property 

Public Property Get Einheit() As String 
    Einheit = MyEinheit 
End Property 

Public Property Get RaumFarbe() As String 
    RaumFarbe = MyFarbe 
End Property 

Public Property Let RaumFarbe(ByVal MeineFarbe As String
    MyFarbe = MeineFarbe 
End Property 

Property Get RaumName() As String 
    RaumName = MyRaum 
End Property 


Property Let RaumName(ByVal Zimmer As String
    MyRaum = Zimmer 
End Property 

Property Get RaumLaenge() As Currency 
    RaumLaenge = MyLaenge 
End Property 

Property Let RaumLaenge(ByVal Zimmerlaenge As Currency
    MyLaenge = Zimmerlaenge 
End Property 

Property Get RaumHoehe() As Currency 
    RaumHoehe = MyHoehe 
End Property 

Property Let RaumHoehe(ByVal Zimmerhoehe As Currency
    MyHoehe = Zimmerhoehe 
End Property 

Property Get RaumBreite() As Currency 
    RaumBreite = MyBreite 
End Property 

Property Let RaumBreite(ByVal Zimmerbreite As Currency
    MyBreite = Zimmerbreite 
End Property 

'Methoden für alle sichtbar

Public Function Zimmergroesse() As String 

    Dim strGroesse As Currency 
     
    strGroesse = MyLaenge * MyBreite 

    Zimmergroesse = Format(strGroesse, "#,##0.00") & " quadrat" & MyEinheit 
     
End Function 

Public Function Wandgroesse(ByVal Wand As vWand) As String 

    Dim strGroesse  As Currency 
    Dim strLaenge   As Currency 
    Dim strkurz     As Currency 
    Dim strlang     As Currency 
    Dim strBreite   As Currency 
    Dim strText     As String 
     
     'kurze Wand ermitteln
    strBreite = MyHoehe 
    If MyLaenge < MyBreite Then 
        strkurz = MyLaenge 
        strlang = MyBreite 
    Else 
        strkurz = MyBreite 
        strlang = MyLaenge 
    End If 

     'Wand ermitteln
    Select Case Wand 
        Case 0   'kurze Wand
            strLaenge = strkurz 
            strText = "Kurze Wand: " 
        Case 1   'lange Wand
            strLaenge = strlang 
            strText = "Lange Wand: " 
        Case 2 
            strLaenge = strkurz 
            strBreite = strlang 
            strText = "Fußboden: " 
    End Select 
     
    strGroesse = strLaenge * strBreite 

    Wandgroesse = strText & Format(strGroesse, "#,##0.00") & " quadrat" & MyEinheit 
     
End Function 


Private Function fktMyEinheit(ByVal MeineEinheit As vEinheit) As String 
    Select Case MeineEinheit 
    Case 2 
        fktMyEinheit = "meter" 
    Case 0 
        fktMyEinheit = "millimeter" 
    Case 1 
        fktMyEinheit = "centimeter" 
    End Select 

End Function 


Private Sub Class_Initialize() 
     'hier werden Standardwerte geladen
     'wenn das Klassenmodul initialisiert wird
     
    MyBreite = 1 
    MyLaenge = 1 
    MyHoehe = 1 
    MyFarbe = "rot" 
    MyRaum = "Flur" 
    MyEinheit = "meter" 
     
     
End Sub 

Private Sub Class_Terminate() 
     'hier sollten Objekte entladen werden
     'in diesem Beispiel sind keine Objekte vorhanden
End Sub 


In den Zeile 1 bis 21 sind alle notwendigen Variablen deklariert. Es sind nur die Deklarationen der Enum Werte auf öffentlich gesetzt und daher auch außerhalb des Klassenmoduls verfügbar. Die Enum-Werte sind vordefinierte Werte für einen Variablentyp. Wenn Sie die Variablen diesen Typ zuweisen (wie in Zeile 24), können Sie die hier deklarierten Werte  als Inhalte der Variablen (oder Funktionen) verarbeiten.

In Zeile 24 bis 26 wird die Eigenschaft RaumEinheit deklariert. Dies Eigenschaftz ist nicht lesbar, da keine Property Get Anweisung zu dieser Funktion exisitert.

In Zeile 28 bis 30 ist die schreibgeschützte Eigenschaft Einheit deklariert. Hier fehlt die Deklaration mit Property Let oder Property Set. So wird der Schreibschutz hergestellt.

Alle weiteren Eigenschaften werden von Zeile 32 bis Zeile71 deklariert. Hier gibt es sowohl eine Funktion Property Get wir eine Property Let Anweisung. Daher kann die Eigenschaft gelesen und neu gesetzt werden.

In Zeile 75 bis 83 wird die Methode Zimmergroesse als Funktion beschrieben. Die Funktion muss als Public deklariert werden, damit sie später auch verarbeitet werden kann. In dieser Funktion werden die gesetzten Parameter verarbeitet.

In Zeile 85 bis 122 ist die Funktion Wandgroesse beschrieben. Diese Funktion ist ähnlich wie Zimmergroesse. Nur es wird hier ein Parameter übergeben, der bestimmt, welcher Wert berechnet werden soll. Das würde praktisch natürlich die vorherige Funktion Zimmergroesse überflüssig machen.  

Dieser Code wird in ein Klassenmodul kopiert und clsWohnung benannt. Sie können natürlich auch einen anderen Namen verwenden, dann müssen Sie bei den Deklarationen den Namen entsprechend ändern.

Das Klassenmodul wird wie folgt in ein Modul eingesetzt:

               
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
Option Explicit 

Private objWohnung As clsWohnung 

Sub MeineWohnung() 

    Set objWohnung = New clsWohnung 
     
    With objWohnung 
        .RaumName = "Schlafzimmer" 
        .RaumBreite = 4.93 
        .RaumLaenge = 3.51 
        .RaumHoehe = 2.5 
        .RaumFarbe = "Blau" 
        .RaumEinheit = m 
        MsgBox .Zimmergroesse 
        MsgBox .Wandgroesse(Boden) 
        MsgBox .Wandgroesse(kurz) 
        MsgBox .Wandgroesse(lang) 
         
        MsgBox .Einheit 
    End With 
     
End Sub 


In Zeile 3 wird der Objektvariablen das neue Klassenmodul als Typ zugewiesen. In der Zeile 7 wird die neue Klasse initialisiert. Samit stehen erst  in der Objektvariablen alle Methoden und Eigenschaften zur Verfügung.

In den Zeilen 10 bis 15 werden die Werte zugewiesen. Es gibt in Zeile 15 eine Besonderheit. Diese Eigenschaft hat vordefinierte Werte. Diese werden als Quicktip im Code bereits angeboten.

In den Zeilen 16 bis 19 werden die Berechnungen durch geführt und entsprechend am Bildschirm angezeigt. In Zeile 21 wird nochmal die schreibgeschützte Eigenschaft ausgegeben. Diese hängt von der Eigenschaft RaumEinheit ab und setzt den dort ausgewählten Wert um. 



zurück zur Übersicht Klassenmodule
Diese Seite zu Mister Wong hinzufügen
Diese Seite zu ecure.del.icio.us hinzufügen
Diese Seite zu webnews hinzufügen
Diese Seite zu Google Bookmarks hinzufügen
Diese Seite zu linkarena hinzufügen
Diese Seite zu Yahoo hinzufügen






Interessante Links

Beschreibung Klassenmodule Beschreibung Klassenmodule






Für weitere Infos bitte auf den Text klicken

http://www.prawi-officewelt.de
 .::. nach oben .::.
 
 
©2008 - 2024 www.VBA-Wordwelt.de - alle Rechte vorbehalten
 
Kontakt | Impressum
los Suche

Cookies speichern Informationen lokal auf Ihrem Rechner, ohne die Verwendung kann der Funktionsumfang beeinträchtigt werden. Weitere Informationen


Annehmen