UML精粹5 - 状态图,活动图,通信图,组合结构,组件图,协作,交互概述图,时间图
状态机图state machine diagram
下面是状态图的一个例子(一个城堡中的秘密保险箱的控制面板)。

转换transition包括3个部分:trigger-signature [guard]/activity,每个部分都是可选的。
内部活动
状态可以在没有转换时响应事件,可以使用内部活动来表示:将事件,警戒条件和活动放在状态框里面。
一个文本域的typing状态的内部事件

活动状态
前面描述的状态中,对象是安静的,它在等待下一个事件,然后决定做点什么。在某个状态中的对象也可以是活动的,比如searching状态,使用do-activity来表示,如下图。

超状态superstate
有时候,你会发现若干个状态共享共同的转换和内部活动。可以把它们当做子状态,把共享行为移进超状态。

并发状态concurrent state
状态可以分解为若干正在并发进行的正交状态图。如下图展示了一个简单的闹钟,它可以播放CD或者收音机,以及展示当前时间或者闹钟时间。

实现状态图
状态图的实现主要有3中方式:嵌套switch、状态模式和状态表。
1. 最直接的方式是使用switch,如下面的代码实现了保险箱控制面板实例的状态转换过程。
public void HandleEvent(PanelEvent anEvent)
{
switch (CurrentState)
{
case PanelState.Open:
switch (anEvent)
{
case PanelEvent.SafeClosed:
CurrentState = PanelState.Wait;
break;
}
break;
case PanelState.Wait:
switch (anEvent)
{
case PanelEvent.CandleRemoved:
if (isDoorOpen)
{
RevealLock();
CurrentState = PanelState.Lock;
}
break;
}
break;
case PanelState.Lock:
switch (anEvent)
{
case PanelEvent.KeyTurned:
if (isCandleIn)
{
OpenSafe();
CurrentState = PanelState.Open;
}
else
{
ReleaseKillerRabbit();
CurrentState = PanelState.Final;
}
break;
}
break;
}
}
2. 使用state模式。

3. 使用状态表。建造一个运行时使用该状态表的解释器,或者一个基于该表生成类的代码生成器。
|
Source State |
Target State |
Event |
Guard |
Procedure |
|
Wait |
Lock |
Candle removed |
Door open |
Reveal lock |
|
Lock |
Open |
Key turned |
Candle in |
Open safe |
|
Lock |
Final |
Key turned |
Candle out |
Release killer rabbit |
|
Open |
Wait |
Safe closed |
何时使用状态图
状态图擅长于描述单个对象的行为,这些行为可能跨越多个用例。状态图不擅长设计许多对象协作的行为。
活动图activity diagram
活动图是描述过程逻辑、业务流程和工作流的技术。

分叉fork有一个进入流,和若干个离开的并发流。结合join表示过个进入流都到达,离开流才会执行。合并merge有多个输入流和单个输出流,意味着由判断decision开始的条件行为结束了。活动图的步骤称为动作action。
分解一个动作
动作可以分解为子活动。例如将deliver order分解为子活动。


分区partitions
活动图告诉你发生了什么,但没有告诉你谁做什么。可以通过分区来展示谁做什么。这种风格经常被称为泳道,也称为泳道图。

- 信号。
- 令牌
- 流和边
- 针脚和变换
- 扩展区域
- 流结束
- 结合规格
- 何时使用活动图。活动图是工作流和流程建模的一个很棒的工具。
通信图communication diagram
交互图的一种,强调交互的各个参与者之间的数据链接。再UML1.x中被称为协作图。
UML标准做法。使用多级编号表示消息序列。

人们也经常这样使用。

何时使用通信图
强调调用序列时,使用序列图;强调数据链接时,使用通信图更好。
组合结构composite structures
组合结构深入类的内部结构,将一个复杂的类分解为部件part。

展示TV viewer及其接口的两种方式。
组件的内部视图

何时使用组合结构。组合结构是UML2新增的。它和包图的的区别是:包是编译时分组,组合结构是运行时分组。组合结构非常适合展示组件以及组件的内部结构,所以大多在组件图中使用。
组件图component diagram
组件通过实现接口可需求接口来连接,经常使用组合结构的标示法。当你把系统分解为组件并要展示它们通过接口的相互连接时,或者把组件分解为更低级别的结构时,使用组件图。

协助collaboration
协助表示一次交互过程中各个角色role之间的关系。

带角色类图的协作。
交互概述图Interaction overview diagram
交互概述图是活动图和序列图嫁接起来得到的。你可以认为交互概述图就是活动图,不过其中的活动替换为了小的序列图,或者认为交互概述图就是序列图被活动图打碎了,用于展现控制流。

时间图Timing diagram
时间图是另一种形式的交互图,它的焦点是时间约束。如下一个咖啡壶的泵和电炉的交互示例:泵开始工作和电炉开始工作的时间间隔至少10秒,泵停止工作和电炉停止工作的间隔不得大于15分钟。
展示状态为线的时间图

展示状态为区域的时间图

