Datenkapselung

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Was ist Datenkapselung?

Datenkapselung bedeutet, dass ein Objekt seine Attribute nach außen hin versteckt (information hiding) und sie so vor ungeregeltem Zugriff schützt. Es hat das alleinige Recht, auf seine Daten zuzugreifen und sie zu lesen oder zu ändern. Möchten andere Objekte Zugriff auf die Daten erhalten, müssen sie dies über definierte Schnittstellen tun. Flogerlinghoff Datenkapselung1.JPG

Durch Datenkapselung schützen Objekte ihre Daten vor dem Zugriff von außen. Sie stellen Schnittstellen bereit, durch die diese gelesen oder geändert werden können.

In JavaScript kann auf Variablen, die im Konstruktor nicht mit dem Schlüsselwort this gekennzeichnet wurden, nicht von außen zugegriffen werden.

Methoden, die in der Konstruktorfunktion der Klasse liegen, haben die Möglichkeit, auf die privaten Variablen im Konstruktor zuzugreifen. Man nennt sie deshalb auch priviligierte Methoden. Methoden, die über ClassName.prototype.method definiert werden, können das nicht.

Aufgaben

Bei der Klasse Buch sollen die Attribute autor und seitenanzahl gekapselt werden. Der Zugriff soll über die Methoden getAutor und getSeitenanzahl möglich sein.

 

Quelltext überprüfen:

Durch Datenkapselung kann erreicht werden, dass zwei Eigenschaften nur zusammen geändert werden dürfen. Wenn die elektrische Kraft in einem Radialfeld gleich bleiben soll, aber eine der beiden Ladungen geändert wird, muss entweder der Abstand der Ladungen zueinander oder der Betrag der zweiten Ladung auch geändert werden (siehe Coulombsches Gesetz). Implementiere die Methoden getQ1(), getQ2()/tt>, <tt>getR()/tt>, <tt>getF(), setQ1(newValue) und setQ2(newValue). Wenn eine Ladung geändert wird, soll die andere automatisch angepasst werden, sodass der Betrag der Kraft gleich bleibt.

Zur Berechnung der Kraft wird Math.PI verwendet. e0 ist mit 8.854*10^(-12) definiert.

 

Quelltext überprüfen:

Datenkapselung in UML

In den meisten Programmiersprachen wird Datenkapselung durch Zugriffsmodifizierer umgesetzt. Die Sichtbarkeit von Elementen einer Klasse hängt von diesen ab. Obwohl in JavaScript keine Zugriffsmodifizierer unterstützt werden, ist es sinnvoll, private und öffentliche Felder im UML-Diagramm zu unterscheiden. In UML werden folgende Zugriffsmodifiziefer unterschieden:

  • + public: Alle anderen Objekte können auf Elemente eines Objekts zugreifen.
  • - private: Nur das Objekt selbst kann auf seine Elemente zugreifen.

Diese beiden Modifizierer können auch mit JavaScript umgesetzt werden. Desweiteren gibt es noch:

  • # protected: Das Objekt selbst und alle erbende Objekte können auf Attribute und Methoden zugreifen.
  • ~ package: Objekte im gleichen Package haben Zugriff.
Persönliche Werkzeuge