Objektmodell |
|
Objekttypen und Beziehungen |
|
|
Dinge, Personen und Begriffe der realen Welt werden durch Objekttypen (Objekt) und deren Eigenschaften (Eigenschaftswert) beschrieben. Komplexe Objekttypen können in Super- und Sup-Objekttypen (OR, EXOR, REPEAT, Vererbungshierarchie) unterteilt werden. Zwischen beliebigen Objekttypen können referenzierende Beziehungen definiert werden. Rekursive Beziehungen werden unterstützt. |
Beispiel |
|
Im folgenden wird der statische Objekttyp Konto mit seinen Eigenschaften definiert: |
|
|
OBJECT objKonto;
ATTRIBUTE
koKonto'Nr : tyKontoID;
koKunde -> objKunde;
koW�hrung -> objW�hrung;
koBank -> objBank;
koBemerkung : tyBemerkung;
STATE
koSaldo : tyBetrag;
OPTIONAL
koBemerkung;
IDENTIFIER
koKonto'Nr;
END; |
|
|
Die Eigenschaften verwenden entweder einen vorher definierten Datentyp oder verweisen auf einen bereits definierten Objekttyp. Beispielhaft soll folgende Aktion vor dem Entfernen eines Kontos ausgeführt werden: |
|
|
ON REMOVE objKonto;
BEFORE
IF (koSaldo # 0) THEN
ASSERT (txKonto'l�schen, koKonto'Nr);
END;
END; |
|
|
Weitere Aktionen können beim Einfügen und Verändern von Objekten ausgelöst werden. Zur Veränderung des Saldos kann folgende Funktion definiert werden: |
|
|
PROCEDURE fSaldoKonto (IN rpKonto -> objKonto, IN pBetrag : tyBetrag);
LOCAL
olKonto : objKonto;
BEGIN
RETRIEVE REQUIRE
olKonto (rpKonto);
MODIFY
koSaldo += pBetrag;
END;
END;
END; |
|
Funktionsmodell |
|
Externe und interne Ereignisse |
|
|
Zur Darstellung der dynamischen Komponente des konzeptionellen Schemas werden Ereignisse eingesetzt. Externe Ereignisse werden aus Sicht der Anwendung von aussen vorgegeben. Die Auslösung eines Ergnisses führt zur Veränderung eines (statischen) Objektes und / oder zur Erzeugung eines internen Ereignisses. Im Unterschied zu externen Ereignissen können interne Ereignisse nicht durch den Benutzer verändert werden. |
Beispiel |
|
Zur Veränderung des Saldos eines Kontos wird folgendes Ereignis definiert: |
|
|
EVENT objKontokorrent;
GENERATE
kkTransaktions'Nr : tyTransaktions'Nr;
ATTRIBUTE
kkKonto -> objKonto;
kkBetrag : tyBetrag;
kkValutadatum : tyDatum;
kkBemerkung : tyBemerkung;
OPTIONAL
kkBemerkung;
IDENTIFIER
kkTransaktions'Nr;
END; |
|
|
Der Saldo des Kontos soll beim Auslösen des Ereignisses verändert werden: |
|
|
ON EVENT objKontokorrent (kkValutadatum);
fSaldoKonto (IN kkKonto, IN kkBetrag);
END; |
|
|
Bei der Stornierung soll die Veränderung des Saldos rückgängig gemacht werden: |
|
|
ON CANCEL objKontokorrent;
fSaldoKonto (IN kkKonto, IN -kkBetrag);
END; |
|