Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...
Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...
Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
40 3.4 objektorientiert<br />
Der Übergang von der Maschinenprogrammierung zur prozedurorientierten<br />
Programmierung beinhaltet einen quantitativen Wechsel in der Granularität<br />
der Aktionen, bewahrt aber ein algorithmisches (aktionsbasiertes)<br />
Modell. Der Übergang von der prozedurorientierten zur objektbasierten Programmierung<br />
ist ein radikalerer qualitativer Wechsel von Programmen als Algorithmen,<br />
die Daten transformieren, zu Programmen als Systemen von persistenten,<br />
interagierenden Objekten. Der Vertrag eines Algorithmus mit seinen<br />
Klienten ist wie ein Verkaufsvertrag, der für jede Eingabe einen Wert garantiert,<br />
während der Vertrag eines Objekts mit seinen Klienten wie ein Ehevertrag<br />
ist, der das Verhalten über die Zeit hinweg für alle möglichen Aspekte<br />
der Interaktion einschränkt.<br />
Wegner (1997) führt aus, warum aus theoretischen Erwägungen interaktive Programme<br />
leistungsfähiger sind als jeder Algorithmus, so daß die Grenzen der Church’schen<br />
These hier gesprengt werden können.<br />
Die Charakteristika des objektorientierten Programmierparadigmas sind nach Justice<br />
u. a. (1994):<br />
• Sicht eines Systems als bestehend aus interagierenden Objekten; diese haben einen<br />
inneren Zustand (Attribute) und bieten bestimmte Leistungen (Methoden) an; sie<br />
senden einander Nachrichten (= Aufrufe von Methoden).<br />
• Objekte werden klassifiziert aufgrund von Ähnlichkeiten in ihrem Verhalten; dies<br />
führt zu einer Klassenstruktur. Trotzdem sind Objekte einer Klasse unterscheidbar,<br />
sie haben eine Objektidentität.<br />
• Hierarchische Organisation: Klassen können Oberklassen und Unterklassen besitzen;<br />
Unterklassen, erben Attribute und Methoden, können sie aber auch<br />
überschreiben ( ” overriding“).<br />
• Attribut-basierte Antworten: Objekte interpretieren Nachrichten aufgrund lokaler<br />
Eigenschaften (Instanzvariablen) und globaler Eigenschaften (Klassen).<br />
Eine Programmiersprache, die das OO-Paradigma in Reinkultur implementiert, ist<br />
Smalltalk (Kay 1996); dies erkennt man sehr gut, wenn man den Ausdruck ” 3 + 4“<br />
einmal nach Smalltalk-Ideologie auswertet: Hier wird dem Objekt 3 die Nachricht ” +4“<br />
gesandt. Das Objekt 3 als Mitglied der Klasse ” Zahl“ kennt die Methode ” +“ und wendet<br />
sie mit dem zusätzlich übersandten Parameter 4 auf sich selbst an. Als Ergebnis<br />
dieses Methodenaufrufs sendet sie dann das Objekt 7 an die Stelle zurück, von woher<br />
der Methodenaufruf kam. Natürlich laufen in der Implementierung von Smalltalk diese<br />
Prozesse nicht wirklich so ab, sondern es wird ganz normal Arithmetik betrieben,<br />
aber das Erklärungsmuster stimmt trotzdem. In Smalltalk ist alles ein Objekt, auch<br />
Zahlen, sogar Klassen sind selbst Objekte (einer Metaklasse).<br />
Das folgende Beispiel stammt aus dem Buch von Louden (1993):<br />
Beispiel<br />
kopara.pdf