[VB2005] Klassenmodule - Anlage Property

05/08/2010 - 10:36 von Josef Morlo | Report spam
Hallo,
für eine Klasse mit trigonometrischen Berechnungen bekomme ich, je nach
Konstruktor, eine Winkelangabe im Gradmaß oder anhand zweier Punkte pt1 und
pt2, aus denen er dann zu ermitteln ist (¥SteigungŽ). Wie lege ich die
zugehörige Eigenschaft am besten an?

Sub New(ByVal pt1 As Point, ByVal pt2 As Point, ...)
mPoint1 = pt1
mPoint2 = pt2
...
End Sub

Sub New(ByVal agl As Double, ...)
mAngle = agl
...
End Sub

Ich habs so probiert, bin mir aber nicht ganz sicher:

Public Property Angle() As Double
Get
'Falls direkte Winkelangabe, fehlen die Punkte
'Falls Punkt(e) vorhanden, keine direkte Winkelangabe
If Not (mPoint1 = Nothing) Then
mAngle = GetAngle(mPoint1, mPoint2)
End If
Return mAngle
End Get
Set(ByVal value As Double)
mAngle = value
End Set
End Property

Function GetAngle(ByVal p1 As Point, ByVal p2 As Point) As Double
'Berechnet Winkel aus zwei Punkten
End Function

Frage 1: Kann man die Eigenschaft so anlegen?
Frage 2: Sollte man die Prüfung doch besser in Set-Prozedur legen?
Frage 3: Gibt es eine weitere, bessere Variante?


Danke für Beitràge

Grüße

Josef Morlo
 

Lesen sie die antworten

#1 Peter Fleischer
05/08/2010 - 14:43 | Warnen spam
"Josef Morlo" schrieb im Newsbeitrag
news:1s5lgy37h2r6c$
...
für eine Klasse mit trigonometrischen Berechnungen bekomme ich, je nach
Konstruktor, eine Winkelangabe im Gradmaß oder anhand zweier Punkte pt1
und
pt2, aus denen er dann zu ermitteln ist (¥SteigungŽ). Wie lege ich die
zugehörige Eigenschaft am besten an?
...
Frage 1: Kann man die Eigenschaft so anlegen?
Frage 2: Sollte man die Prüfung doch besser in Set-Prozedur legen?
Frage 3: Gibt es eine weitere, bessere Variante?



Hi Josef,
zuerst solltest Du das Interface festlegen, welches für die Nutzung der
Klasse zu nutzen ist. Aus diesen außen sichtbaren Member (Methoden,
Eigenschaften, Felder) kann man die inneren Ablàufe festlegen. Wenn die
Koordinaten nur in das Objekt zu schreiben sind und der Winkel nur
rauszuholen ist, dann kann man beim Reinreichen der Koordinaten sofort den
Winkel berechnen, intern ablegen und dann bei Bedarf ohne zusàtzliche
Berechnung liefern. In diesem Fall kann man sofort prüfen, ob sich ein
Winkel berechnen làsst (unterschiedliche Koordinaten für Punkt 1 und Punkt
2). Wenn nur ein Winkel auf Basis von Koordinaten sofort zu berechnen ist,
dann reichte eine statische Methode (Punkte als Parameter, berechneter
Winkel als Rückgabe).

zu Frage 1: Dein Code geht so, aber falsche Koordinatenangaben, aus denen
der Winkel berechnet wird, werden erst viel spàten (beim Abruf des Winkels)
erkannt.

zu Frage 2: s. meine Ausführungen oben.

zu Frage 3: definiere, was "besser" ist (Bewertungskriterium, zu erreichende
Ziele). Die "beste" Variante ist die, die die Zielkriterien besser als
andere Varianten erfüllt. Zielkriterien können sein: Verarbeitungszeit,
Programmierungsaufwand usw.

Viele Gruesse
Peter

Ähnliche fragen