主题

简介 回到页首

在真实世界中发生的事情通常是同时和不可预测的。“已发生的事情”称为“事件”。

在状态机上下文中,事件对可能触发状态过渡的刺激的发生进行建模。事件包括信号、调用、经过时间或状态更改。事件可以是同步或异步的。

“信号”是一种代表两个实例之间异步刺激的规范的事件类型。

事件类型 回到页首

事件可以是外部或内部的。外部事件是在系统及其参与者之间传送的那些事件。内部事件是在系统中存在的对象之间传送的那些事件。有四种类型的事件:信号、调用、经过时间和状态更改。

信号 回到页首

信号代表由一个对象异步地分派(抛出),然后由另一个对象接收(捕捉)的对象。异常是一种信号类型的示例。

信号可以有实例,但通常不会显式地对这些实例建模。泛化关系中可能会涉及信号,允许事件层次结构的建模。

信号可以有属性和操作。信号的属性用作它的参数。

可以作为状态机中状态过渡的操作发送信号,或作为交互中发送的消息发送信号。操作的执行也可以发送信号。对类或接口建模时,指定元素行为的一个重要方面是指定其操作可以发送的信号。使用依赖关系对操作及它可以发送的事件之间的关系建模,定型为 <<发送>>。

调用事件 回到页首

就如同信号事件代表信号的出现一样,调用事件代表操作的分派。在两种情况中,事件可能触发状态机中的状态过渡。

但信号是异步事件,而调用事件通常是同步的。这表示当一个对象调用另一个对象中的操作时,控制从发送者传送到接收者,直到操作完成为止(此时控制返回至发送者)。对调用事件建模的可视化方法与信号事件建模一样。在两种情况中,事件与其参数显示在一起,作为状态过渡的触发器。

虽然没有可视的提示来区分信号事件和调用事件,但其不同之处将显示在接收器类中,因为它将声明一个处理调用事件的操作。在信号情况下,将有一个由该信号触发的状态机中的状态过渡。

时间和更改事件 回到页首

时间事件代表经过的时间。时间事件使用公共时钟机制,用于同步系统中依赖于时间的部分。更改事件表示系统状态的更改或某些条件得到满足。

发送和接收事件 回到页首

信号和调用事件至少涉及两个对象:发送者和接收者。发送信号时,发送者分派信号,然后继续其控制流而不会等待来自接收者的返回结果。这与操作调用的语义形成对比,在操作调用中发送者在继续其控制流之前,等待接收者的响应。因此,操作通常用于表示“阻塞”行为(阻塞或防止其它事件发生的行为),而信号用于表示非阻塞行为。

一个对象将一个信号发送给一组对象的行为称为“多播”,并且通过将信号发送至一个保存一组接收者的容器来表示。广播是将信号发送给系统中的所有对象的行为,并且通过将信号发送至代表整个系统的一个对象来表示;该“系统对象”然后实现消息分发机制,确保将信号发送至系统中的所有相应对象。



Rational Unified Process   2003.06.15