sequence diagram
[UML]UML系列——时序图(顺序图)sequence diagram
系列文章
[UML]UML系列——用例图中的各种关系(include、extend)
[UML]UML系列——类图class的关联关系(聚合、组合)
[UML]UML系列——类图class的实现关系Realization
[UML]UML系列——活动图activity diagram
引言
用例图、类图、活动图、时序图之间是什么关系?
时序图有什么作用?
先来模拟一下三国演义的赤壁之战的时序图,先知道它到底长什么样子,再深入介绍:
小伙伴惊呆了,这样画战略图,一目了然,原来著名的战役是这么回事。这样看三国演义再也不会睡着了......
再看看各个大人物的主要操作:
代码模拟各任务操作:

1 public class 关羽
2 {
3 Public void 防守荊州();
4 }
5 public class 张飞
6 {
7 public void 防守荆州前线();
8 }
9 public class 孙权
10 {
11 public void 领兵相助();
12 }
13 publc class 刘备
14 {
15 public void 应战();
16 }
17 publc class 孔明
18 {
19 public void 拟定策略();
20 public void 联合孙权();
21 private void 借东风火攻();
22 }

(以上为伪代码,只为说明问题,缩短文章长度)。
分析一:用例图、活动图、时序图之间的关系
分析二:类图与时序图之间的关系
类图描述系统的静态结构,时序图描述系统的动态行为。
若出现了一个新的消息(不是类中的操作),则需要为类添加一个新的操作。
为类c添加k操作。如果这里不容易理解,可以参考上面的赤壁大战的时序图,你就知道该新加的操作到底是类B的还是C的。
时序图的作用
用对象间的交互来描述用例。(注意是对象间的)
寻找类的操作。
时序图的概念
时序图描述了对象之间传递消息的时间顺序,它用来表示用例的行为顺序。
时序图的组成
对象
对象是类的实例,对象是通过类来创建的,我们可以把类看作是创建对象的模版。
对象的符号
时序图中的每个大峡谷显示单独的列里。
对象的左右排列位置
对象的左右顺序并不重要,但是为了画图画的清晰整洁起见,通常应遵循一下两个原则:
(1)把交互频繁的对象尽可能地靠拢。
(2)把初始化整个交互活动的对象(有时是一个参与者)放置在最左边。
生命线lifeline
表示对象的生存时间。生命线从对象创建开始到对象销毁时终止。
对象在生命线上的两种状态:休眠状态、激活状态。
消息
消息的概念:
对象之间的交互是通过相互发消息来实现的。一个对象可以请求(要求)另一个对象做某件事件。
消息从源对象指向目标对象。消息一旦发送便将控制从源对象转移到目标对象。
时序图中,消息的阅读顺序是严格自上而下的。
消息的类型与符号
实例:同步异步
你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
你叫我去吃饭,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。
所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。^_^!
(1)简单消息
简单消息是没有区分同步和异步的消息。
简单消息用从一对下岗的生命线指向另一个对象的生命线的直线箭头来表示,箭头上面标出消息名。
(2)同步消息
消息的发送者把进程控制传递给消息的接收者,然后暂停活动,等待消息接收者的回应消息。
你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
(3)异步消息
消息的发送者将消息发送给消息的接受者后,不用等待回应的消息,即可开始另一个活动。
你叫我去吃饭,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。
激活
激活的概念
当一个对象没有被激活期时,该对象处于休眠状态,什么事都不做,但它仍然存在,等待新的消息来激活它。
当一条消息被传递给对象的时候,它会触发该对象的某个行为,这就是说该对象被激活了。
当一个对象处于激活期时,表明该对象正处于执行某个动作。
激活的符号
激活用一个细长的矩阵框(在生命线上)表示。
矩形框的高度表示对象执行一个操作所经历的时间段,矩形的顶部表示动作的开始,底部表示动作的结束。
对象接收消息后可以由自己的某个操作来完成,也可以通过其他对象的操作来完成。
时序图的Rose建模
一、新建一个时序图
方法1:
方法2:右击某个用例,如下图所示
这种便于将用例图与时序图衔接起来
二、重命名并双击该时序图
三、添加对象
方法1:利用已经存在(创建)的类
a.从浏览器中将类(事先已创建)拖到时序图中
b. 双击该对象以设置对象的名称
方法2:新建对象,然后给该对象指定一个类
a.通过工具栏的对象按纽在时序图中添加一个对象
b.双击对象,给该对象指定一个类或新建一个类
四、添加消息
1、添加简单消息
a.使用此按纽在两个对象之间拖动
b.双击消息,在弹出的窗口中设置消息的名称
2、添加同步消息
方法:双击简单消息,在弹出的对话框选择“detail”选项
卡,选中”procedure a call”
3、添加异步消息
方法:双击简单消息,在弹出的对话框选择“detail”选项
卡,选中”Asynchronous”
4、删除对象
方法1:在”edit”菜单中选择“Delete from Model”
方法2:ctrl+D
5、时序图中的常用设置
以嵌套的形式显示消息的序号
取消或隐藏消息的编号
显示或隐藏激活条
(1)以嵌套的形式显示消息的序号
选择菜单【 Tools->Options 】,弹出以下对话框,选择 Diagram选项卡,选中Hierarchical Message
(2)取消或隐藏消息的编号
选择菜单【 Tools->Options 】,弹出以下对话框,选择 Diagram选项卡,选中或取消Sequence numbering
(3)显示或隐藏激活条
选择菜单【 Tools->Options 】,弹出以下对话框,选择 Diagram选项卡,选中或取消Focus of control
总结
时序图到此结束,如果有需要补充的可以留言,lz定补上。
时序图还是听复杂的,遇到问题得好好分析......
矩形框的高度表示对象执行一个操作所经历的时间段,矩形的顶部表示动作的开始,底部表示动作的结束。
对象接收消息后可以由自己的某个操作来完成,也可以通过其他对象的操作来完成。
比如下面的三张图表达的意思就不同了:
如果能把这三个图的区别搞明白了,时序图也掌握的差不多......Thinking.....
![]() |
作者:Wolfy |
sequence diagram的更多相关文章
- 顺序图(Sequence Diagram)
顺序图(Sequence Diagram)对系统的动态方面来建模. 顺序图是强调消息时间顺序的交互图. 协作图则是强调接收和发送消息的对象的结构组织的交互图 如何对动态方面建模? 所谓动态文面,即 ...
- 时序图 Sequence Diagram
时序图(Sequence Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的. 时序图中显示的是参与交互的对象及其对象之间消息交互的顺序. 下面这张图介绍了时序图的基本内容: 下面这张 ...
- UML建模之时序图(Sequence Diagram)
一.时序图简介(Brief introduction) 二.时序图元素(Sequence Diagram Elements) 角色(Actor) 对象(Object) 生命线(Lifeline) 控制 ...
- 【UML】-NO.44.EBook.5.UML.1.004-【UML 大战需求分析】- 顺序图(Sequence Diagram)
1.0.0 Summary Tittle:[UML]-NO.44.EBook.1.UML.1.004-[UML 大战需求分析]- 顺序图(Sequence Diagram) Style:DesignP ...
- UML建模之时序图(Sequence Diagram)<转>
UML建模之时序图(Sequence Diagram) 一.时序图简介(Brief introduction) 二.时序图元素(Sequence Diagram Elements) 角色(Acto ...
- 顺序图(Sequence Diagram)
顺序图(Sequence Diagram): 是一种强调对象间消息传递次序的交互图,又称为时序图或序列图.描述了在一个用例或操作的执行过程中对象如何通过消息相互交互,说明了消息如何在对象之间被发送和接 ...
- ACGallery I: Sequence diagram for reading photos:
AC Photo Gallery is an open-source web app, which designed to organize photos/albums. Codes on Githu ...
- UML时序图(Sequence Diagram)学习笔记
什么是时序图时序图(Sequence Diagram),又名序列图.循序图,是一种UML交互图.它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作. 让我们来看一看visio2016对时序 ...
- [UML]UML系列——时序图(顺序图)sequence diagram
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...
随机推荐
- Swift初体验(两)
// 写功能初体验 func getMyName(firstName first:String, lastName last:String) -> String{ //return first ...
- Compare .NET Objects对象比较组件
Compare .NET Objects对象比较组件 阅读目录 1.Compare .NET Objects介绍 2. Compare .NET Objects注意事项 3.一个简单的使用案例 4.三 ...
- SQL于DML(数据库操作语言)采用
1.Insert语句: INSERT [INTO] table [(column1, column2, column3, . . .)] VALUES(value1, value2, value3, ...
- mysql_navicat_快捷键
快捷键能节省很多时间,之前一直研究oracle,plsql有自定义自动补全, 比如 sf 直接回车 可以出现 select * from 等等(参照http://www.cnblogs.com/cph ...
- 数据库数据导出成XML文件
在数据库中,怎样把库中的数据导出XML文件, sql语句如下: SELECT * FROM 表名 FOR XML AUTO, ELEMENTS
- 步步详解近期大火的density_peak超赞聚类
近期忙着在公司捣腾基于SOA的应急框架,还是前两周才在微博上看见了density_peak,被圈内好些人转载. 由于这个算法的名字起的实在惹眼,都没好意思怎么把这个算法名字翻译成中文,当然更惹眼的是, ...
- PHP版本的区别
原文:PHP版本的区别 以为这个已经写过了,发现没有,赶紧补充下. PHP的版本,自从进入5以后,发布新版本速度明显提升很多,从PHP5.2开始,5.3 .5.4 .5.5,就快要6.0了. 注:ec ...
- 多线程学习之五超时模式Timer
timed[超时模式]案例:一个线程提供下载数据,另一个线程执行下载,如果有5秒钟以上,提供下载的线程没有提供数据,下载线程因超时异常,停止下载线程运行. 超时异常类 /** * */ package ...
- uptime命令具体解释——linux性能分析
基本使用: uptime [-V] 实际分析: 这里因为命令比較简单,所以我们不进行具体地介绍.但越是简单的命令,就越是好用方便.像之前百度面试运维的时候,面试管问我哪个命令能够看得到系统负载.我立即 ...
- web设计师和前端设计师的互动—前端工程师应该具备的三种思维
如果你是一个天才工程师(马上可以离开),可以独立完成一个很多事情,你可以是一个怪咖,因为我相信没有一个人不会不佩服你.但现实归现实,多数人都不是天才,而我们在职场上也不是单打独斗,我们需要团队合作,需 ...