Ich lerne OOP. Ich habe viel über Kapselung gelernt, aber je mehr ich las, desto verwirrter wurde ich.
Ich verstehe, dass wir Daten verbergen (indem wir sie privat machen) und sie dem Benutzer der Klasse (anderen Entwicklern) als Eigenschaften oder Methoden zur Verfügung stellen. Ich verstehe auch, dass wir unter Kapselung Details verbergen.
In einem Artikel (http://www.csharp-station.com/Tutorial/CSharp/lesson19) las ich:
Auszug aus dem Artikel
Wenn Sie ein Objekt entwerfen, müssen Sie darüber nachdenken, wie andere es verwenden könnten. Im besten Fall wäre jedes Programm, das das Objekt verwendet, gut gestaltet und der Code würde sich niemals ändern. Die Realität ist jedoch, dass sich Programme häufig ändern und in einer Teamumgebung viele Menschen zu der einen oder anderen Zeit denselben Code berühren. Daher ist es vorteilhaft zu überlegen, was schief gehen könnte, sowie das makellose Bild davon, wie das Objekt verwendet werden sollte .
Untersuchen Sie im Fall des BankAccount-Objekts die Situation, in der Code außerhalb Ihres Objekts auf ein dezimales Betragsfeld oder ein Zeichenfolgenfeld "Kundenname" zugreifen kann. Zum Zeitpunkt des Schreibens des Codes würde alles gut funktionieren. Später im Entwicklungszyklus stellen Sie jedoch fest, dass das BankAccount-Objekt eine int-Kunden-ID verfolgen sollte und nicht die Zeichenfolge "Kundenname", da Sie keine Beziehungen zwischen Informationen duplizieren möchten (oder einen anderen gültigen Grund, um die Definition des internen Status zu ändern). . Solche Änderungen verursachen einen Welleneffekt in Ihrem Code, da er für die Verwendung der ursprünglich entworfenen BankAccount-Klasse erstellt wurde (wobei CustomerName eine Zeichenfolge ist). Sie müssen jetzt den Code ändern, der in Ihrer gesamten Anwendung auf diesen Status zugreift.
Das objektorientierte Prinzip der Kapselung hilft, solche Probleme zu vermeiden, und ermöglicht es Ihnen, den internen Status und den abstrakten Zugriff darauf durch Typelemente wie Methoden, Eigenschaften und Indexer zu verbergen. Durch die Kapselung können Sie die Kopplung zwischen Objekten verringern und die Wartbarkeit Ihres Codes verbessern.
Frage Wie hilft die Kapselung bei Änderungen am Code und seinen Auswirkungen? Wenn ich für ein Datenelement seinen Typ von int in float ändere (auch wenn ich dies mit der Eigenschaft using verfügbar mache), muss ich den Variablentyp ändern, wenn ich diesen Code bereits verwende.
Bitte leiten Sie mich, wie die Kapselung bei solchen Änderungen hilft.
Vielen Dank für diese Hilfe und Anleitung.
quelle