Die Philosophie der OOP

04.01.1991

David Robson von Xerox' Palo Alto Research Center (PARC) stellt in seiner Arbeit "Object Oriented Software Systems" den objektorientierten Ansatz dem traditionellen prozeduralen Vorgehen gegenüber: Die prozedurale Sicht beschert dem Programmierer zwei Betrachtungseinheiten, nämlich Daten, die es zu manipulieren gilt, und Funktionen als diejenigen Software-Einheiten, die diese Manipulationen durchführen. In diesem Modell geschieht alles durch den Aufruf von Funktionen und deren Versorgung mit den zu bearbeitenden Daten. Robson streicht zwei diesem Modell innewohnende Nachteile heraus. Erstens: Daten und Funktionen werden als zwei voneinander unabhängige Einheiten betrachtet - was sie de facto jedoch nicht sind! Alle Funktionen gehen von gewissen Annahmen über die zu manipulierenden Daten aus. Daraus resultiert das Problem Nummer zwei: Um ein wohlfunktionierendes System zu komponieren, ist der Programmierer für die Zusammenstellung harmonierender Funktionen und Daten selbst verantwortlich. (In C + + ist dieses Problem auf die Klassendefinition eingeschränkt.)

Im Gegensatz zu dieser getrennten Betrachtungsweise von Daten und Funktionen, kennt die objektorientierte Sicht nur eine Einheit, nämlich das "Objekt", das sowohl die Daten wie auch die sie bearbeitenden Funktionen enthält.

Sollen in diesem Modell Informationen manipuliert werden, so ist eine entsprechende Message (Botschaft) an das Objekt zu senden, das diese Informationen repräsentiert. Das Objekt empfängt die Botschaft und manipuliert sich daraufhin selbst! In der Message ist die Art der gewünschten Manipulation durch einen symbolischen Namen (Selektor) ausgedrückt. Ganz wichtig ist der Sachverhalt, daß der Selektor diese Manipulation nur benennt. Er gibt an, WAS passieren soll. Die Beschreibung, WIE die Manipulationen zu realisieren sind, enthält das empfangende Objekt selbst (in Form von Member-Funktionen).

Dieser Ansatz und weitere OOP-Konzepte, insbesondere das der Vererbung (Inheritance) und der Polymorphie, machen den Traum vom immer wieder verwendbaren Software-Modul wahr. Wie Hardware-ICs lassen sich nun Software-ICs (ein Ausdruck von Brad Cox) entwerfen und benutzen, so daß Softwareentwickler endlich teamübergreifend bereits Erdachtes und Realisiertes in den unterschiedlichsten Produkten und Projekten nutzen und auch adaptieren können - wohlgemerkt, ohne Zugriff auf die Sourcen haben zu müssen!

Noch ein essentielles Vorteil des objektorientieren Ansatzes soll nicht unerwähnt bleiben: Die objektorientierte Denkweise gestattet eine durchgängige Geisteshaltung, angefangen von der objektorientieren Analyse (OOA) über das objektorientierte Design (OOD), bis hin zur objektorientieren Programmierung (OOP). Hinzu kommt eine entsprechend einheitliche Terminologie von der Analyse bis zur Implementierung.