• 当前位置:首页>>UML语言>>UML基础教程>>uml 状态机视图事件
  • uml 状态机视图事件
  • · 事件

    事件是发生在时间和空间上的一点的值得注意的事情。它在时间上的一点发生,没有持续时间。如果某一事情的发生造成了影响,那么在状态机模型中它是一个事件。当我们使用事件这个词时,通常是指一个事件的描述符号,即对所有具有相同形式的独立发生事件的描述,就像类这个词表示所有具有相同结构的独立类一样。一个事件的具体发生叫做事件的实例。事件可能有参数来辨别每个实例,就像类用属性来辨别每个对象。对类而言,信号利用泛化关系来进行组织,以使不同的类共享公用的结构。事件可以分成明确或隐含的几种:信号事件、调用事件、修件事件、时间事件等。 表 6 – 1 是几种事件类型及其描述。

    事件类型

    描述

    语法

    调用事件

    接受等待应答的对象的明确形式的同步请求

    op(a:T)

    改变事件

    对布尔表达式值的修改

    When(exp)

    信号事件

    接受一个对象间外在的、命名的、异步的通信

    Sname(a:T)

    时间事件

    绝对时间的到达或者相对时间段的终结

    After(time)

    表 6–1 事件的种类

    · 1. 信号事件

    信号是作为两个对象之间的通信媒介的命名的实体,信号的接收是信号接受对象的一个事件。发送对象明确地创建并初始化一个信号实例并把它发送到一个或一组对象。最基本的信号是异步单路通信,发送者不会等待接收者如何处理信号而是独立地做它自己的工作。在双路通信模型中,要用到多路信号,即至少要在每个方向上有一个信号。发送者和接受者可以是同一个对象。

    信号可以在类图中被声明为类元,并用关键字《 signal 》表示,信号的参数被声明为属性。同类元一样,信号间可以有泛化关系,信号可以是其他信号的子信号,它们继承父信号的参数,并且可以触发依赖于父信号的转换(如 图 6 – 1 所示)。


    图 6–1 信号的等级组织

    · 2. 调用事件

    调用事件是一个对象对调用的接收,这个对象用状态的转换而不是用固定的处理过程实现操作。对调用者来说,普通的调用(用方法实现的调用)不会被调用事件所辨别。接收者不是用方法来实现操作就是触发一个状态转换来实现这个操作。操作的参数即事件的参数。一旦调用的接收对象通过由事件触发的转换完成了对调用事件的处理或调用失败而没有进行任何状态转换,则控制返回到调用对象。不过,与普通的调用不同,调用事件的接收者会继续它自己的执行过程,与调用者处于并行状态。

    · 3. 修改事件

    修改事件是依靠特定属性值的布尔表达式所表示的条件的满足。这是等到特定条件被满足的一种声明途径,但是一定要小心使用它,因为它表示了一种具有时间持续性的并且可能是涉及全局的计算过程(是一种远距离的动作,因为被测试的值可能是远距离的)。这既有好处也有坏处,它的好处在于它将模型集中在真正的依赖关系上—一种当给定条件被满足时发生的作用—而不是集中在测试条件的机制上。缺点在于它使修改系统潜在值和最终效果的活动之间的因果关系变得模糊了。测试修改事件的代价可能很大,因为原则上修改事件是持续不断的。而实际上,又存在着避免不必要的计算的方法。修改事件应该仅用在当一个具有更明确表达形式的通信形式显得不自然时。

    请注意监护条件与修改事件的区别。监护条件只是在引起转换的触发器事件触发时和事件接收者对事件进行处理时被赋值一次。如果它为假,那么转换将不会被激发,条件也不会被再赋值。而修改事件被多次赋值直到条件为真,这时转换也会被激发。

    · 4. 时间事件 时间事件代表时间的流逝。时间事件既可以被指定为绝对形式(天数),也可以被指定为相对形式(从某一指定事件发生开始所经历的时间)。在高层模型中,时间事件可以被认为是来自整个世界的事件;在实现模型中,它们由一些特定对象的信号所引起,这些对象既可能是操作系统也可能是应用中的对象。  

    [1]

  • 上一篇:uml 静态视图依赖
    下一篇:uml 静态视图关系和关联(1)