Ich bekomme die Datenkapselung nicht hin -.-

  • VB.NET
  • .NET (FX) 4.0

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von ju1ion.

    Ich bekomme die Datenkapselung nicht hin -.-

    Hallo,
    ich wollte eine kleine Konten-Verwaltungssoftware schreiben, aber verständlicherweise möchte ich nicht, dass man die Kontostände vom Hauptprogramm einfäch ändern kann. Im Prinzip möchte ich die Klassen derart Kapseln, dass alle Eigenschaften von Form1 aus lesbar sind und nur durch bestimmte Methoden geändert werden können, z. B Soll der Kontodstand AUSSCHLIEßLICH durch die Methoden Abbuchen / Aufbuchen geändert werden und nicht anders! Wie kann ich das erreichen?

    Mein bisheriger Code (stark vereinfacht):

    VB.NET-Quellcode

    1. Public Class Konto
    2. '...
    3. Public Sub KontostandÄndern(ByVal NeuerKontostand As Double) 'Diese Funktion soll NUR von der Klasse Konten aufgerufen werden können! Wie realisiere ich das?
    4. _Kontostand = NeuerKontostand
    5. End Sub
    6. End Class
    7. Public Class Konten
    8. Public Sub Abbuchen('...)
    9. Konto1.KontostandÄndern(100)
    10. End Sub
    11. End Class


    Herzlichen Dank für die Hilfe

    MfG
    Mikro Fahrrad, der Rennfahrer
    „Was ich gerade mache? Ich reite Hand in Hand mit dem Matthäus-Effekt auf einer Exponentialfunktion.“ ^^

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mikro Fahrrad“ ()

    Ist zwar schon ein bisschen älter, aber vielleicht hat irgendwann nochmal einer ein ähnliches Problem:

    Ich kann dir zwar nicht sagen, wie du die Klasse bekommst die deine Methode aufruft, aber wie man die Methode bekommt, aus der die andere Methode (TestMethod) aufgerufen wird. Vielleicht ist das schon ausreichend.

    Sollte ab .NET 4.5 funktionieren. Benötigt wird hierfür: System.Runtime.CompilerServices;

    In C# sieht das so aus:

    C#-Quellcode

    1. public static void TestMethod( [CallerMemberName]string methodStr = "" )
    2. {
    3. MessageBox.Show( methodStr );
    4. }


    Frei übersetzt aus dem oberen Code - daher ohne Funktionsprüfung:

    VB.NET-Quellcode

    1. Public Shared Sub TestMethod(<CallerMemberName> Optional methodStr As String = "")
    2. MessageBox.Show(methodStr)
    3. End Sub
    Lerne aus den Fehlern Anderer! Du hast nicht die Zeit sie selbst zu machen. :thumbup:

    Option Strict On :thumbsup: - Warum?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ju1ion“ ()