Eine Klasse kann in einer anderen Klasse implementiert werden. Klassen können mit VB nicht abgeleitet werden, wie in C++. In VB ist keine Vererbung möglich. Über eine Implementierung können unter anderem Methoden, oder Eigenschaften der implementierten Klassen übernommen werden. Weiter Info´s finden sie auf...
http://msdn.microsoft.com/library/default.asp?URL=/library/devprods/vs6/vbasic/vbenlr98/vastmimplements.htm
In diesem Artikel baue ich auf den ersten Teil auf: "Komponenten(DLL) mit VB" auf und verwende die fertiggestellte Klasse "ClassRechnen" zum Implementieren. Diese Klasse werde ich hier nicht mehr erklären!
Wir fügen ein neues Klassenmodul "ClassImpl" hinzu und öffnen die Code-Ansicht. Gleich als erstes Verwenden wir die "Implements"-Anweisung zum implementieren der ClassRechnen.
Implementieren der Klasse "ClassRechnen" in "ClassImpl"
Der Code für die Klasse "ClassImpl"
Option Explicit '*1 Implements ClassRechner '*2 Private clssRechX As ClassRechner '*3 Private Sub Class_Initialize() Set clssRechX = New ClassRechner End Sub '*4 Private Sub Class_Terminate() Set clssRechX = Nothing End Sub '*5 Private Function ClassRechner_Rechnen() As Long End Function '*6 Private Property Get ClassRechner_Zahl1() As Long ClassRechner_Zahl1 = clssRechX.Zahl1 End Property Private Property Let ClassRechner_Zahl1(RHS As Long) clssRechX.Zahl1 = RHS End Property Private Property Get ClassRechner_Zahl2() As Long ClassRechner_Zahl2 = clssRechX.Zahl1 End Property Private Property Let ClassRechner_Zahl2(RHS As Long) clssRechX.Zahl2 = RHS End Property '*7 Public Property Let Zahl1(Par1 As Long) ClassRechner_Zahl1 = Par1 End Property Public Property Get Zahl1() As Long Zahl1 = ClassRechner_Zahl1 End Property Public Property Let Zahl2(Par2 As Long) ClassRechner_Zahl2 = Par2 End Property Public Property Get Zahl2() As Long Zahl2 = ClassRechner_Zahl2 End Property Public Function Rechnen() As Long Rechnen = clssRechX.Rechnen End Function |
Und hier die Code-Beschreibung:
'*1
Die Klasse ClassRechnen wird implementiert.
'*2
Hier wird "clssRechX" als globale Objectvariable innerhalb der Klasse deklariert, um in ihr Daten speichern zu können
'*3
Bei der Initialisierung der COM wird eine Instanz zur Klasse "ClassRechnen" gesetzt.
'*4
Bei der Klassen-Terminierung wird die Klassen-Instanz für "ClassRechnen" zerstört.
'*5
Jede Funktion der implementierten Klasse MUSS als Private-Funktion für den Zugriff auf das Objekt dieser Klasse implementiert werden.
'*6
Auch jede Eigenschaft(Property) MUSS als Private deklariert werden.
'*7
Um die implementierten Eigenschaften und Methoden jetzt wieder zur Verfügung zu haben, müssen alle noch mal implementiert werden. Sie können die selben Namen haben, wie die, in der implementierten Klasse. Visual Basic erkennt welche Eigenschaften und Methoden aufgeführt werden müssen.
Jetzt hat die Klasse "ClassImpl" die selben Eigenschaften und Methoden, wie die Klasse "ClassRechnen" zur Verfügung. Die "ClassImpl" kann natürlich beliebig auf eigene Property´s und Funktionen erweitert werden.
WICHITG: Bei der Implementierung einer Klasse, müssen alle Property´s(Eigenschaften) und Funktionen(Prozeduren, Methoden) wie in Punkt '*5 und '*6 beschrieben implementiert werden! Allerdings können beliebig viele Public-Property´s, wie in Punkt '*7 implementiert werden, jenachdem welche Eigenschaften und Methoden zur Verfügung stehen sollen.
Download: Das gesamte Projekt gibt´s unten Download.
TIP: Der KlassenGenerator in Visual Basic
Mit Hilfe des Klassengenerators können Klassen, Methoden, Eigenschaften, Auflistungen, Erreignisse, und Auflisten auf bequeme Art und Weise mit wenigen Mausklicks hinzufügt werden.
Im Menü Add-Ins/Add-In-Manager befindet sich der "Vb 6 Klassengenerator". Machen Sie einen Doppel-Klick drauf. Jetzt ist dieser geladen und steht im Menü Add-Ins zur Verfügung! Erstellen Sie Ihre gewünschten Methoden, usw.... Nach Aktualisierung steht Ihre Auswahl zur Verfügung.