Objekte schützen Daten

Beispielprogramm: KLASMAST.CPP

Das Beispielprogramm KLASMAST.CPP illustriert den Schutz von Daten in einem sehr einfachen Programm.

In diesem Programm haben wir aus dem Rechteck eine Klasse mit denselben zwei Variablen, die nun privat sind, und zwei Methoden, die mit diesen Variablen arbeiten können, gemacht. Eine Methode dient dazu, die Werte der erzeugten Objekte zu initialisieren und die andere Methode gibt den Flächeninhalt des Objektes zurück. Die Methoden definieren wir in den Zeilen 13 bis 22 so wie wir es oben in diesem Kapitel beschrieben haben. Der Mast ist weiterhin eine Struktur, um zu zeigen, daß die beiden parallel verwendet werden können und C++ tatsächlich eine Erweiterung von ANSI-C ist.

Abb. 5-5

In Zeile 35 definieren wir zwei Objekte, die wir wieder Box und Quadrat nennen, diesmal können wir ihren Elementen allerdings nicht direkt Werte zuweisen, da es sich um private Elemente der Klasse handelt. Bild 5-5 zeigt die beiden Objekte, die im aufrufenden Programm verfügbar sind. Deshalb haben wir die Zeilen 38 bis 40 auskommentiert und senden anstatt dessen in den Zeilen 42 und 43 Nachrichten an die Objekte, die sie anweisen, sich selbst mit den als Parametern angegebenen Werten zu initialisieren. Der Fahnenmast wird in derselben Weise initialisiert wie im vorigen Programm. Die Verwendung der Klasse bewahrt uns vor den unsinnigen Berechnungen, die wir im letzten Beispielprogramm angestellt haben, da wir die Fläche eines Objektes nur mit den im Objekt selbst gespeicherten Daten berechnen können. Nun verwenden wir den Compiler, um die sinnlose Rechnerei zu verhindern. Das Endergebnis ist, daß die sinnlosen Berechnungen des letzten Programmes in diesem Programm nicht mehr möglich sind, also sind die Zeilen 52 bis 55 auskommentiert. Auch hier ist es vielleicht schwierig, die Sinnhaftigkeit des ganzen in einem so einfachen Programm zu erkennen. In einem umfassenden Programm macht sich die Verwendung des Compilers, um sicherzustellen, daß die Regeln eingehalten werden, aber sehr bezahlt.

Obwohl Quadrat und Box beide Objekte der Klasse Rechteck sind, sind ihre privaten Daten vor dem jeweils anderen Objekt versteckt, sodaß keines absichtlich oder unabsichtlich die Daten des anderen verändern kann.

Das ist der abstrakte Datentyp, von dem wir am Beginn dieses Kapitels gesprochen haben, ein Modell mit privaten Variablen, um Daten zu speichern, und Operationen, die mit diesen Daten ausgeführt werden können. Die einzigen Operationen, die mit den Daten arbeiten können, sind die Methoden, was viele Fehler, die allzu leicht passieren, verhindern hilft. Der Zugriffsschutz bindet die Daten und die Prozeduren, oder Methoden, eng aneinander und schränkt den Gültigkeitsbereich und die Sichtbarkeit beider ein. Auch hier treffen wir auf die Taktik "teile und herrsche", mit der ein Objekt vom Rest des Codes abgesondert und von diesem komplett isoliert entwickelt wird. Dann erst wird es in den Rest des Codes mit Hilfe einiger einfacher Schnittstellen eingebaut.

Eine Studie hat vor einigen Jahren gezeigt, daß Programmiererinnen viel eher bei Daten Fehler machen als bei Code. Also war es klar, daß man die Qualität von Software alleine schon dadurch würde verbessern können, daß man die Daten vor unabsichtlichen Veränderungen schützt. Das ist der Ursprung des Zugriffsschutzes und diese Idee hat sich im Laufe der Jahre sehr bewährt.

(weiter...)