|
|
|||
TheorieDatenkapselung |
|||
|
Wenn Sie in einem Auto fahren, so wollen Sie sich auf den Verkehr konzentrieren und nicht ständig darüber nachdenken, wie die Gangschaltung oder das Gaspedal funktionieren. Das würde sie nur ablenken und zu Fehlern verführen. Es reicht, wenn Sie wissen, wo das Gaspedal ist und wie man es bedient bzw. wie Sie die Gänge richtig einlegen. Die Einzelheiten der Mechanik sehen sie nicht, denn sie sind vor Ihnen verborgen. Analog verfährt man, wenn man programmiert. Wenn Sie eine Linie zeichnen wollen, so reicht es völlig aus, wenn Sie wissen, dass es den drawLine-Befehl gibt und wie er aufgerufen wird. Mit welchem mathematischen Algorithmus der Befehl die Linie zeichnet, interessiert nicht. Dieses seit langem bewährte Programmierprinzip heißt Datenkapselung. Die inneren Details einer Klasse werden eingekapselt und dadurch vor der Außenwelt verborgen. Dazu betrachten wir einmal folgende Quelltexte:
1 Datenkapselung konkret Die Abbildung 1 zeigt den Quelltext von zwei Klassen Gangschaltung und Auto, zwischen denen eine Hat-Beziehung besteht: Jedes Objekt der Klasse Auto hat eine Gangschaltung gs der Klasse Gangschaltung. Die Klasse Gangschaltung hat wiederum ein Attribut gang, welches als privat deklariert ist. Welche Folgen dies hat, zeigt die Fehlermeldung im Fenster der Klasse Auto: Der Befehl System.out.println(gs.gang); kann nicht auf das Attribut gang des Objektes gs zugreifen. Das Attribut gang ist eine "rein interne Angelegenheit" der Klasse Gangschaltung. Niemand, der die Klasse verwendet, muss wissen, wie die Gänge oder die Gangwechsel innerhalb dieser Klasse realisiert wurden - solange die Klasse das macht, was sie machen soll. Man spricht hier von information hiding oder Datenkapselung. Würde man dagegen schreiben System.out.println(gs.getGang()); so würde das Programm fehlerfrei funktionieren. Bei getGang() handelt es sich nämlich um eine Methode, die als public - öffentlich - deklariert wurde. Alternativ hätte man natürlich das Attribut gang der Klasse Gangschaltung als public deklarieren können. Dann wäre dieses Attribut aber nicht mehr gekapselt. Das wäre dann so, als würden Sie beim Autofahren ständig die Mechanik der Gangschaltung vor sich sehen. Bei der Datenkapselung verfolgt man also das Ziel, die Attribute einer Klasse vor unerlaubten Zugriffen von außen zu schützen. Ein so geschütztes Attribut kann nicht aus Versehen verändert werden, was bei einem großen Programm sonst unweigerlich früher oder später passieren würde. In der Tat ist die Datenkapselung entwickelt worden, als die Anwendungsprogramme immer größer und unübersichtlicher wurden. Die Datenkapselung stellt einen wirksamen Schutz gegen die eigenen Programmierfehler dar: Was man nicht kennt oder sieht, kann man auch nicht aus Versehen verändern. |
Datenkapselung ist ein wichtiges Grundprinzip bei der Konstruktion von Klassen. Die Attribute werden dadurch vor unerlaubten Veränderungen geschützt. Dieses Arbeitsblatt über Datenkapselung im PDF können Sie herunterladen. Es enthält noch ein interessantes Modell zur Datenkapselung, auf das ich hier im Text nicht eingegangen bin. |
||
|
Diese HTML-Seite wurde erstellt von Ulrich Helmich am 28. Januar 2005 und zuletzt verändert am 18. März 2006. |
|||