Ein Versteckspiel

Die drei Beispielprogramme, die wir uns zuletzt angesehen haben, illustrieren eine Methode des Zugriffsschutzes, die eine großen Einfluß auf die Qualität der Software haben kann, die für ein großes Projekt entwickelt wird. Da alle Information, die die Benutzerin einer Klasse benötigt, in der header-Datei zu finden ist, bekommt sie auch nicht mehr als diese zu sehen. Die Details der Implementation werden vor ihr versteckt, um sie davor abzuhalten, diese zu studieren und irgendeinen Kunstgriff zu tun, der zu unsauberem Code führt. Da sie nicht genau weiß, was diejenige, die die Klasse geschrieben hat, implementiert hat, muß sie sich an die Definitionen, die die header-Datei gibt, halten. Das kann, wie gesagt, einen großen Einfluß auf ein großes Projekt haben. Darüber hinaus wird die irrtümliche Änderung von Daten verhindert.

Ein weiterer Grund, die Implementation zu verstecken, ist ein ökonomischer. Der Hersteller Deines Compilers hat Dir viel Bibliotheksfunktionen zur Verfügung gestellt, nicht jedoch deren Quellcode, nur die Schnittstelle zu jeder Funktion. Du weißt, wie die Funktionen zum Dateizugriff zu verwenden sind, nicht jedoch deren Implementation und Du brauchst diese auch gar nicht. Es kann auch eine Bibliotheken-Industrie entstehen, die Programmiererinnen für eine Lizenzgebühr fix und fertig programmierte und getestete Bibliotheken von hoher Qualität zur Verfügung stellt. Da die Programmiererin nur die Definition der Schnittstelle benötigt, erhält sie diese zusammen mit dem Objektcode (dem Ergebnis des Kompiliervorganges) der Klasse und kann diese nach Herzenslust verwenden. Der Quellcode der Autorin der Klasse ist vor unabsichtlichen oder absichtlichen Modifikationen geschützt und die Autorin behält die volle Kontrolle über ihn.

Es ist wichtig, daß Du die Prinzipien dieses Kapitels verstanden hast, bevor Du zum nächsten weitergehst. Wenn Du Dir über irgendetwas noch nicht vollkommen im Klaren bist, wirf noch einmal einen (genaueren) Blick darauf. Etwas sei noch erwähnt, falls Du es noch nicht selbst bemerkt hast: um eine Klasse effektiv zu verwenden, bedarf es einigen Weitblicks.

(weiter...)