DEFINE-BEHAVIOR =============== Syntax: (define-behavior <Behavior-Name> {:PRIMARY | :BEFORE | :AFTER} <Behavior-spezialisierte-Lambda-Liste> [:DOCUMENTATION <Dokumentation>] [:EXPLANATION <Erklärung>] <Behavior-Rumpf>) Warnung: Der Erklärungseintrag wird durch EMA-XPS nicht unterstützt, d.h. :documentation und :explanation werden ignoriert. DEFINE-BEHAVIOR definiert ein Behavior. Ein Behavior besteht aus einem Namen, der das Behavior näher be- zeichnet, einem <qualifier>, der angibt, ob es sich um ein zentrales Behavior oder ein Ergänzungs- behavior handelt, einer Lambda-Liste, mit der die Parameter des Verhaltens festgelegt werden und schließlich dem Behavior-Rumpf, in dem angegeben wird, was das Behavior tun soll. Dokumentation und Erklärung sind optional. Außerdem gibt es noch die besonderen Behaviors NOTIFY-READ-DEPENDENT und NOTIFY-WRITE-DEPENDENT,die Sie immer erstellen müssen, wenn Sie eine Lese- oder Schreibeabhängigkeit durchführen wollen. Folgende Syntax ist zu beachten: syntax: (define-behavior notify-read-dependent :primary ((<Platzhalter für Empfänger Rahmen-Typ> (<Platzhalter für Sender Rahmen-Typ>) Relations-Name Wert) <Behavior-Rumpf>) Der <qualifier> kann entweder :before, :after oder :primary sein. :primary bezeichnet immer das zentrale Behavior, während :before und :after Ergänzungen sind, die vor bzw. nach der zentralen Methode ausgeführt werden. Die <Lambda-Liste> erlaubt folgende Einträge: Der erste Eintrag der spezialisierten Lambda-Liste muß ein Paar (<Variablenname> <Rahmen-Typ>) sein. Die weiteren positionalen Parameter können durch (<Variablenname> <Rahmen-Name>) beschrieben werden. In den Behavior-Argument-Listen kann auch ein Rest- Argument angegeben werden. Dies geschieht in der Form: (define-behavior <Behavior-Name> <qualifier> ((Arg-1 <Rahmen-Name>) &rest Arg-liste)...) Beispiel: >(define-behavior kunde-zufrieden :primary ((ein-kunde Kunde) (ein-angebot Angebot)) (kb-confirm "Sind Sie mit dem Angebot ~A zufrieden?" ein-angebot))