Anfänger - Benötige Hilfe zu Klassen und Objekten

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Anfänger - Benötige Hilfe zu Klassen und Objekten

    Hallo VB-Paradise,
    ich beschäftige mich seit ein paar Tagen mit Visual Basic und benötige ein wenig Hilfe.
    Meine Frage zu folgendem Code: Wie kann ich auf die Attribute eines Objektes zugreifen?
    neueperson.nachname funktioniert ja nicht, da es auf private geseetzt ist, darum habe ich gedacht ich erstelle die function nachname ausgabe(). Jedoch wird in der Ausgabetextbox der Name nicht angezeigt. Es kann sein, dass auch sonst noch Fehler im Code vorliegen. Vielleicht kann mir jemand ein paar Tipps dazu geben.

    Viele Grüße

    Quellcode

    1. Public Class Form1
    2. Private Sub bt_personerstellen_Click(sender As Object, e As EventArgs) Handles bt_personerstellen.Click
    3. Dim neueperson As New person
    4. neueperson.getnachname = tb_nachname.Text
    5. neueperson.getname = tb_name.Text
    6. neueperson.getalter = Convert.ToInt64(tb_alter.Text)
    7. neueperson.getpasswort = tb_passwort.Text
    8. tb_nachname.Clear()
    9. tb_name.Clear()
    10. tb_alter.Clear()
    11. tb_passwort.Clear()
    12. lb_personerstellt.Visible = True
    13. tb_a_nachname.Text = neueperson.nachnameausgabe()
    14. End Sub
    15. Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles listbox_personwaehlen.SelectedIndexChanged
    16. End Sub
    17. End Class
    18. Class person
    19. Private nachname As String
    20. Private vorname As String
    21. Private alter As Integer
    22. Private passwort As String
    23. Public Sub New()
    24. End Sub
    25. Public Property getnachname() As String
    26. Get
    27. Return nachname
    28. End Get
    29. Set(value As String)
    30. nachname = getnachname
    31. End Set
    32. End Property
    33. Public Property getname() As String
    34. Get
    35. Return vorname
    36. End Get
    37. Set(value As String)
    38. vorname = getname
    39. End Set
    40. End Property
    41. Public Property getalter() As Integer
    42. Get
    43. Return alter
    44. End Get
    45. Set(value As Integer)
    46. alter = getalter
    47. End Set
    48. End Property
    49. Public Property getpasswort() As String
    50. Get
    51. Return passwort
    52. End Get
    53. Set(value As String)
    54. passwort = getpasswort
    55. End Set
    56. End Property
    57. Public Function nachnameausgabe() As String
    58. Return nachname
    59. End Function
    60. End Class
    @QwertzDev Willkommen im Forum. :thumbup:
    Entweder Du weist den Parameter value zu oder Du machst es so:

    VB.NET-Quellcode

    1. Class person
    2. Public Property nachname As String
    3. Public Property vorname As String
    4. Public Property alter As Integer
    5. Public Property passwort As String
    6. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn du das hast:

    Visual Basic-Quellcode

    1. ​Public Property getnachname() As String
    2. Get
    3. Return nachname
    4. End Get
    5. Set(value As String)
    6. nachname = getnachname
    7. End Set
    8. End Property
    brauchst du das nicht:

    Visual Basic-Quellcode

    1. Public Function nachnameausgabe() As String
    2. Return nachname
    3. End Function



    Dh. so setzt du den Wert und liest ihn aus:

    Visual Basic-Quellcode

    1. ​neueperson.getnachname = "Mustermann"
    2. tb_a_nachname.Text = neueperson.getnachname ()
    @Don_Batisto Du hast es auch nicht gemerkt:
    @QwertzDev

    VB.NET-Quellcode

    1. Public Property getnachname() As String
    2. Get
    3. Return nachname
    4. End Get
    5. Set(value As String)
    6. nachname = value ' Hier muss value stehen !!!!!
    7. End Set
    8. End Property
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Don_Batisto schrieb:

    Wenn du das hast:

    Visual Basic-Quellcode

    1. ​Public Property getnachname() As String
    2. Get
    3. Return nachname
    4. End Get
    5. Set(value As String)
    6. nachname = getnachname
    7. End Set
    8. End Property
    brauchst du das nicht:

    Visual Basic-Quellcode

    1. Public Function nachnameausgabe() As String
    2. Return nachname
    3. End Function



    Dh. so setzt du den Wert und liest ihn aus:

    Visual Basic-Quellcode

    1. ​neueperson.getnachname = "Mustermann"
    2. tb_a_nachname.Text = neueperson.getnachname ()


    So hatte ich es auch am Anfang versucht, jedoch wird in der tb_a_nachname Textbox nichts angezeigt. Eigentlich sollte dort doch der Nachname drin stehen?

    @RodFromGermany Wie genau weise ich Parametern value zu?

    /Edit: Vielen Dank, ich teste es gleich.
    // Hat alles funktioniert, ich danke euch. :)

    QwertzDev schrieb:

    Wie genau weise ich Parametern value zu?
    value ist der Name des Input-Parameters eines Property-Setters, siehe post #4.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    bitte eine Standard-Property keinesfalls "getnachname" nennen! Was soll denn das sein, ein "getnachname"?

    Die Property muss "Nachname" heissen, denn das ist, was es ist, und deshalb soll es auch so heißen.

    Und Public Klassenmember bitte groß schreiben - so ist eine sinnvolle und ganz allgemeingültige Konvention.
    @QwertzDev
    Das Problem ist der falsch implementierte Setter:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. getnachname = "Müller"
    3. MessageBox.Show(getnachname)
    4. End Sub
    5. Private nachname As String
    6. Public Property getnachname() As String
    7. Get
    8. Return nachname
    9. End Get
    10. Set(value As String)
    11. nachname = getnachname
    12. End Set
    13. End Property
    Bilder
    • Property.png

      16,27 kB, 694×237, 60 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!