5.3 Eigenschaftsmethode
Eigenschaftsmethoden (Properties) ermöglichen einen verbesserten Schutz von Klassen-Eigenschaften und eine weitergehende Kontrolle bei den Veränderungen der Eigenschaften. Um dies zu verdeutlichen, wurde die Klasse Fahrzeug im folgenden Programm (Projekt Eigenschaftsmethode) verändert.
Zunächst die neue Klassendefinition:
Public Class Fahrzeug
Dim geschwindigkeit As Integer
Property PGeschwindigkeit() As Integer
Get
Return geschwindigkeit
End Get
Private Set(value As Integer)
If value > 100 Then
geschwindigkeit = 100
ElseIf value < 0 Then
geschwindigkeit = 0
Else
geschwindigkeit = value
End If
End Set
End Property
Sub beschleunigen(wert As Integer)
PGeschwindigkeit += wert
End Sub
End Class
Listing 5.4 Projekt »Eigenschaftsmethode«, Definition der Klasse
Zur Erläuterung:
- Es gibt nach wie vor die geschützte Eigenschaft geschwindigkeit.
- Zu dieser Eigenschaft wurde die Eigenschaftsmethode (Property) PGeschwindigkeit() hinzugefügt.
- Eigenschaftsmethoden werden mit dem Schlüsselwort Property eingeleitet und sind zunächst öffentlich. Sie bestehen aus sogenannten Accessoren, einem Get-Accessor und einem Set-Accessor. Der Get-Accessor ist verantwortlich für das Lesen der Eigenschaft geschwindigkeit. Der Set-Accessor ist verantwortlich für das Schreiben in die Eigenschaft geschwindigkeit.
- Die Accessoren Get und Set sind öffentlich, wenn die Eigenschaftsmethode öffentlich ist. In diesem Fall können Sie aber einen der beiden Accessoren kapseln. Die Accessoren sind gekapselt, wenn die gesamte Eigenschaftsmethode gekapselt ist.
- Im vorliegenden Programm wurde der Set-Accessor mit Private gekapselt. Die Eigenschaft geschwindigkeit soll also nach wie vor nur über die öffentliche Methode beschleunigen() verändert werden können.
- Im Set-Accessor wird durch eine Verzweigung dafür gesorgt, dass der Wert der Eigenschaft geschwindigkeit nicht kleiner als 0 und nicht größer als 100 werden darf (eine Geschwindigkeitsbegrenzung). Eine solche Kontrolle ist einer der Einsatzzwecke einer Eigenschaftsmethode.
- In der Methode beschleunigen() wird der gelieferte Wert zu der Eigenschaftsmethode hinzuaddiert. Auf diese Weise wird dafür gesorgt, dass sich auch bei Aufruf der Methode beschleunigen() der Wert der Eigenschaft geschwindigkeit nur innerhalb der erlaubten Grenzen bewegt.
Es folgt das Programm, in dem die veränderte Klasse benutzt wird:
Public Class Form1
Private Sub cmdAnzeigen_Click(...) Handles ...
Dim vespa As New Fahrzeug
lblAnzeige.Text = vespa.PGeschwindigkeit
vespa.beschleunigen(120)
' vespa.PGeschwindigkeit = 50
lblAnzeige.Text &= vbCrLf &
vespa.PGeschwindigkeit
End Sub
End Class
Listing 5.5 Projekt »Eigenschaftsmethode«, Benutzung der Klasse
Zur Erläuterung:
- Zur Ausgabe wird der öffentlich zugängliche Get-Accessor PGeschwindigkeit() benutzt.
- Es wird versucht, das Fahrzeug um 120 zu beschleunigen. Dies gelingt allerdings nicht, da der Set-Accessor PGeschwindigkeit() dies verhindert, siehe Abbildung 5.3.
Abbildung 5.3 Kontrolle durch Eigenschaftsmethode
- In der vorletzten Zeile steht (auskommentiert) eine Anweisung, die nicht durchgeführt werden kann. Der Set-Accessor PGeschwindigkeit() ist gekapselt, daher führt die Anweisung vespa.PGeschwindigkeit = 50 zu einem Fehler.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.