EA&UML日拱一卒-活动图::Signal,Event和Trigger
来源:互联网 发布:风力发电现状 知乎 编辑:程序博客网 时间:2024/06/16 07:57
在 运用序列图(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(触发条件)
触发条件指定了了可以引起相关联行为执行的事件。事件可能引起某个行为的执行。触发条件在指定可能引起行为执行的事件的同时,也会过滤掉不感兴趣的事件,就像事件的约束一样。
注:原翻译为【触发】,但是语义不够明确,以下统一翻译为【触发条件】。
也不知道为什么,技术文献翻译成中文以后就是这么难理解,我们以十字路口发生的事情来举例说明:
作为设备的“红灯,绿灯,黄灯”就是Signal
“红灯亮了,绿灯亮了”就是Event
交通规则讲:"红灯停,绿灯行“。含义其实是“如果发生了【红灯亮了】的情况的话就要停止,如果发生了【绿灯亮了】的情况的话就可以前进”,这里条件句就是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的子类。它与一个信号关联。
- EA&UML日拱一卒-活动图::Signal,Event和Trigger
- EA&UML日拱一卒-活动图::活动
- EA&UML日拱一卒-活动图::活动分区
- EA&UML日拱一卒-活动图:: 分叉和结合
- EA&UML日拱一卒-活动图::AcceptCallAction和ReplyAction
- EA&UML日拱一卒-活动图::ReadSelfAction和ReadStructuralFeatureAction
- EA&UML日拱一卒-活动图::StartClassifierBehavior和StartObjectBehavior
- EA&UML日拱一卒-活动图::Feature和StuctualFeature
- EA&UML日拱一卒--活动图::入门
- EA&UML日拱一卒-活动图:: 对象流
- EA&UML日拱一卒-活动图::数据区
- EA&UML日拱一卒-活动图::异常
- EA&UML日拱一卒-活动图::CallOperationAction
- EA&UML日拱一卒-活动图::CallBehaviorAction
- EA&UML日拱一卒-活动图::SendSignalAction
- EA&UML日拱一卒-活动图::AcceptEventAction
- EA&UML日拱一卒-活动图::BroadcastSignalAction
- EA&UML日拱一卒-活动图::Object actions
- mybatis
- [LeetCode 解题报告]015. 3Sum
- 【剑指offer】构建乘积数组
- JAVA——常用函数收集
- BZOJ 3343 教主的魔法 暴力分块做法
- EA&UML日拱一卒-活动图::Signal,Event和Trigger
- TensorFlow ReLUs
- 多进程+协程
- mybatis和hibernate的区别
- c语言连接mysql数据库的实现方法
- 远程通信框架(RPC,Webservice,RMI,JMS、EJB、JNDI的区别)对比
- 我的第一段链接mysql的java代码
- jzoj P1664 【coci2011/2012 1】JABUKE
- Python中整数和浮点数