Objektorientierung |
||
---|---|---|
Der Begriff Objektorientierung ist in aller Munde. Manch einer sagt, daß die Objektorientierung für die
90er Jahren das ist, was strukturierte Programmierung für die 70er war: Alle sind dafür, alle Manager
behaupten, ihr Produkt sei damit entwickelt worden, und keiner weiß genau, was es ist.
Die Objektorientierung ist im großen und ganzen eine Betrachtungsweise der Welt, die nützlich sein kann für die Entwicklung von Softwaresystemen. Dabei wird versucht, "Objekte" zu identifizieren, die in der zu modellierenden Welt auch vorkommen: die Schule, ein Schuljahr, eine Fachrichtung. Die Objekte werden auch zu Klassen zusammengeführt, d.h. die gemeinsamen Eigenschaften einer Menge an Objekten werden herausabstrahiert und festgelegt. Diese Eigenschaften können sowohl Informationsfacetten sein, wie z.B. Name der Schule oder Anzahl der Lehrkräfte, als auch Verhaltens-Eigenschaften, d.h. Funktionen oder Anfragen, die diese Klasse anbietet. Diese beiden Bestandteile, Zustandsinformation und Verhalten, werden zusammengruppiert und verarbeitet. In dem imperativen Programmparadigma werden Variablen eines bestimmten Typs deklariert und Funktionen oder Prozeduren geschrieben, die Parameter diesen Typs verwenden. Bei der Objektorientierung werden beide zusammen gekapselt in einer Einheit. Dieser Einheit versteckt die tatsächliche Darstellung des Objekts und die verwendeten Algorithmen von den anderen Objekten. Es ist z.B. unerheblich, ob das Alter eines Kindes tatsächlich gespeichert wird oder sein Geburtstag, aus dem das Alter mühelos errechenbar ist. So werden Entwurfsentscheidungen von anderen Programmteilen versteckt. Die Objekte "kommunizieren" miteinander dadurch, daß sie "Nachrichten" aneinander versenden, also eine der Verhaltensfunktionen (oft Methoden genannt) aufrufen und auf das Ergebnis reagieren. Wir haben also keinen sequentiellen Programmablauf, sondern eine Sammlung von Methoden, die ein Objekt anbietet. Einige von diesen Methoden werden ihrerseits weitere Objekte von anderen Klassen manipulieren und deren Methoden anwenden. Es gibt einige besondere Kniffe, die zur Objektorientierung zählen, die in der Tat interessant sind, aber von denen es nicht klar ist, ob sie wirklich mehr Nutzen als Nachteile bringen. Der bekannteste dürfte die Vererbung sein. Man kann eine Klasse auch dadurch konstruieren, daß man eine bestehende Klasse auf eine besondere Art kopiert und dann erweitert oder Methoden ersetzt. Einige objektorientierte Sprachen bieten auch die mehrfache Vererbung an, durch die eine Klasse gleich von mehreren Klassen erben kann. Dieses Verfahren des Wiederverwendens von Klassen kann sehr mächtig sein - aber auch ziemlich verwirrend, und besonders in der Testphase oder bei der Fehlersuche hinderlich sein, denn u.U. muß die ganze Erbhierarchie untersucht werden, um eine Klasse zu verstehen. Die Polymorphie geht mit der Vererbung Hand in Hand. Eine Prozedur ist polymorph, wenn es auf verschiedene Objekte aus einer Klassenhierarchie anwendbar ist. Das heißt insbesondere, daß erst zur Laufzeit feststeht, genau welche Version einer Prozedur tatsächlich aufgerufen wird, je nachdem zu welcher Klasse die aktuelle Instanz tatsächlich gehört. Diese Eigenschaft, auch dynamisches oder spätes Binden genannt, ist in der Tat sehr flexibel, geht aber einher mit einer kleinen Laufzeitverschlechterung. Literatur: Bertrand Meyer, Objektorientierte Software Entwicklung, Hanser Verlag, München, 1990. |