Linie
Mentzer
Software Engineering GmbH
Müller-Friedberg-Str. 30
CH-9000 St. Gallen / SG
Tel. 071 / 223 88 04
Mentzer Software
Kontakt
Kontakt
Linie
 
Übersicht | Konzept | Benutzerschnittstelle | Datenbank | Interpreter | Home
 
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;
 
Weiter