转载: https://www.cnblogs.com/wolf-sun/p/UML-Sequence-diagram.html

引言

用例图、类图、活动图、时序图之间是什么关系?

时序图有什么作用?

先来模拟一下三国演义的赤壁之战的时序图,先知道它到底长什么样子,再深入介绍:

小伙伴惊呆了,这样画战略图,一目了然,原来著名的战役是这么回事。这样看三国演义再也不会睡着了......

再看看各个大人物的主要操作:

代码模拟各任务操作:

public class 关羽
{Public void  防守荊州();
}
public class 张飞
{public void  防守荆州前线();
}
public class 孙权
{public void  领兵相助();
}
publc class 刘备
{public void 应战();
}
publc class  孔明
{public void   拟定策略();public void  联合孙权();private void 借东风火攻();
}

分析一:用例图、活动图、时序图之间的关系

分析二:类图与时序图之间的关系

类图描述系统的静态结构,时序图描述系统的动态行为。

若出现了一个新的消息(不是类中的操作),则需要为类添加一个新的操作。

为类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

总结

矩形框的高度表示对象执行一个操作所经历的时间段,矩形的顶部表示动作的开始,底部表示动作的结束。

对象接收消息后可以由自己的某个操作来完成,也可以通过其他对象的操作来完成。

比如下面的三张图表达的意思就不同了:

如果能把这三个图的区别搞明白了,时序图也掌握的差不多......Thinking.....

【UML基础教程】- 时序图(顺序图)sequence diagram相关推荐

  1. UML基础(四)--顺序图

    一.顺序图概念 强调消息时间顺序的交互图.用于表示用例的行为顺序.类图仅描述类之间的静态的关系,顺序图是动态的. 1. 顺序图的元素: a. 角色 b. 对象        对象:类名:        ...

  2. UML教程4:顺序图

    文章目录 大纲 四.顺序图 4.1 概要 4.2 顺序图中的事物及解释 4.3 顺序图与用例图和类图的关系 4.4 顺序图例子 本文转载自:https://www.cnblogs.com/leafsu ...

  3. Markdown画流程图、时序图(顺序图)、甘特图

    typora 画流程图.时序图(顺序图).甘特图 复制以下代码使用 typora 的源码模式粘贴到编辑器中查看效果: 以下几个实例效果图如下: 1.横向流程图源码格式: ```mermaid grap ...

  4. UML实践----用例图、顺序图、状态图、类图、包图、协作图

    http://www.uml.org.cn/oobject/200901203.asp UML实践----用例图.顺序图.状态图.类图.包图.协作图 2009-01-20 作者:Randy Mille ...

  5. python雷达图详解_Python基础教程 - matplotlib实现雷达图和柱状图

    原标题:Python基础教程 - matplotlib实现雷达图和柱状图 Python基础教程记录 - 使用matplotlib实现雷达图和柱状图. 注:主要是设置add_subplot(133),分 ...

  6. UML基础教程(内部使用教程) 非常不错的ppt!!强烈推荐

    UML基础教程(内部使用教程) 非常不错的ppt http://wenku.baidu.com/view/66de89d63186bceb19e8bb1e.html 大家可以参考下 目录 1. 前言 ...

  7. 【软件工程——UML基础教程】

    UML基础教程 1.前言 1.1 前言 1.2 UML概述 1.2.1 UML简介 1.2.2 UML模型图的构成 1.3 UML事物 1.3.1 构件事物 1.3.2 行为事物 1.3.2 分组事物 ...

  8. 类图 顺序图 活动图 状态图 用法和比较

    使用电梯仿真系统来解释下列各种图的关系 类图 为什么要使用用类图: 我们在开发系统的时候是不是经常采用 分而治之  的思想 即将其分解为较为简单的子系统. 而使用类图道理也是一样,目的就是为了简化逻辑 ...

  9. 一张图阐述UML时序图(顺序图)的画法【软件工程】

    文章目录 I.介绍时序图 II.一图搞定时序图画法 I.介绍时序图 时序图(Sequence Diagram)也叫顺序图,是显示对象之间交互的图,这些对象是按时间顺序排列的.时序图中显示的是参与交互的 ...

  10. UML 建模步骤 用例图 类图 对象图 包图 顺序图/时序图 状态图 活动图 协作图

    统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明.可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言. UML是面向对象设计的建 ...

最新文章

  1. python读取csv文件第一行_尝试读取CSV文件的第一行返回['/']
  2. 腾讯发布最新开源jdk!
  3. dockerfile常用命令
  4. 麦田在线携手网易云信,开启手机智能找房新时代
  5. Jquery中$(document).ready(function(){ })函数的使用详解
  6. pythontk多线程_把python程序变成多线程
  7. golang的指针和切片
  8. 如何在 macOS 中使用选项卡?
  9. rgb矩阵Android程序,Android ColorMatrixColorFilter
  10. 计算机领域EI和SCI收录期刊、影响因子及国际会议
  11. 手势密码解锁微信小程序项目源码
  12. 计算机等级考试二级C语言考试环境VS2010学习版以及免费题库
  13. 各个地区2.4G及5G信道一览表
  14. MongoDb(六)索引原理和命令
  15. Windows10无法启动windows安全中心服务怎么办?
  16. 怎么给pdf文件插入页码,有什么简单的方法?
  17. 算术左移、算术右移、逻辑右移
  18. 从酷狗的网络红歌说起
  19. android模拟power键,android 发送模拟按键
  20. 论文研读 —— 6. ImageNet Classification with Deep Convolutional Neural Networks (3/3)

热门文章

  1. 【LeetCode】跳跃游戏Ⅰ~Ⅵ(我真的跳晕了@_@)
  2. A* 流程+代码详细注释
  3. Ubuntu16.04 使用apt-get安装软件时无法自动安装所需要的依赖
  4. php fpm 开启status,启用php-fpm状态详解
  5. Elasticsearch 如何实现时间差查询?
  6. mysqladmin命令简介
  7. C# AssemblyInfo.cs文件的作用
  8. 布局管理器——表格布局
  9. Linux服务器如何添加永久路由
  10. 解决VScode任务栏图标异常的可能办法