Nehmen wir als einfaches Beispiel eine Klasse die Punkt in einem rechtwinkeligen Koordinatensystem beschreiben kann. Um einen solchen Punkt eindeutig festzulegen benötigt man einen Wert für die Achse X für und einen Wert für die Achse Y. Unsere Klasse sollte also zwei Members enthalten die ich jetzt einfach mal mAX und mAY nenne und als Integer definiere. Unter VB könnte man jetzt also ein Klassenmodul Punkt erstellen und in den Deklarationen folgendes schreiben:
public mAX as integer
public mAY as integer
Ich habe damit also so eine Art Bauplan für Punkte die über zwei Werte festgelegt werden erstellt. Dieser Bauplan beschreibt wie so ein Punkt aussehen kann, gibt mir aber keinen bestimmten an. Um einen Punkt zu bestimmen müssen wir also ein Objekt nach diesem Bauplan erstellen.
dim P as Punkt
set P = new Punkt
Ich habe jetzt also ein Objekt das einen Punkt eindeutig bestimmen könnte aber das tut es noch nicht weil mAX und mAY noch keine Werte enthalten. Da wird diese beiden Members Public definiert haben, können wir sie von aussen ändern. Zum Beispiel könnten wir also sagen:
P.mAX = 2
P.mAY = 5
Eigentlich wäre es aber doch schön wenn ein Punkt schon beim Erzeugen Werte besitzen würde. Er könnte dann zum Beispiel am Ursprung liegen, also am Punkt 0, 0. Dazu haben Klassen unter VB ein Initialize-Ereignis das beim Erzeugen eines neuen Objekts (=New) auftritt.
Private Sub Class_Initialize()
mAX = 0
mAY = 0
End Sub
Eigentlich schon ganz ordentlich. Es könnte jetzt aber sein, dass wir nur Punkte im ersten Quadranten und damit nur postive Werte für mAX und mAY zulassen wollen. Wie können wir jetzt den Benutzer davon abhalten die Werte negativ zu setzen? Dafür deklarieren wir mAX und mAY Private statt Public. Dadurch können sie dann nur mehr von innerhalb der Klasse geändert werden. Von ausserhalb der Klasse sind sie nicht einmal mehr sichtbar womit also zum Beispiel A = P.mAX nicht mehr funktionieren würde.
Um die Werte jetzt noch sehen oder ändern zu können brauchen wir jetzt Properties (Eigenschaften). Zum Beispiel könnte das so aussehen.
Property Get AX
AX = mAX
End Property
Property Set AX
if AX >= 0 then
mAX = AX
else
mAX = 0
end if
End Property
Property Get AY
AY = mAY
End Property
Property Set AY
if AY >= 0 then
mAY = AY
else
mAY = 0
end if
End Property
Damit würde jetzt A = P.AX wieder einen Sinn ergeben.
Um unseren Punkt jetzt noch zu perfektionieren könnten wir ihm zum Beispiel beibringen sich mit einem Kommando in X- und Y- Richtung verschieben zu lassen. Dazu verwenden wir ein Sub das zum Beispiel so aussehen könnte:
Public Sub Move(X, Y)
AX = AX + X
if AX < 0 then
AX = 0
end if
AY = AY + Y
if AY < 0 then
AY = 0
end if
End Sub
Das wäre auch schon ganz annehmbar aber jetzt wissen wir nach einem Aufruf von Move nicht, ob wir zu kleine Werte erzeugt hätten oder ob der Punkt korrekt verschoben wurde. Dazu machen wir aus unserem Sub eine Function:
Public Function Move(X, Y) as Boolean
Move = True
AX = AX + X
if AX < 0 then
AX = 0
Move = False
end if
AY = AY + Y
if AY < 0 then
AY = 0
Move = False
end if
End Sub
Ich hoffe damit kannst was anfangen.
Wenn du dich genauer einlesen willst wirst du z.B. unter
http://msdn.microsoft.com fündig.
Tip:
http://msdn.microsoft.com/library/de...ownclasses.asp