![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
|
![]() |
#1 |
Veteran
![]() Registriert seit: 10.01.2001
Beiträge: 478
|
![]() 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 |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|