Die e-learning Lernplattform
ichlerns  online
Home > Coden > Datenkapselung

Datenkapselung

Wie schütze ich ein Objekt vor ungewollter Veränderung oder Auslesen einer Eigenschaft!

Regeln für die Kommunikation der Objekte untereinander

Es sollen nur bewusste, gewollte und vorausgeplante Änderungen im Objekt von anderen Teilen eines Programmes vorgenommen werden. Das Verhalten eines Objektes soll das Verhalten eines anderen Objektes nur gewollt beeinflussen können!

So kann dafür gesorgt werden, dass alle Variablen nur über öffentliche Methoden ausgelesen oder verändert werden können.

Das hat auch den Vorteil, dass alle privaten Teile innerhalb der Klasse verändert werden können ohne, dass der Programmablauf gestört wird! Unbefugtes Auslesen von Daten wird zumindest erschwert.

Beispiel: Die Klasse Rechteck wird durch ihre Länge und Höhe beschrieben. Ein direkter Zugriff auf diese Variablen des Objektes soll nicht möglich sein.

Beispiel:

 function Rechteck() {
     // nur innerhalb der Funktion
     // sichtbaren und daher privaten Variablen
     var my_breite = 0;
     var my_hoehe = 0;
     
     // die öffentlichen Funktionen
     this.set_breite = function(breite) {
         my_breite = breite;
     }
     this.set_hoehe = function(hoehe) {
         my_hoehe = hoehe;
     }
     this.get_hoehe = function() {
         return my_hoehe;
     }
     this.get_breite = function() {
         return my_breite;
     }
     this.get_flaeche = function() {
         return (my_breite * my_hoehe);
     }
     this.get_umfang = function() {
         return (2 * (my_breite + my_hoehe));
     }
 }

 // das Testobjekt
 raum = new Rechteck();
 raum.set_breite(3);
 raum.set_hoehe(5);
 alert(raum.get_flaeche());
 
 // BLÖDSINN
 my_breite = 6;
 my_hoehe = 7;
 alert(raum.get_flaeche());
 
  // so gehts
 raum.set_breite(6);
 raum.set_hoehe(7);
 alert(raum.get_flaeche());
 

Anwendung 1

Nach neuen Regeln für JavaSript kann dies strenger festgelegt werden:

 function Rechteck() {
     "use strict";
     let my_breite = 0;
     let my_hoehe = 0;
     
     ...

Echt privat

Die privaten Variablen können nicht mehr durch direkten Zugriff verändert werden! Auch, wenn das auf den ersten Blick so nicht auffällt. Da JavaScript darin keinen Fehler sieht. Es soll ja dynamisch zur Laufzeit änderbar sein.

Nur das Verwenden der zuvor definierten Methoden bringt sinnvolle Ergebnisse!

Interne Vorgänge sollen niemals andere Objekte beeinflussen.

Die Kommunikation mit der Umwelt findet ausschließlich über das Interface statt. Also alles, was mit this deklariert wird.

Beispiel

Folgendes wird untersucht:

 function Person() {
     var my_name = "NoName";

     this.setName = function(vorname) {
         my_name = vorname;
     };

     this.getName = function() {
         return my_name;
     }
 }
            

Anwendung 2

Anonym

Eine Besonderheit in JavaScript stellen die Verwendung anonymer Funktionen und Objekte dar. Diese haben keinen Namen und erscheinen erst bei Verwendung und verschwinden gleich wieder.

Konstante

Ein konstanter Wert sollte per Definition immer überall gültig sein und darf jedoch weder verändert, überschrieben oder noch gelöscht werden können.

Beispiel eines konstanten Wertes: die Zahl Pi=3.14

Sonderfall: KundenID während einer Sitzung im OnLineShop

< zurück   |   vor >
Nutzungsbedingungen | Datenschutz | Impressum
veröffentlicht unter CC BY 4.0 Autor: Roland Geyer