Natürliche Situation und struktureller Oberbau
Gerade hatte ich die Vermischung verschiedener Entwicklungsebenen durch den gleichen Objektbegriff für völlig unterschiedliche Dinge thematisiert.
Es gibt aber eine weitere Vermischung bzw. Vernebelung in der Objektorientierung und zwar zwischen
1. der natürlich gegebenen Situation und
2. dem, was die Informatik künstlich hinzufügt
Diese Unterscheidung ist aber von extremer Wichtigkeit:
- Was ist durch die Ausgangssituation auf ganz natürliche Weise gegeben? Diese natürlichen Gegebenheiten kann man versuchen, möglichst klar und exakt zu beschreiben. Aber man kann sie nicht verändern. Sie sind einfach so da wie sie sind.
- Was wird durch willkürliche Designentscheidungen hinzugefügt? Das ist das Entscheidungsfeld bzw. der Gestaltungsspielraum des Entwicklers.
Schauen wir uns das an den grundlegenden Aspekten von Software ganz allgemein an:
Wir begeben uns jetzt auf eine Metaebene: Wir betrachten nicht die Entwicklung einer konkreten Software, sondern wir betrachten die Entwicklung der Methode "Objektorientierung".
Die natürlich gegebene Situation sind Daten, Aktionen und die Objekte der Anforderungsebene.
Daten, Aktionen und Objekte sind ganz allgemeine Kategorien, welche das Leben des Menschen als solches ganz grundlegend durchziehen.
Nehmen wir die Objekte "Kühlschrank" und "Butter". Ihr Zustand (Eigenschaften und Relationen) zum Zeitpunkt t1 ist wie folgt:
"In meinem Kühlschrank befindet sich nur noch ein Viertel Stück Butter."
Ich treffe eine Entscheidung für die Aktion "Einkaufen".
Danach hat sich der Zustand wie folgt verändert:
"In meinem Kühlschrank befinden sich zwei und ein Viertel Stück Butter."
Solange ich auf diese Weise mit den Begriffen Daten, Aktionen und Objekt hantiere, ist alle ganz easy und locker.
Aber nun spielt der Objektbegriff in die Struktur und Programmebene hinein. Die gegenwärtige Informatik suggeriert mit dieser Begriffsbildung, dass Objekte zwingend strukturelle und programmtechnische Auswirkungen hätten. Und das ist nicht mehr die natürliche Ausgangssituation. Das ist eine willkürliche Designentscheidung, die genauso gut auch anders fallen könnte und die im Rahmen der Objektorientierung aber nicht anders fallen kann, weil die Begriffswelt das nicht zulässt.
Die Objektorientierung hat hier eine ideologische, manipulierende Komponente. Sie schafft nicht Klarheit, wie es eigentlich das Ziel von wissenschaftlichen Begriffen sein müsste, sondern Vernebelung. Sie versucht dem Entwickler eine bestimmte Lösung aufzudrücken, ohne diesem eine wirklich klare und freie Entscheidungsgrundlage zu liefern.