TYPE
Point* = POINTER TO PointDesc;
PointDesc = RECORD
PROCEDURE (p: Point) Draw*;
BEGIN
END Draw;
BEGIN
END M1.
der Programmierer muß aufpassen, z.B.
public void Point(int x, int y) {
Vererbung
BEGIN
PROCEDURE(r: Rec) Fill*;
BEGIN
END Fill;
Nicht die Klasse ist für das Verstecken ihrer Daten zuständig, sondern das Modul, in dem sie implementiert ist.
Sichtbarkeits-Modifikatoren :
public, private, privat protected oder protected.
class MyClass extends SomeOne implements MyInterFace { ... }
Nebenläufigkeit -> "active Oberon"
Zusammenfassung
| OOP-Terminologie | Oberon-Terminologie |
| Klasse (Class) | Record-Typ mit einer oder mehreren Methoden, der einen abstrakten Datentyp definiert |
| Objekt (Object) | Instanz des Typs |
| Methode (Methode) | Eine Methode des Record-Typs |
| Meldungen senden
(send Message) | Aufruf einer dynamisch gebundenen Methode |
| Oberklasse (Super-Class) | Basistyp einer Erweiterung |
| Unterklasse (Sub-Class) | Erweiterter Record-Typ |
| Vererbung (Inheritance) | Typerweiterung |
| Überschreiben einer Methode
(Overriding a method) | Ändern der einem Feld zugewiesenen Methode in einer Erweiterung |
| Empfänger (Receiver) | Das als Parameter übergebene Objekt einer Methode |
| Super-Aufruf (Super call) | Aufruf einer Methode, die an den Basistyp einer Erweiterung gebunden ist |
| Dynamische Binden
(Dynamic binding) | Aufruf einer Methode |
Tabelle 1: Oberon-Terminologien
Samin Ölker,
Email: sami@informatik.uni-bremen.de
Erol Uzuner,
Email: sarcon@informatik.uni-bremen.de