\"\" \"\" \"\"
Go backward to ...als visuelle Sprache
Go up to Die Sprache PROGRAPH
Go forward to ...als datenflußorientierte Sparche

...als objektorientierte Sprache

PROGRAPH unterstützt objektorientiertes Programmieren. Klassen in PROGRAPH bestehen aus Attributen und Methoden. Dem Programmierer steht eine vordefinierte Klassenbibliothek zur Verfügung. So kann ein Applikation komfortabel auf diese Klassenbibliothek aufsetzen. Allerdings besteht PROGRAPH nicht auf einen objektorientieren Progammierstil, sondern ermöglicht vielmehr auch eine prozedurale Programmierung. Dabei wurde nicht, wie bei anderen Hybridsprachen (z.B. Turbo-Pascal) ausgehend von einer prozeduralen Programmiersprache, ein objektorientierter Zusatz beigefügt, beispielsweise durch Typdefinitionen. Hier wurde der objektorientierte Ansatz so erweitert, daß auch eine mehr oder weniger prozedurale Programmierung möglich ist. So können z.B. neben den Methoden in den einzelnen Klassen auch universelle Methoden erstellt werden, die keiner Klasse zugeordnet werden.

Ein wesentlicher Unterschied zwischen PROGRAPH und anderen objektorientierten Sprachen besteht darin, daß Messages nicht an Objekte, sondern an die jeweilige Klasse geschickt werden. Dies führt dazu, daß man das "aktuelle" Objekt als Parameter übergeben oder auf andere Weise herausfinden muß, während es z.B. in C++ als impliziter, erster Parameter immer vorhanden ist (this).

Die Objekte spielen in PROGRAPH eine bedeutende Rolle. Sie sind aber nicht die aktiven Elemente, wie man sie sich in der rein objektorientierten Programmierung vorstellt. So werden in PROGRAPH einige wichtige Prinzipien der Objektorientierung verletzt, z.B. information hiding über private Datenelemente, und eine reine Programmierung in diesem Stil kaum bzw. nur mit Einschränkungen möglich ist. Darstellung:
Objektklassen: sechseckige Icons
Attribute: Dreiecke
Methoden: Vierecke

Die durch Vererbung entstehende Klassenhierarchie wird in PROGRAPH grafisch dargestellt:

Vererbung von Attributen und Methoden erfolg in bekannter Art und Weise, wobei jedoch eine Mehrfachvererbung(wie beispielsweise in C++) in PROGRAPH nicht möglich ist.Geerbte Attribute und Methoden können neu definiert werden.
Dies wir in PROGRAPH mit den Begriffen

attribut overshadowing
    Den geerbten Attributen kann in der Unterklasse ein
    neuer Datentyp zugewiesen werden.
method overshadowing
    Das ``method overshadowing'' kann in PROGRAPH auf zwei 
    verschiedene Arten geschehen:
        komplettes Ersetzen der geerbten Methoden
        Erweitern der geerbten Methoden
bezeichnet.

Ein einfaches Methodenbeispiel:
Arten von Methodenaufrufen
Universal method reference

Universelle Methoden sind keiner bestimmten Klasse zugeordnet und sind u.a. dafür geeignet, Algorithmen zu implementieren, die von mehreren Methoden benötigt werden(z.B. Sortieralgorithmen).

Explicit-class method reference

Bei dieser Art des Aufrufs einer Methode wird die Klasse, in der die Methode zu finden ist, explizit angegeben. Sie wird vom Methodennamen mit einem Schrägstrich abgetrennt.

Context-determined method reference

Diese Aufrufart kann verwendet werden, wenn aufrufende und aufzurufende Methode in der gleichen Klasse definiert sind. Zwei Schrägstriche vor dem Methodennamen kennzeichnen diese Aufrufart.

Data-determined method reference

In diesem Fall wird nach der Methode in der Klasse gesucht, der das Objekt angehoert, das am weitesten links stehender Parameter übergeben wird.

Attribute
Attribute einer Klasse sind typbehaftet. Typen können sowohl:
-Basistypen als auch
-Klassen sein.
Besonderheiten
Initialisierungs-Methode

Der Name der Initialisierungsmethode entspricht dem Namen der Klasse.

Get-/Set-Methode

Get- und Set-Operationen erlauben das Lesen und Schreiben von Objektattributen. Eine Get- und Set-Operation gilt dabei immer nur für ein Attribut eines Objekts.

Persistents

Persistens sind spezielle Elemente, die über die Lebensdauer des Programms hinweg existieren. Sie werden zusammen mit dem aktuellen Zustand der Anwendung abgespeichert. In Persistents können Objekte beliebigen Typs gespeichert werden.


schaefer@fh-heilbronn.de

\"\" \"\" \"\"