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系列——类 ...
随机推荐
- 软体project(四)——一生
软件生存周期是软件project中的一个重要概念,把整个生存周期划分为若干个阶段,是实现软件生产project化的重要步骤. 软件的生存周期一般划分为软件计划.软件开发和软件执行三个时期,例如以下图: ...
- 持续集成Jenkins + robot framework + git
Jenkins + robot framework + git持续集成 一.Jenkins安装插件 进入系统管理—插件管理—可选插件下安装以下插件Git Client Plugin.GIT plugi ...
- C语言星号的秘密
C语言星号的秘密 星号的秘密 1.乘法运算符 2.定义指针 int *p = 0; 还是 int* p = 0;? 后一种比较容易这样理解:定义了一个变量p,它是指针型的(更详细一点,是指向int ...
- 带格式分离两个RichEditControl的文本
using( RichEditControl selector = new RichEditControl() { RtfText = richTextFromHtml } ) { DocumentR ...
- linux在构建SVNserver
最近搞了一个云计算server,一些尝试部署server相关的东西.作为用显影剂server.首先要考虑的是建立SVNserver.关于构建过程记录.方便以后. 一.安装svn软件.有些云server ...
- Html5 の 微信飞机大战
(function () { var imageUrl = "images/"; //获取画布对象 var c = $("#game-box").get(0); ...
- 引擎介绍 - REngine
引擎介绍 - REngine 规则引擎 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策.接受数据输入,解释业务规 ...
- Oracle 11g sys,system 密码忘记设置解决办法
原文:Oracle 11g sys,system 密码忘记设置解决办法 1.启动sqlplus 2.请输入用户名: sqlplus/as sysdba 3.输入口令: 直接回车 4.连接到: Ora ...
- 关于session_start()这个问题
关于session_start()这个问题,其实网上很多解决的方法,论坛也好多人回答这类的问题, 现在的状况是依然有警告提示Warning: session_start() [function.ses ...
- tornado settings想到的
今天有足够多的时间来看看Tornado中RequestHandler和Application这两个类的关系. 昨天想要调用settings中的内容,找了好半天不知道怎么在handler中使用setti ...
