Datenverkapselung

Die Datenkapselung ist das wichtigste Konzept für die Programmierung mit Objekten. In der objektorientierten Programmierung befasst sich die Datenkapselung mit:

  • Kombinieren von Daten und deren Manipulation an einem Ort. Dies wird durch den Zustand (die privaten Felder) und das Verhalten (die öffentlichen Methoden) eines Objekts erreicht.
  • Nur der Zugriff und die Änderung des Status eines Objekts durch Verhalten ist zulässig. Die im Zustand eines Objekts enthaltenen Werte können dann streng kontrolliert werden.
  • Ausblenden der Details zur Funktionsweise des Objekts. Der einzige Teil des Objekts, der für die Außenwelt zugänglich ist, ist sein Verhalten. Was in diesen Verhaltensweisen passiert und wie der Status gespeichert wird, ist nicht sichtbar.

Erzwingen der Datenkapselung

Zunächst müssen wir unsere Objekte so gestalten, dass sie einen Zustand und ein Verhalten aufweisen. Wir erstellen private Felder, die die staatlichen und öffentlichen Methoden enthalten, die das Verhalten darstellen.

Wenn wir beispielsweise ein Personenobjekt entwerfen, können wir private Felder erstellen, in denen der Vorname, der Nachname und die Adresse einer Person gespeichert werden. Die Werte dieser drei Felder ergeben zusammen den Zustand des Objekts. Wir könnten auch eine Methode namens displayPersonDetails erstellen, um die Werte von Vorname, Nachname und Adresse auf dem Bildschirm anzuzeigen.

Als Nächstes müssen wir Verhalten festlegen, mit denen auf den Status des Objekts zugegriffen und dieser geändert wird. Dies kann auf drei Arten erreicht werden:

  • Konstruktormethoden. Eine neue Instanz eines Objekts wird durch Aufrufen einer Konstruktormethode erstellt. Werte können an eine Konstruktormethode übergeben werden, um den Anfangszustand eines Objekts festzulegen. Es gibt zwei interessante Dinge zu beachten. Erstens besteht Java nicht darauf, dass jedes Objekt eine Konstruktormethode hat. Wenn keine Methode vorhanden ist, verwendet der Status des Objekts die Standardwerte der privaten Felder. Zweitens kann es mehr als eine Konstruktormethode geben. Die Methoden unterscheiden sich in Bezug auf die Werte, die an sie übergeben werden, und wie sie den Anfangszustand des Objekts festlegen.
  • Accessor-Methoden. Für jedes private Feld können wir eine öffentliche Methode erstellen, die ihren Wert zurückgibt.
  • Mutator-Methoden. Für jedes private Feld können wir eine öffentliche Methode erstellen, die ihren Wert festlegt. Wenn Sie möchten, dass ein privates Feld schreibgeschützt ist, erstellen Sie keine Mutator-Methode dafür.

Zum Beispiel können wir das person-Objekt so entwerfen, dass es zwei Konstruktormethoden hat. Der erste nimmt keine Werte an und setzt das Objekt einfach auf einen Standardzustand (d. H. Der Vorname, der Nachname und die Adresse wären leere Zeichenfolgen). Der zweite Wert legt die Anfangswerte für den Vor- und Nachnamen der übergebenen Werte fest. Wir können auch drei Zugriffsmethoden mit den Namen getFirstName, getLastName und getAddress erstellen, die einfach die Werte der entsprechenden privaten Felder zurückgeben. Erstellen Sie ein Mutatorfeld mit dem Namen setAddress, das den Wert des privaten Adressfelds festlegt.

Zuletzt verbergen wir die Implementierungsdetails unseres Objekts. Solange wir uns daran halten, die staatlichen Felder privat und die Verhaltensweisen öffentlich zu halten, kann die Außenwelt nicht wissen, wie das Objekt intern funktioniert.

Gründe für die Datenkapselung

Die Hauptgründe für die Verwendung der Datenkapselung sind:

  • Den Zustand eines Objekts legal halten. Durch Erzwingen der Änderung eines privaten Felds eines Objekts mithilfe einer öffentlichen Methode können wir den Mutator- oder Konstruktormethoden Code hinzufügen, um sicherzustellen, dass der Wert zulässig ist. Stellen Sie sich zum Beispiel vor, das Personenobjekt speichert auch einen Benutzernamen als Teil seines Status. Der Benutzername wird verwendet, um sich bei der von uns erstellten Java-Anwendung anzumelden, ist jedoch auf eine Länge von zehn Zeichen beschränkt. Wir können der Mutatormethode des Benutzernamens Code hinzufügen, der sicherstellt, dass der Benutzername nicht länger als zehn Zeichen ist.
  • Wir können die Implementierung eines Objekts ändern. Solange wir die öffentlichen Methoden unverändert lassen, können wir die Funktionsweise des Objekts ändern, ohne den Code zu beschädigen, der es verwendet. Das Objekt ist im Wesentlichen eine "Blackbox" für den Code, der es aufruft.
  • Wiederverwendung von Objekten. Wir können die gleichen Objekte in verschiedenen Anwendungen verwenden, da wir die Daten und ihre Manipulation an einem Ort kombiniert haben.
  • Die Unabhängigkeit jedes Objekts. Wenn ein Objekt falsch codiert ist und Fehler verursacht, ist es einfach zu testen und zu beheben, da sich der Code an einer Stelle befindet. Tatsächlich kann das Objekt unabhängig von der restlichen Anwendung getestet werden. Dasselbe Prinzip kann in großen Projekten angewendet werden, in denen verschiedenen Programmierern die Erstellung verschiedener Objekte zugewiesen werden kann.