Simula-67

Simula-67 ist eine Erweiterung der prozeduralen Programmiersprache ALGOL 60 - vergleichbar mit Pascal - und eignet sich gut für den Einsatz in der nicht-numerischen Datenverarbeitung. Entwickelt wurde die Sprache in Oslo, wobei die objektorientierten Mechanismen, insbesondere die arbeitsteilige Entwicklung von Software, unterstützt werden sollen. Es wurde konsequent auf den RECORD-Konstruktor (auch: struct etc.) verzichtet; jeden Daten-Aggregation wird durch Klasse (CLASS) und/oder eine Feld ( ARRAY) modelliert.

Klassen werden durch den Compiler und das Laufzeitsystem wie benutzerdefinierte Type behandelt. Merkmale von Basisklassen werden vollständig geerbt. Dabei ist ein Reimplementieren von Attributen nicht möglich. Ein mehrfaches Erben ist jedoch nicht möglich. Simula-67 unterstützt Polymorphie nur bedingt. Es ist möglich, Objektreferenzen Objekte verschiedenen Typs (Klassen) zuzuordnen, wobei diese nur aus Unterklassen stammen dürfen. Allerdings findet beim Methodenaufruf kein automatisches "spätes Binden" statt.

In der Methodendefinition muss der Typ des referenzierten Objekts zunächst explizit ermittelt werden. Dadurch geht die Voraussetzung zur leichten Erweiterbarkeit um neue Klassen verloren. Ebenso wird der Designmechanismus der abstrakten Klasse nur bedingt angeboten. Die Vereinbarung von VIRTUAL Methoden mit leerem Rumpf in Basisklassen ist möglich (vergleiche C++). Metaklassen und Klassenobjekte werden nicht unterstützt.

Hinsichtlich der Sichtbarkeits-, Kapselungs- und Zugriffsschutzmechanismen kann durch eine Klassen-Qualifikation die Abschirmung des Objektzustands von außen aufgehoben werden.

Es gilt die Referenz-Semantik für Zuweisungen von Objekten. Dabei gibt es nur benutzerkontrollierte Objekt-Konstruktionen. Generische oder auch parametrisierbare Klassen werden von Simula nicht unterstützt. Die Initialisierung und Vernichtung von Objekten wird benutzerkontrolliert realisiert. Dafür gibt es explizite Konstruktoren.

Simula-67 verfügt über ein Konzept mit Coroutinen, in dem die "quasi-parallele" Ausführung von Methoden mehrerer Objekte simuliert werden kann (detach unterbricht, resume nimmt die Ausführung an der alten Stelle wieder auf - evtl. mit veränderten Umgebungsparametern). Die Größen von Arrays können zur Laufzeit festgelegt werden.

Informationen zum Artikel
Deutsch: Simula-67
Englisch:
Veröffentlicht: 11.01.2010
Wörter: 302
Tags: Sonstige Progr.
Links: Abstrakte Klasse, ALGOL 60 (algorithmic language), Array, C++, Compiler