Im wahren Leben passieren Dinge häufig gleichzeitig und unvorhersehbar. "Dinge, die passieren" werden 'Ereignisse'
genannt.
Im Kontext von Zustandsmaschinen modellieren Ereignisse das Auftreten eines Stimulus, der einen Zustandsübergang
auslösen kann. Zu Ereignissen gehören Signale, Aufrufe, das Vergehen von Zeit und eine Änderung eines Zustands.
Ereignisse können synchron oder asynchron sein.
Ein 'Signal' ist eine Art von Ereignis, das die Spezifikation eines asynchronen Stimulus zwischen zwei Instanzen
darstellt.
Ereignisse können extern oder intern sein. Externe Ereignisse sind Ereignisse, die zwischen dem System und seinen
Akteuren eintreten. Interne Ereignisse sind Ereignisse, die zwischen den Objekten im System eintreten. Es gibt vier
Arten von Ereignissen: Signale, Aufrufe, das Vergehen von Zeit und eine Änderung eines Zustands.
Ein Signal stellt ein Objekt dar, das asynchron von einem Objekt verteilt (ausgelöst) und anschließend von einem
anderen Objekt empfangen (abgefangen) wird. Ausnahmen sind ein Beispiel für ein Signal.
Signale können Instanzen haben, obwohl diese Instanzen normalerweise nicht explizit modelliert werden. Signale können
für die Modellierung von Ereignishierarchien in Generalisierungsbeziehungen eingezogen werden.
Signale können Attribute und Operationen haben. Die Attribute eines Signals dienen als Parameter.
Ein Signal kann als Aktion für einen Zustandübergang in einer Zustandsmaschine gesendet werden oder das Senden einer
Nachricht in einer Interaktion sein. Bei der Ausführung einer Operation können ebenfalls Signale gesendet werden. Wenn
Sie eine Klasse oder eine Schnittstelle modellieren, ist ein wichtiger Teil der Festlegung des Elementverhaltens die
Definition der Signale, die von den zugehörigen Operationen gesendet werden können. Die Beziehung zwischen einer
Operation und den Ereignissen, die die Operation senden kann, wird mit Hilfe einer Abhängigkeitsbeziehung (mit
Anwendung des Stereotyps <<Senden>> (send)) modelliert.
So, wie ein Signalereignis das Vorkommen eines Signals darstellt, stellt ein Aufrufereignis die Verteilung einer
Operation dar. In beiden Fällen kann das Ereignis einen Zustandübergang in einer Zustandsmaschine auslösen.
Während ein Signal ein asynchrones Ereignis ist, ist ein Aufrufereignis im Allgemeinen synchron. Wenn ein Objekt eine
Operation für ein anderes Objekt aufruft, wird die Steuerung vom Sender an den Empfänger übergeben, bis die Operation
abgeschlossen ist. Anschließend wird die Steuerung an den Sender zurückgegeben. Die Modellierung eines
Aufrufereignisses wird auf dieselbe Weise visualisiert wie bei einem Signalereignis. In beiden Fällen wird das Ereignis
zusammen mit seinen Parametern als Auslöser für einen Zustandsübergang angezeigt.
Obwohl ein Signalereignis visuell nicht von einem Aufrufereignis unterscheidbar ist, macht sich der Unterschied in der
Empfängerklasse bemerkbar, das diese eine Operation für die Behandlung des Aufrufereignisses deklariert. Bei einem
Signal erfolgt ein Übergang in der Zustandsmaschine, der vom Signal ausgelöst wird.
Ein Zeitereignis stellt das Vergehen von Zeit dar. Zeitereignisse werden verwendet, um zeitabhängige Komponenten des
Systems mit Hilfe eines allgemeinen Taktgebermechanismus zu synchronisieren. Ein Änderungsereignis stellt eine Änderung
des Systemzustands oder die Erfüllung einer Bedingung dar.
An Signal- und Aufrufereignissen sind mindestens zwei Objekte beteiligt: ein Sender und ein Empfänger. Wenn das Signal
gesendet wird, verteilt der Sender das Signal und fährt dann mit seinem Steuerungsablauf fort, ohne die Rückgabe des
Empfängers abzuwarten. Dies steht im Gegensatz zur Semantik des Operationsaufrufs, bei der der Sender so lange wartet,
bis der Empfänger antwortet, und erst dann mit dem Steuerungsablauf fortfährt. Aus diesem Grund werden Operationen
normalerweise für die Darstellung "blockierenden" Verhaltens (Verhalten, das verhindert, das andere Dinge passieren)
verwendet, während Signale nicht blockierendes Verhalten darstellen.
Der Vorgang, dass ein Objekt ein Signal an mehrere Objekte sendet, wird "Multicasting" genannt und wird durch das
Senden eines Signals an einen Container dargestellt, der eine Gruppe von Empfängern enthält. Broadcasting beschreibt
den Vorgang, bei dem ein Signal an alle Objekte in einem System gesendet wird, und wird durch das Senden eines Signals
an ein Objekt dargestellt, das für das System als Ganzes steht. Dieses 'Systemobjekt' wiederum realisiert den
Nachrichtenverteilermechanismus, der sicherstellt, dass das Signal an alle entsprechenden Objekte im System gesendet
wird.
|