HSG

Aktuelle Seite: HSG/Fächer/Informatik/Material


Ein Ereignis ist eine Zustandsänderung (bzw. das Ausführen eines Kommandos) in einem Objekt, die mit einer Ereignisbehandlungsroutine verknüpft werden kann.

Vergleich

Wir nehmen als System ein Haus mit Garten und ein Ehepaar, das in diesem Haus lebt.
Das System kann mit drei Objekten: Haus_mit_Garten, Mann, Frau modelliert werden. Natürlich gibt es in diesem System mannigfache Zustandsänderungen.

Aber was ist ein Ereignis?

Antwort: Ein Ereignis ist eine überwachte Zustandsänderung. Eine Zustandsänderung, die aus irgendeinem Grund interessiert.



Wir wollen nun mal annehmen, dass in dem Objekt Haus_mit_Garten das Ereignis "Es beginnt zu regnen" eintritt. An einem konkreten Haus könnte ein Regensensor montiert sein, der den Regen meldet, in der Modellierung könnte ganz abstrakt der Wert eines Attributs verändert worden sein. In der Modellierung hat das Objekt Haus_mit_Garten ein Attribut OnRegen, das es erlaubt, eine Verknüpfung zu einer Ereignisbehandlung herzustellen. Im konkreten Haus gibt es vielleicht beim Regensensor einen Schaltkasten mit dem es möglich ist, Nachrichten zu versenden oder auch garnichts zu tun. In Delphi lautet die Entsprechung für den Schaltkasten: if Assigned(OnRegen) then OnRegen. Nichts tun würde in der Modellierung heißen, dass das Attribut OnRegen den Wert NIL hat. Wir nehmen nun an, dass das Objekt Mann eine Nachricht gesendet bekommt, zb. Mann.reagiere_auf_Regen. Konkret hat der Mann einen Piepser in der Tasche, der vom Regensensor aktiviert wurde. Er kann aber nur reagiere_auf_Regen ausführen, wenn diese Routine programmiert wurde und eine zulässige Ereignisbehandlung darstellt. Wir nehmen also an, irgendjemand hat Mann die Fähigkeit verliehen, bei beginnendem Regen die Wäsche abzuhängen, dh. die "Routine" reagiere_auf_Regen ist implementiert. Die Zuweisung Haus_mit_Garten.OnRegen := Mann.reagiere_auf_Regen könnte z.B. von dem Objekt Frau durchgeführt worden sein. Voraussetzung wäre natürlich, dass Frau Haus_mit_Garten und Mann kennt und das Attribut OnRegen ebenso wie die Methode reagiere_auf_Regen" öffentlich zugreifbar sind. Man beachte, dass der Ereignisauslöser Haus_mit_Garten den Ereignisbehandler Mann nicht kennen muss.