WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 03.12.2002, 13:14   #1
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

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
Seidl ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:09 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag