Wen es interessiert zur Einleitung Hintergrund lesen.
Hintergrund:
Spoiler anzeigen
1. Frage bezieht sich auf die absoluten Grundlagen der Klassen
Meine erste KLasse zum testen:
Spoiler anzeigen
Hintergrund:
Liebe Community,nachdem ich nun meine erste Anwendung tatsächlich, auch in der Firma, praktisch nutzen kann, möchte ich diese bzgl. der Code Struktur, welche momentan vermutlich noch Event gesteuert gewachsen im Spaghetti-Code Muster vorliegt, optimieren. Ich habe in dieser ANwendung ein Dataset mit diversen Tabellen und Linq abfragen auf einem Form mit Tabpages. Mit Ausnahme des Login Systems (welches ich schon in einer separaten Klasse ausgelagert habe) ist alles im frmMain programmiert. Nun stellt sich mir eben die Frage was noch sinnvoll ausgegliedert werden kann. Daher bin ich so frei und eröffne diesen Thread indem ich mir erlaube euch Anfangs mit schmerzenden Grundlagen zu nerven um dann nach und nach den Code zu optimieren.Vllt. kann dann künftig der ein oder andere Neuling wie ich es einer bin was damit anfangen....
1. Frage bezieht sich auf die absoluten Grundlagen der Klassen
Meine erste KLasse zum testen:
VB.NET-Quellcode
- Public Class Kontakt
- Private myNachname, myVorname, myPlz, myOrt As String
- Private myErstellungsdatum As Date
- Sub New()
- myErstellungsdatum = Date.Now
- End Sub
- Public ReadOnly Property Erstellungsdatum As Date
- Get
- Return myErstellungsdatum
- End Get
- End Property
- Public Property Nachname() As String
- Get
- Return myNachname
- End Get
- Set(value As String)
- myNachname = value
- End Set
- End Property
- Public Property Vorname() As String
- Get
- Return myVorname
- End Get
- Set(value As String)
- myVorname = value
- End Set
- End Property
- Public Property Plz As String
- Get
- Return myPlz
- End Get
- Set(value As String)
- myPlz = value
- End Set
- End Property
- Public Property Ort As String
- Get
- Return myOrt
- End Get
- Set(value As String)
- myOrt = StringCutter(value, 10)
- End Set
- End Property
- Private Function StringCutter(ByVal text As String, ByVal MaxLength As Integer) As String
- Dim TextEdit As String
- If text.Length > MaxLength Then
- TextEdit = text.Substring(0, MaxLength - 3) + "..."
- Else
- TextEdit = text
- End If
- Return TextEdit
- End Function
- End Class[/code]
- [/spoiler]
- Nun die erste Frage: Wie kann ich in meinem kleinen Adressform mehrere instanzen dieser Klasse anlegen, möglichst indem ich jeder klasse ein "Adresskürzel" als Name zuweise?
- Bisher wird ja eine KLasse immer als
- [code]dim Adresse As new Kontakt [/code] instanziert.
- Was jedoch wenn ich mehrere Kontakte über kürzel instanzieren will und diese in einer Listbox einfügen will?
- Dieser Code bringt mir beim auffüllen der auf dem Form befindlichen Listbox eine Exception
- [spoiler]Ein Ausnahmefehler des Typs "System.NullReferenceException" ist in Klassentraining.exe aufgetreten.
- Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.[/spoiler]
- [code]Public Class frmMain
- Dim adr(10000) As Kontakt
- Dim i As Integer = 0 'Counter
- Private Sub btnNewContact_Click(sender As Object, e As EventArgs) Handles btnNewContact.Click
- adr(i) = New Kontakt With {.Nachname = tbNachname.Text, .Ort = tbOrt.Text, .Plz = tbPlz.Text, .Vorname = TbVorname.Text}
- lblVorname.Text = adr(i).Vorname
- lblNachname.Text = adr(i).Nachname
- lblPlz.Text = adr(i).Plz
- lblOrt.Text = adr(i).Ort
- lblDate.Text = adr(i).Erstellungsdatum.ToString
- i += 1
- lbAdressen.Items.Add(adr(i).Nachname)
- lbliadr.Text = i.ToString
- End Sub
- End Class
Gruß Hannes
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hans im glück“ ()