|
Nachdem gerade frisch angekündigt worden ist, dass die nächste
Visual Basic-Version 7 die Verwendung von Konstruktoren
für Klassenobjekte ermöglichen soll, erübrigt sich dieser Tipp ja
schon fast. Aber da Sie als objektorientiert programmierender Profi
bestimmt nicht noch so lange warten wollen, zeige ich Ihnen, wie Sie
Konstruktoren bereits jetzt verwenden können. Die Migration nach
Visual Basic 7 dürfte sich dann auf reine
Syntax-Nachbearbeitung beschränken.
Ganz gemäß den Konventionen anderer Programmiersprachen legen
Sie dazu einfach eine öffentliche Methode mit dem Namen der Klasse
und mit den gewünschten Parametern an. Angenommen, Sie haben Ihre
Klasse "MeineKlasse" genannt, sähe dies etwa so aus:
Public Sub MeineKlasse(Param1 As ..., Param2 As ..., ...)
'...
End Sub
In dieser Methode können Sie nun den zu initialisierenden
privaten oder Eigenschaften-Variablen die übergebenen
Parameter-Werte zuweisen. Der einzige kleine Nachteil ist nur, dass
der Aufruf dieses Konstruktors nicht in der gleichen Zeile wie die
Instanzierung erfolgen kann, aber ansonsten sähe er folgendermaßen
aus:
Dim Klasse As MeineKlasse
Set Klasse = New MeineKlasse
Klasse.MeineKlasse a, b
Etwas eleganter wird das natürlich, wenn Sie in ihrer Klasse
keine Standard-Eigenschaft benötigen. Dann können Sie nämlich
diese Kontruktor-Methode als Standard festlegen (ja doch, auch
Methoden können als "Voreinstellung" gewählt werden!)
und so aufrufen:
Dim Klasse As MeineKlasse
Set Klasse = New MeineKlasse
Klasse a, b
Deklarieren Sie die Parameter der Konstruktor-Methode optional,
kann der Anwender Ihrer Klasse wählen, welche Werte er
initialisieren möchte:
Public Sub MeineKlasse(Optional Param1 As ..., Optional ...)
'...
End Sub
Und ein Beispiel-Aufruf:
Dim Klasse As MeineKlasse
Set Klasse = New MeineKlasse
Klasse Param2:=b
Destruktoren können Sie natürlich ebenfalls anlegen. Wenn Sie
einer Destruktor-Methode obendrein noch die Objekt-Variable selbst
als Parameter übergeben, kann die Klasse sogar selbst dafür
sorgen, dass die Objekt-Variable freigegeben wird (Set ... = Nothing):
Public Sub Destructor(ObjVar As MeineKlasse)
' Code zum Aufräumen...
Set ObjVar = Nothing
End Sub
Überzeugen Sie sich selbst, dass dies funktioniert:
Dim Klasse As MeineKlasse
Set Klasse = New MeineKlasse
'...
Debug.Print (Klasse Is Nothing)
Klasse.Destructor Klasse
Debug.Print (Klasse Is Nothing)
Da sage doch noch einer, mit Visual Basic könne man (noch) nicht
richtig objektorientiert programmieren...
|