- ...übernimmt,
-
In Eiffel sind alle Klassen implizit von ANY abgeleitet.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...anzuheften:
-
Das folgende Beispiel setzt natürlich voraus,
daß Figures.Figure eine Erweiterung von Disciplines.Object ist.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Speicher
-
In Oberon gibt es kein Hauptprogramm.
Daher wird zu Beginn der Ausführung eines Programms
festgestellt, welche Module vorhanden sind.
Dieses Verfahren setzt voraus, daß
die Objekte (übersetzte Module) alle hintereinander im
Speicher liegen und durch ein
spezielles Objekt beendet werden.
Bei der Verwendung fremder Objekte bestünde die Gefahr,
daß sie zwischen den Oberon-Modulen angeordnet würden.
Dies würde zum sofortigen Absturz führen.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...wird.
-
Dies ist eine minimalistische Definition, da nichts über
Methoden und andere OO-Techniken gesagt wird. Sie hilft
jedoch bei den hybriden Programmiersprachen wie z.B. C++.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...verweisen.
-
Falls nie ein schwergewichtiger Zeiger auf ein Objekt gesetzt
wird, bleibt ein Objekt ebenfalls leben. Auf diese Weise
ist der Umgang mit schwergewichtigen Zeigern nur dort notwendig,
wo kooperative Mechanismen erforderlich sind.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Weise
-
Semantisch identisch heißt, daß ohne Bruch der Abstraktionsgrenzen
kein Unterschied festzustellen ist.
Das heißt, daß einzelne verborgene Komponenten durchaus
unterschiedlich sein können.
Wenn beispielsweise sich hinter dem Objekt ein Dateideskriptor
auf eine bestimmte Datei verbirgt, kann dieser durchaus
einen unterschiedlichen Wert haben und trotzdem auf die
gleiche Datei verweisen.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...ist),
-
Beispiele hierzu gibt es unter
http://www.mathematik.uni-ulm.de/sai/ws97/oolib/zb/events.html
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...unterstützt.
-
In der Ulmer Oberon-Bibliothek geschieht dies durch Services.Installed.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Objekten.
-
Eine kurze Übersicht über die Variationen auf diesem Feld liefert
die Antwort zur Frage 1.4 in den FAQ zu comp.object, zu finden unter
http://www.cyberdyne-object-sys.com/oofaq/oo-faq-S-1.4.html.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Services.Object
-
Die Motivation für den Namen Services folgt in Kürze.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...basiert:
-
Das Beispiel ist in vollständiger Form unter
http://www.mathematik.uni-ulm.de/sai/ws97/oolib/zb/Collections-14/
zu finden.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Keedy
-
Mehr dazu unter
http://www.informatik.uni-ulm.de/abt/rs/staff/projects/monads/PersistentVMemoryE.html
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...ist.
-
Hinweis: Diese Definition ist nicht allgemeingültig und nur
bei reinen Bibliothekslösungen sinnvoll, da beispielsweise
bei dem Monads-System keine Konvertierungen oder Transfers
notwendig sind.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...voraus.
-
Es gibt Lösungen, die nur mit Modulen als 1st class objects
auskommen, wenn pro Modul nur ein persistenter Typ definiert wird.
Jedoch führt ansonsten prinzipiell kein Weg daran vorbei.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...aus:
-
Der Programmtext ist den Beispielen Collections-14
(noch ohne Persistenz auf direkter Basis von Services.Object
und Collections-16 (mit Persistenz) entnommen - zu finden unter
http://www.mathematik.uni-ulm.de/sai/ws97/oolib/zb/Collections-14/ und
http://www.mathematik.uni-ulm.de/sai/ws97/oolib/zb/Collections-16/.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Collections-16
-
Zu finden unter
http://www.mathematik.uni-ulm.de/sai/ws97/oolib/zb/Collections-16/.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...behindern.
-
Seit einiger Zeit gibt es deswegen auch mehrere Varianten
des Züricher Oberon-Systems mit Koroutinen.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...zeigt:
- Als vollständiges Beispiel steht es
unter http://www.mathematik.uni-ulm.de/sai/ws97/oolib/zb/ProdCons/
zur Verfügung.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...stellen:
- Das Beispiel ist
vollständig zu finden unter
http://www.mathematik.uni-ulm.de/sai/ws97/oolib/zb/Collections-17/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Ereignis
- Ereignisse sind hier nicht im
eingeschränkten Sinne des Bibliotheksmoduls Events
zu verstehen.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...vorsehen
- Realisiert durch die Module Schedulers
und RoundRobin.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...sind.
- Typischerweise
indirekt durch Module wie Iterators oder CrPipes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Programm
- Im Web zu finden unter
http://www.mathematik.uni-ulm.de/sai/ws97/oolib/zb/Sleep/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...demonstrieren:
- Dieses Beispiel wurde dem Ada-Standard
entnommen.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...werden:
- Das vollständige
Beispiel ist im Web unter
http://www.mathematik.uni-ulm.de/sai/ws97/oolib/zb/Rendezvous/
zu finden.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...aufruft.
-
Der Name Connect entspricht dem Schlüsselwort
connect,
das in einer Vorversion von Green zum Aufruf
eines Services verwendet wurde.
Dies stellte analog zu CSP syntaktisch heraus,
daß eine Interprozeßkommunikation stattfindet.
Später gab es in Ada keinen syntaktischen Unterschied
mehr zwischen einem normalen Prozeduraufruf und der Benutzung
eines Services.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...werden:
-
Ein Ausweg ergibt sich in Ada, wenn man auf in
rekursive Prozeduren eingebettete Tasks zurückgreift.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...denkbar.
-
Beim konservativen Ansatz werden die Objekte nicht kopiert,
und ein Objekt wird als lebend betrachtet,
solange ein potentieller Zeiger darauf oder hinein zeigt.
Die potentiellen Zeiger bilden dann eine Obermenge der
tatsächlichen Zeiger.
Der konservative Ansatz ist sowohl in Bezug auf
Laufzeit- als auch Speichereffizienz der kopierenden
Speicherverwaltung unterlegen (solange das Kopieren
nicht zu teuer ist).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...verwenden.
- Leider nicht alle.
So sind Ein- und Ausgabe-Operationen auf Dateien
nicht unterbrechbar, selbst wenn sie über das Netz via NFS
bezogen werden und deswegen längere Zeit in Anspruch
nehmen können.
Im Extremfall (hard mount bei NFS) kann dies
zum ``Aufhängen'' des Prozesses führen.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...kann.
-
So würden alle gängigen
UNIX-Shells
sofort auf Ende der Eingabe erkennen und die Sitzung beenden.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.