Philosophische Grundlagen der objektorientierten Programmierung
Das Schichtenmodell
Aufbau von komplexen Systemen
Komplexe Systeme bestehen (wie z.B. in [Booch91] beschreiben) aus einer Hierarchie von Subsystemen, die Abstraktionsebenen bilden.
[Stroustrup98] erklärt das an einem alltäglichen Beispiel, einem Haus. Ein solches besteht aus
- Atomen
- Molekülen
- Stein und Mörtel
- Fußböden, Wänden und Decken
- Zimmern
Eine Aussage wie "Mein Haus enthält etliche tausend Kilo Kohlenstoff, einige komplexe Polymere, etwa 5000 Steine, zwei Badezimmer und 13 Decken" ist unsinnig, da hier offensichtlich Abstraktionsebenen (Schichten) gemischt werden.
Philosophen streiten darüber, ob nun den Abstraktionsebenen Seinscharakter (Gibt es sie wirklich ?) zukommt oder nicht. Unsere Lebenswelt, ich meine die Objekte des Alltagslebens mit denen alle ganz naiv umgehen, ist zumindest eine Abstraktionsebene. Ein Fußballspiel auf Atomarer Ebene zu betrachten ist irgendwie Unsinnig.
Schichtenmodell in der Informatik nach Habermann
[Habermann76] hat vorgeschlagen,
(Betriebs-) Systeme aus einer funktionellen Hierarchie von Schichten aufzubauen:

Bild / UML-Paket-Diagramm
Jede Schicht besteht aus Objekten (1976 aus Prozeduren/Funktionen, weil man noch nicht die Objektorientierung entdeckt hatte).
Eine Schicht bildet eine virtuelle Maschine und stellt so eine Abstraktionsebene her. Diese kann so spezifiziert werden, daß der Anwender sich nicht um die Details kümmern muß. Abstrakt heißt her also, daß verschiedene Implementierungen möglich sind, die die gleiche (Äquivalenzrelation !) Wirkungen, eben die spezifizierten, haben.
Eine Schicht wird mit den Funktionen/Objekten der darunterliegenden Schichten
implementiert.
Das Vorbild ist die Hardware/Software-Schnittstelle:
- Es gibt Datenstrukturen (Hardware: Register,Devicecontollwords,Statuswords,Akkumulatoren,...) und Operationen darauf (Hardware: Maschineninstruktionen).
(Nach unserer Vorstellung sind das ganz genau Objekte!)
- Die Korrektheit der Hardware ist unabhängig von der Programmierung.
Andererseits ist das korrekte Funktionieren der Software von der Hardware
abhängig.
- Wenn Ausnahme-Situationen auftreten (z.B. Division durch 0), wird
ein Trap/Interupt, d.h. eine Fehlerbahandungsroutine der höheren Schicht
aufgerufen. (vgl. try/catch-Mechanismus in Programmiersprachen C++,Java, ...)
- Die Hardware wird als korrekt betrachtet, falls folgende Bedingungen erfüt sind:
- Gültige Instruktionen auf gültige Register bringen Ergebnisse hervor, wie in der Spezifikation vorrausgesagt.
- Keine Folge von Instruktionen kann irreparable Schäden an der Hardware verursachen
- Wenn ungültige Instruktionen oder Operanten entdeckt werden, wird eine bestimmte Aktion (Trap/Interrupt) ausgelöst und Seiteneffekte auf Register verhalten sich wie spezifiziert für jeden Zustand
Eine Schicht kann folgende Modifikationen zu unteren Schichten vornehmen:
- Verbergen eines Teils der Objekte/Mechanismen, so daß diejenigen von höhere Ebenen nicht benutzt werden können.
(z.B. Betriebssystemkern verdeckt viele Operationen und Speicherbereiche
aus Sicherheitsgründen)
- Definition neuer Mechanismen
(z.B. stellt ein Betriebssystem Dateien her).
- systematische Änderung eines Teils der Mechanismen
(z.B. Virtueller Addressraum)
Beispiele
gibt es sehr viele, da jedes vernünftige System so aufgebaut ist
- ISO-OSI-Schichtenmodell
- ist das prominenteste Beispiel.
- KDE/X/GNU/Linux/PC
- Multi-Tier-Systeme
Informatik- und Netzwerkverein Ravensburg e.V
Rudolf Weber