5.7 Statische Elemente
Bisher haben wir nur Eigenschaften kennengelernt, die bestimmten Objekten zugeordnet sind, und Methoden, die für ein bestimmtes Objekt ausgeführt werden. Darüber hinaus gibt es aber auch klassenbezogene Eigenschaften und Methoden:
- Klassenbezogene Eigenschaften, sogenannte statische Eigenschaften, sind thematisch mit der Klasse verbunden. Ihre Werte stehen allen Objekten der Klasse zur Verfügung. Falls sie öffentlich deklariert werden, stehen sie auch außerhalb der Klasse zur Verfügung.
- Klassenbezogene Methoden, sogenannte statische Methoden, sind ebenfalls thematisch mit der Klasse verbunden.
Im nachfolgenden Beispiel im Projekt StatischeElemente werden zwei statische Eigenschaften genutzt, eine ist in der Klasse gekapselt, die andere öffentlich. Außerdem kommt noch eine statische Methode zum Einsatz. Zunächst die Klassendefinition:
Public Class Zahl
Dim wert As Double
Dim nummer As Integer
Shared anzahl As Integer = 0
Public Shared pi As Double = 3.1415926
Sub New(x As Double)
anzahl += 1
nummer = anzahl
wert = x
End Sub
Sub maldrei()
wert = wert * 3
End Sub
Shared Function verdoppeln(x As Double) As Double
verdoppeln = x * 2
End Function
Function ausgabe() As String
ausgabe = "Objekt Nr. " & nummer &
", Wert: " & wert
End Function
End Class
Listing 5.14 Projekt »StatischeElemente«, Klassendefinition
Zur Erläuterung:
- Es wurde die Klasse Zahl definiert, mit deren Hilfe einige einfache Zahlenoperationen ausgeführt werden sollen.
- Die beiden Variablen wert und nummer sind objektbezogene Eigenschaften. Jedes Objekt hat also seinen eigenen Wert und seine eigene laufende Nummer.
- Die Variable anzahl ist eine klassenbezogene und gekapselte Eigenschaft. Diese statische Eigenschaft gibt es insgesamt nur einmal, unabhängig von der Anzahl der erzeugten Objekte. Sie steht innerhalb der Klasse allen Objekten gemeinsam zur Verfügung, sie wird also von den Objekten gemeinsam genutzt bzw. »geshared«. Das Schlüsselwort Shared kennzeichnet die Variable als eine statische Eigenschaft.
- Innerhalb des Konstruktors der Klasse wird die statische Eigenschaft anzahl bei jeder Erzeugung eines Objekts um 1 erhöht. Diese Eigenschaft repräsentiert also die Anzahl der Objekte. Darüber hinaus wird sie genutzt, um jedem Objekt bei seiner Erzeugung eine individuelle, laufende Nummer zu geben.
- Die Variable pi ist eine klassenbezogene und öffentliche Eigenschaft. Sie ist ebenfalls einmalig, steht aber nicht nur innerhalb, sondern auch außerhalb der Klasse zur Verfügung. Sie ist aber thematisch mit der Klasse Zahl verbunden, daher wird sie in der Klasse deklariert.
- Die Prozedur maldrei() ist eine objektbezogene Methode. Sie kann auf ein Objekt angewendet werden und verändert dieses Objekt gegebenenfalls.
- Die Funktion verdoppeln() ist eine klassenbezogene Methode. Sie wird nicht auf ein individuelles Objekt angewendet. Sie ist aber thematisch mit der Klasse Zahl verbunden und wird daher in der Klasse definiert. Innerhalb der Methode steht keine objektbezogene Eigenschaft (wie wert oder nummer) zur Verfügung.
Im folgenden Programm im Projekt StatischeElemente werden alle genannten statischen Elemente genutzt, siehe Abbildung 5.8.
Public Class Form1
Private Sub cmdAnzeigen_Click(...) Handles ...
Dim x As New Zahl(2.5)
Dim p As New Zahl(-5)
Dim y, r As Double
' Objektbezogene Methoden
x.maldrei()
lblAnzeige.Text = x.ausgabe() & vbCrLf &
p.ausgabe()
' Klassenbezogene Methode
y = 4
lblAnzeige.Text &= vbCrLf & "Zahl: " & y &
vbCrLf & "Nach Verdopplung: " &
Zahl.verdoppeln(y)
' Klassenbezogene und öffentl. Eigenschaft
r = 6
lblAnzeige.Text &= vbCrLf & "Radius: " & r &
vbCrLf & "Fläche: " & r * r * Zahl.pi
End Sub
End Class
Listing 5.15 Projekt »StatischeElemente«, Hauptprogramm
Abbildung 5.8 Statische Elemente
Zur Erläuterung:
- Es werden die beiden Objekte x und p der Klasse Zahl erzeugt. Dabei wird jeweils der Konstruktor durchlaufen, die Objekte erhalten ihre Startwerte sowie eine laufende Nummer.
- Auf das Objekt x wird eine objektbezogene Methode angewendet. Anschließend werden beide Objekte mit ihren Eigenschaften ausgegeben.
- Die statische Methode verdoppeln() wird auf eine Double-Variable angewendet.
- Die statische und öffentliche Eigenschaft pi der Klasse wird genutzt, um aus dem Radius eines Kreises die Fläche zu berechnen.
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.