BigBasti's Blog About Me & my Digital Lifestyle

9Dez/090

VB.NET: Saubere Klassen erstellen mit Properties

Heutzutage wird fast nurnoch Objektorientiert programmiert. Das bedeutet, dass ein größeres Projekt schnell mal auf eine Klassenanzahl von 100 und mehr wächst.

Damit man den Überblick behält und den Code, den man schon geschrieben hat möglichst wiederverwenden kann, sollte man ein paar grundlegende Regeln beachten.

In diesem Artikel möchte ich ein Beispiel zeigen, wie man eine Klasse in ein Projekt integriert und dank der benutzten Standardmethoden an ein Datagrid bindet.

Warum schreibe ich diesen Artikel überhaupt? Erst gestern habe wurde in einem Forum die Frage gestellt, warum man eine Liste (Of T) nicht als DataSource für ein DataGridView benutzen kann. Dabei ist das sehr wohl möglich, der User hat seine Klasse aber "unschön" gestaltet, weswegen sich die anderen Steuerelemente auch quer gestellt haben.

Hier ein Beispiel einer solchen "Unschönen" Klasse:


Public Class Auto
    Public marke As String
    Public motor As String
    Public geschw As Integer
End Class

        Dim al As New List(Of Auto)
        al.Add(New Auto With {.marke = "VW", .motor = "Diesel", .geschw = 0})

        al(0).geschw += 10

Wie man sieht sind hier alle Klassenvariablen öffentlich zugänglich, und die Klasse hat keinerlei Kontrolle darüber, wie sie befüllt werden. Ein weiterer Nachteil ist auch die Inkompabilität zu anderen Steuerelementen, da diese einen Standardkonformen Aufbau der Klasse erwarten. Finden sie bestimmte Elemente in der Klasse nicht so verweigern diese die Funktionalität!

Wie müsste diese Klasse also umgebaut werden, damit diese kompatibel zu anderen Objekten wird?


Public Class Auto
    Private geschw As Integer

    Public Sub New(ByVal marke As String, ByVal motor As String)
        Me._marke = marke
        Me._motor = motor
    End Sub

    Private _marke As String
    Public Property Marke() As String
        Get
            Return _marke
        End Get
        Set(ByVal value As String)
            _marke = value
        End Set
    End Property

    Private _motor As String
    Public Property Motor() As String
        Get
            Return _motor
        End Get
        Set(ByVal value As String)
            _motor = value
        End Set
    End Property

    Public Sub beschleunigen(ByVal a As String)
        geschw += a
    End Sub

    Public Sub bremsen(ByVal a As String)
        geschw -= a
    End Sub
End Class

Wie man sieht ist die Klasse nun natürlich um einiges länger geworden. Leider kann man das zur zeit noch nicht anders machen. Aber Abhilfe kommt in der neuen VB.NET Version, wo man die properties so wie in C# 3.0 erstellen kann.

Die Zugriffe auf die Klassenvariablen werden nun über properties gesteuert, die nun auch zB. überprüfen könnten, ob der übergebene Wert überhaupt passt und gegebenenfalls noch Änderungen daran vornehmen.

Aber was bringt uns nun dieser längere Aufbau der Klasse? Nun, wenn wir unser Objekt, das aus dieser Klasse entsteht an andere Objekte übergeben, erwarten diese, dass sie properties vorfinden, mit denen sie arbeiten können.

Hat die Klasse keine Properties so können wir auch bestimmte Funktionen auch nicht benutzen. Ich möchte das mal an einem DataGridView demonstrieren, da dieses Element von den properties sehr schön Gebrauch macht!

Fügt man folgenden Code einem Form mit einer DataGridView hinzu:


    Private Sub Form1_Load() Handles MyBase.Load
        Dim autos As New List(Of Auto)

        autos.Add(New Auto("VW", "Diesel"))
        autos.Add(New Auto("Audi", "Benziner"))
        autos.Add(New Auto("Mercedes", "Diesel"))
        autos.Add(New Auto("Renault", "Diesel"))
        autos.Add(New Auto("BMW", "Beziner"))

        Dim bs As New BindingSource
        bs.DataSource = autos

        Me.DataGridView1.DataSource = bs
    End Sub

erhält man folgendes Bild:

datagridviewBild 1: Die Datagridview stellt alle Informationen angenehm dar

Wie man sieht konnte man mit nur 3 Zeilen Code (Abgesehen vom Erzeugen der Werte) alle Daten der Liste visualisieren. Man beachte desweiteren, dass sogar die Namen der Properties (Marke und Motor) ausgelesen werden und der richtigen Tabelle zugeordnet werden!

Dies könnte man natürlich auch ohne Properties hinbekommen, doch würde man viel mehr Aufwand betreiben müssen und man denke an die Zukunft, in der unser Modell sehr einfach zu warten wäre.

Hier gibts ein kleines Demoprojekt: Download [VS 2008]

VN:F [1.8.4_1055]
Rating: 8.0/10 (4 votes cast)
VB.NET: Saubere Klassen erstellen mit Properties8.0104
Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Yigg
  • Google Bookmarks
  • PDF
  • MySpace

hat dir dieser Artikel gefallen?

Dann abonniere doch diesen Blog per RSS Feed!

Kommentare (0) Trackbacks (0)
  1. Bloggd: VB.NET: Saubere Klassen erstellen mit Propertys – http://blog.bigbasti.com/vb-net-saubere-... #vb #net
    via Twitoaster


Kommentar schreiben


Noch keine Trackbacks.

Get Adobe Flash playerPlugin by wpburn.com wordpress themes