EA&UML日拱一卒-活动图::Signal,Event和Trigger

来源:互联网 发布:风力发电现状 知乎 编辑:程序博客网 时间:2024/06/16 02:03

在 运用序列图(Sequence Diagram),活动图(Activity Diagram)和状态图(State Diagram)的时候,会遇到Signal(信号),Event(时间)和Trigger(触发)的概念。它们经常在同一个场景中出现,一下子还真不容 易看出区别来。


还是老规矩:看看UML规范中是怎么说的。下面的描述结合了《GB/T 28174.2-2011 统一建模语言(UML) 第2部分:上层结构》和《OMG Unified Modeling LanguageTM (OMG UML), Superstructure Version 2.4.1》中的内容。


Signal(信号)


信号是通讯对象间的发送请求实例的类型规格说明,接受对象按照它的接收规格说明来处理信号实例。引起请求的发送调用事件发生时,承载发送请求的数据表示为信号的属性。信号的定义独立于处理该信号的类目。


Event(事件)


事件定义了某些可能造成影响的事情的发生。


Trigger(触发条件)


触发条件指定了了可以引起相关联行为执行的事件。事件可能引起某个行为的执行。触发条件在指定可能引起行为执行的事件的同时,也会过滤掉不感兴趣的事件,就像事件的约束一样。


注:原翻译为【触发】,但是语义不够明确,以下统一翻译为【触发条件】。


也不知道为什么,技术文献翻译成中文以后就是这么难理解,我们以十字路口发生的事情来举例说明:


  1. 作为设备的“红灯,绿灯,黄灯”就是Signal

  2. “红灯亮了,绿灯亮了”就是Event

  3. 交通规则讲:"红灯停,绿灯行“。含义其实是“如果发生了【红灯亮了】的情况的话就要停止,如果发生了【绿灯亮了】的情况的话就可以前进”,这里条件句就是Trigger了。


自己对照UML规范中的描述再捋一遍吧。


下面是《OMG Unified Modeling LanguageTM (OMG UML), Superstructure Version 2.4.1》中关于Signal,Event和Trigger之间联系的类图。


从Trigger图中可以看到,可以有多个Trigger监视同一个Event,但每个Trigger只能监视一个。



从上图可以看出Event首先分为MessageEvent和ChangeEvent两大类,其中SignalEvent是MessageEvent的子类。它与一个信号关联。


以上就是今天的文章,欢迎转载并推荐给您的朋友!
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】!


原创粉丝点击