Properties vs. Konstruktoren


Eine Frage, die im Zusammenhang mit der aktuellen Webcastserie “Get the BASICs, VB.NET für Einsteiger und Umsteiger” aufkam, war, wie sich Properties von Konstruktoren abgrenzen.


Grundsätzlich dienen Properties dazu, Felder (Variablen) in einem Objekt kontrolliert setzen zu können indem sie die Ausführung von Code gestatten, wenn Eigenschaftenwerte festgelegt oder abgerufen werden.


Mit Konstruktoren können Objekte aus Klassen instanziieren werden – sie steuern die Erstellung von Objekten. Sind diese überladen vorhanden (mehrere Konstruktoren mit unterschiedlichen Parametern) können schon bei der Instanziierung eines Objekts bestimmte Objekteigenschaften gesetzt werden.


Zur Verdeutlichung ein kleines Beispiel:


Option Strict On


Option Explicit On


 


Module Module1


 


    Sub Main()


 


        Dim Daniel As New Person(“Daniel”, “Walzenbach”, 1976)


 


        Console.WriteLine(Daniel)


        Console.WriteLine()


 


 


        Dim Bernhard As New Person


        Bernhard.Vorname = “Bernhard”


        Bernhard.Nachname = “Frank”


        Bernhard.Geburtsjahr = 2007


 


        Console.WriteLine(Bernhard)


 


    End Sub


 


End Module


 


Public Class Person


 


#Region “Variablen”


 


    Private _Nachname As String


    Private _Vorname As String


    Private _Geburtsjahr As Integer


 


#End Region


 


#Region “Properties”


 


    Public Property Nachname() As String


        Get


            Return _Nachname


        End Get


        Set(ByVal value As String)


            _Nachname = value


        End Set


    End Property


 


    Public Property Vorname() As String


        Get


            Return _Vorname


        End Get


        Set(ByVal value As String)


            _Vorname = value


        End Set


    End Property


 


    Public Property Geburtsjahr() As Integer


        Get


            Return _Geburtsjahr


        End Get


        Set(ByVal value As Integer)


 


            ‘ das Geburtsjahr überprüfen


            If value <= System.DateTime.Now.Year Then


                ‘ alles ok


                _Geburtsjahr = value


 


            Else


                ‘ das Geburtsdatum darf nicht in der Zukunft liegen


                Console.WriteLine(“Das Geburtsdatum darf nicht in der Zukunft liegen.”)


 


            End If


 


        End Set


    End Property


 


#End Region


 


#Region “Konstruktoren”


 


    Public Sub New()


 


    End Sub


 


    Public Sub New(ByVal Vorname As String, ByVal Nachname As String, ByVal Geburtsjahr As Integer)


        Me.Vorname = Vorname


        Me.Nachname = Nachname


        Me.Geburtsjahr = Geburtsjahr


    End Sub


 


#End Region


 


#Region “Methoden”


 


    Public Overrides Function ToString() As String


        Return String.Format(“{0} {1}{2}Geburtsjahr: {3}” _


            , _Vorname, _Nachname, System.Environment.NewLine _


            , _Geburtsjahr)


    End Function


 


#End Region


 


End Class


Referenzen:
Klasseneigenschaften, Felder und Methoden
Verwenden von Konstruktoren und Destruktoren


Schöne Grüße


Daniel

Comments (0)