【转】时序图

http://www.lupaworld.com/article-233409-1.html

系列文章

[UML]UML系列——用例图Use Case

[UML]UML系列——用例图中的各种关系(include、extend)

[UML]UML系列——类图Class

[UML]UML系列——类图class的关联关系(聚合、组合)

[UML]UML系列——类图class的依赖关系

[UML]UML系列——类图class的泛化关系

[UML]UML系列——类图class的实现关系Realization

[UML]UML系列——包图Package

[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.....

时间: 2024-10-12 12:57:02

【转】时序图的相关文章

时序图与状态图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

使用TCP时序图解释BBR拥塞控制算法的几个细节

周六,由于要赶一个月底的Deadline,因此选择了在家VPN加班,大半夜就爬起来跑用例,抓数据...自然也就没有时间写文章和外出耍了...不过利用周日的午夜时间(不要问我为什么可以连续24小时不睡觉,因为我觉得吃饭睡觉是负担),我决定把工作上的事情先放下,还是要把每周至少一文补上,这已经成了习惯.由于上周实在太忙乱,所以自然根本没有更多的时间去思考一些"与工作无关且深入"的东西,我指的与工作无关并非意味着与IT,与互联网无关,只是意味着不是目前我在做的.比如在两年前,VPN,PKI这

[机房重构]UML图(包图、类图、用例图、时序图)

机房重构画图是一个非常重要的一个阶段,机房重构之前也画过UML的图,但是这一次与上一次不同,这一次有分层的思想在里面. 包图 之前三层的时候各层之间的传递很清晰,包图也很容易就画出来了,先来看之前三层的包图.通过实体将输入的信息从U层传入B层,同时通过实体将信息从D层传入B层,B层进行判断,通过实体将结果返回给U层. 之前的三层不能很好的实现低耦和的思想,并且我们学习了设计模式,要继续进行分层,进行七层的编写.之前不太理解,看大家的博客,知道在U层和B层之间加入了外观模式,降低U层和B层之间的耦

《UML精粹》 第四章 时序图

第四章 时序图 一般来说,我们会在一张时序图中画出某个情节的相关行为,图种会秀出这个使用案例(use case)里面可能出现的一些对象,以及在对象间传送的信息. 本章将通过一个简单情节,做时序图各方面的相关讨论.假设我们现在有一份订单,并且准备调用它的一个命令,算出这份订单的价格.为了达到这个目的,订单需要产看它里面所拥有的一些订单明细.决定它们的价格,价格决定方式是以订单明细中所包含产品之定价规则为基础决定的.对所有订单明细做完上述动作之后,接下来订单要算出整个折扣,这时候它是以跟客户绑在一起

摄像头驱动OV7725学习笔记连载(一):OV7725 电器特性和时序图

  OV(豪威科技)已经被中国财团收购.这个昔日的大佬,最终走下神坛.   关于OVsensor的资料包括,OV7725的简介(OmniVsion_OV7725),OV7725的数据手册(OV7725_Datasheet),OV7725 SCCB的接口时序(OmniVision Serial Camera Control Bus (SCCB) Functional Specification),OV7725 寄存器配置手册(OV7725 Camera Module Software Applic

UML之 时序图

本文和大家重点讨论一下UML时序图,UML时序图中包括的建模元素主要有:对象(Actor).生命线(Lifeline).控制焦点(Focusofcontrol).消息(Message)等等. 一.UML时序图简介(Briefintroduction) 时序图(SequenceDiagram)是显示对象之间交互的图,这些对象是按时间顺序排列的.顺序图中显示的是参与交互的对象及其对象之间消息交互的顺序.时序图中包括的建模元素主要有:对象(Actor).生命线(Lifeline).控制焦点(Focus

context构建时序图

ContextLoaderListener构建Root Context时序图 DispatcherServlet创建context时序图:

采用[ICONIX] 方法实践分析和设计之六 [时序图](转)

采用[ICONIX] 方法实践BLOG设计之六 [时序图] 在前几篇文章中,我们分别进行了域模型和用例建模,并使用 Robustness工具进一步分析验证了相应用例的处理流程,并在相应模型(域模型)的基础上,通过Robustness方法引入相关的边界对象,控制对象(控制器),并更新了相应域模型中类的属性(字段).下面就可以进入到交互建模阶段了.如下图:    作为交互建模本身,就是要通过寻找对象之间的交互关系,进而进行方法(操作或行为)分配.    正所谓"只有在所有的用例为所有事件进程建立了交

UML视图(六)时序图

[定义] 时序图(Sequence Diagram),亦称为序列图或循序图,是一种UML行为图.它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作.它可以表示用例的行为顺序,当执行一个用例行为时,时序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件. 时序图与协作图是可以互相转换的,与胁作图不同的是,时序图强调消息事件的发生顺序,更方便于阐述事件流的过程:但是时序图却难以表达对象之间关系. [元素]对象.生命周期线.消息.会话.销毁 对象 参与交互的对象.每个对象都带有一条

UML建模之 - 类图&时序图

简介 简介 UML是面向对象开发中一种通用的图形化建模语言 UML建模技术就是用模型元素来组建整个系统的模型,模型元素包括系统中的类.类和类之间的关联.类的实例相互配合实现系统的动态行为等 UML建模工具 Rational Rose : 是直接从UML发展而诞生的设计工具,常用建模工具 Power Designer : 是对数据库建模而发展起来的一种数据库建模工具 Microsoft Visio :是一种画图工具,Visio 2010才开始引入UML建模,不是很专业 Star UML : 开源轻