UML精粹5 - 状态图,活动图,通信图,组合结构,组件图,协作,交互概述图,时间图的更多相关文章
- Python设计模式 - UML - 交互概述图(Interaction Overview Diagram)
简介 交互概述图是将不同交互图衔接在一起的图,属于UML2.0的新增图.交互概述图并没有引入新的建模元素,其主要元素来自于活动图和时序图.交互概述图侧重从整体上概览交互过程中的控制流,包括交互图之间的 ...
- 【UML】NO.52.EBook.5.UML.1.012-【UML 大战需求分析】- 交互概览图(Interaction Overview Diagram)
1.0.0 Summary Tittle:[UML]NO.52.EBook.1.UML.1.012-[UML 大战需求分析]- 交互概览图(Interaction Overview Diagram) ...
- UML用法及状态图,活动图介绍
统一建模语言UML(Unified Modeling Language)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对象的.软件密集系统的制 ...
- uml精粹——11.活动图(及整个读书笔记分享)
11.活动图activity diagram 活动图是描写叙述过程化逻辑procedural logic.业务过程business process和工作流work flow的技术. 他和流程图fl ...
- UML精粹3 - 类图,序列图,CRC
类图Class diagram 类图描述系统中的对象类型,以及它们之间的各种静态关系.类图也展示类的性质和操作,以及应用于对象连接方式的约束.UML中的特性feature,涵盖了性质property和 ...
- UML学习笔记:活动图
UML学习笔记:活动图 活动图 活动图是UML中描述系统动态行为的图之一,用于展现参与行为的类的活动或动作.在UML里,活动图很类似于流程图,但是有一些区别: 活动图着重表现系统行为,描述对象活动的顺 ...
- UML精粹4 - 对象图,包图,部署图,用例
对象图object diagram 对象图是某个时间点上的对象在系统中的快照,也经常被称为实例图.一般在展示组合对象结构时比较有用.例如 组合结构的类图 一个时刻的对象图 包图package diag ...
- 《UML精粹》第三章 -类图的基本概念
第三章 类图:基本概念 类图可用来描写叙述系统中各种对象的类型.也可描绘出对象间各种各样的静态关系.此外.类图中也能够秀出类的性质(property)与操作(operation),以及可应用到对象间连 ...
- UML作业第三次:分析《书店图书销售管理系统,绘制类图
plantuml类图绘制方法的学习: 1.关于类图的学习: 类图显示了系统的静态结构. 类:类图中的主要元素,用矩形表示.矩形的上层表示类名.中层表示属性.下层表示方法. 类之间的关系:关联.依赖.聚 ...
随机推荐
- [原]Wpf应用Path路径绘制圆弧
1. 移动指令:Move Command(M):M 起始点 或者:m 起始点比如:M 100,240或m 100,240使用大写M时,表示绝对值; 使用小写m时; 表示相对于前一点的值,如果前一点没 ...
- PDF 补丁丁 0.4.3.1518 测试版发布:书签编辑器新增升级书签功能、优化PDF文档阅览器
新的 PDF 补丁丁测试版上线啦! 新版本增加了升级书签的功能(见工具栏的“←”按钮),可以方便地将下级书签升级为上级书签. 另外,新版本还增强了书签编辑器功能中的 PDF阅读器,从之前的单页阅读模式 ...
- 不错的TOMCAT监控好工具probe
Tomcat版本:6.0.41 Probe版本:2.3.3 一,Tomcat没有默认用户账号,故首先需要添加Tomcat用户账号 修改$CATALINA_HOME/conf/tomcat-users. ...
- 自定义控件之 RadioList
var RadioListObj = function (id, url) { this.URL = url;//radiobox source URL this.ID = id;//radioLis ...
- PHP投票系统
1.投票页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- ASP.NET关于WebPages的一点总结
相比于早期的ASP,WebPage貌似只是多了一些Razor语法可以直接调用服务器代码,其他的内容HTML.样式CSS以及脚本JavaScript基本都是一样的处理方式 只是说内容HTML里面加入了更 ...
- 关于edoc程序tomcat post提交中文乱码解决办法
1修改源码代码中页面部分指定转码格式为UTF-8替换原来的gb2312或GBK 2源码新增 water.edoc.service.FileFilter 过滤器并在web.xml首行添加制定格式 3to ...
- 苹果5S指纹扫描识别传感器Touch ID有利于iPhone的安全性
iPhone5S新增的指纹扫描识别传感器 Touch ID,黑客花了大量的时间表明指纹验证是可以被破解的.即使它可能被黑客攻击,对iPhone5S的安全性而言,仍然具有极大的好处. 为什么一个容易被破 ...
- 常用IT类英文词汇 - 1
作为IT学生以及将来打算从事IT行业的人, 我们在开发时少不了要去阅读英文文档, 在面试及工作中也会涉及到相关的英文词汇, 因此具备一定的英语水准是必须的. 这里我就把我在学习中所遇到的英文词汇记录下 ...
- Oracle GoldenGate for Big Data 12.2.0.1的新特性
ogg for bigdata 12.2已经发布,新增有如下特性:支持java replicat进程OGG12.2中开发了基于java的replicat模式,以前的版本是基于extract进程中使用u ...