11.09.2013 Aufrufe

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!