2.设计模式常用的UML图分析(用例图、类图与时序图)
1-用例图
概述
展现了一组用例、参与者以及他们之间的关系。
用例图从用户角度描述系统的静态使用情况,用于建立需求模型。
用例特征
- 保证用例能够正确捕捉功能性需求,判断用例是否准确的依据。
用例是动宾段誉
用例是相互独立的
用例是由用户参与者启动的
用例要有可观测的执行结果
一个用例是一个单元
参与者 Actor
- UML中,参与者使用一个小人表示:

参与者为系统外部与系统直接交互的人或事务,于系统外部与系统发生交互作用
参与者是角色而不是具体的人
代表参与者在与系统打交道时所扮演的角色
系统实际运作中,一个实际用户可能对应系统的多个参与者。不同角色也可以只对应一个参与者,从而代表同一参与者的不通实例
用例 Use Case
系统外部可见的一个系统功能单元。系统的功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达。
系统单元用椭圆表示,椭圆中的文字简述系统功能:
关系 Relationship
常见关系类型有关联、泛化、包含和扩展

关联 Association
表示参与者与用例之间的通信,任何一方都可发送或接受消息。
箭头指向:指向消息接收方:
子系统 SubSystem
- 用来展示系统的一部分功能(紧密联系)

泛化 Inheritance
继承关系,子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象。。
箭头指向:指向父用例

2-类图
- 描述系统中的类,以及各个类之间的关系的静态试图。
- 表示类、接口以及它们之间的协作关系,用于程序设计阶段。
注意:
- 抽象类或抽象方法用斜体表示
- 如果是接口,则在类名上方加 <<Interface>>
- 字段和方法返回值的数据类型非必需
- 静态类或静态方法加下划线
类图实例:
类图中的事务及解释

如图,类图从上到下分为三部分,分别为类名、属性和操作
- 属性:如果有属性,则每一个属性都必须有一个名字,另外还可以有其它的描述信息,如可见性、数据类型、缺省值等
- 操作:如果有操作,则每一个操作也都有一个名字,其它可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等
类图中的六种关系
1.实现关系 implements (类实现接口)
- 用空心三角虚线表示

2.泛化关系 extends (表示一般与特殊的关系) is-a
- 用空心三角实线表示

3.组合关系 (整体与部分的关系) contains-a
- 实心菱形实现表示

eg.有头类、身体类与人类类三个类,则人类类中应包含头类及身体类这两个属性,则人类类与头类和身体的关系即为组合关系。
注: 在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。
4.聚合关系 (整体与部分的关系) has-a
- 空心菱形实线表示
eg.BusDriver类有Hat类与Clothes属性,BusDriver类没了Hat与Clothes仍可存在

注:聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。
5.关联关系(一般关联关系) (对象之间的一种引用关系)
- 关联可以是双向的,也可以是单向的。在 UML 类图中,双向的关联可以用带两个箭头或者没有箭头的实线来表示,单向的关联用带一个箭头的实线来表示,箭头从使用类指向被关联的类。也可以在关联线的两端标注角色名,代表两种不同的角色。

关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。
6.依赖关系
- 依赖关系使用带箭头的虚线来表示,箭头从使用类指向被依赖的类。

类关系的记忆

3-时序图
时序图将交互关系表示为一个二维图
注:
- 主要用于展示对象之间交互的顺序。
- 纵向代表时间轴,时间沿竖线向下延伸。
- 横向代表了在协作中各独立对象的类元角色。
- 类元角色用生命线表示。
- 当对象存在时,角色用一条虚线表示。
- 当对象的过程处于激活状态时,生命线是一个双道线。
- 消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。

生命线
- 生命线可带下划线
- 当使用下划线时意味着序列图中的生命线代表一个类的特定实体。

同步消息&
同步消息: 发送人再它继续之前将等待同步消息相应

异步消息:在发送方继续之前无需等待相应的消息

注释
虚线引出一条说明注释

约束
约束格式: [Boolean Test]

组合片段
用来解决交互执行的条件和方式,它允许在时序图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域。
类型与说明如下:

抉择Alt:抉择用来指明在两个或更多的消息序列之间的互斥的选择,相当于经典的if..else..。

选项Opt:包含一个可能发生或不发生的序列

循环Loop:片段重复一定次数。 可以在临界中指示片段重复的条件。

时序图的画法及应用实践
- 绘制交互场景中的角色及对象梳理出来
- 从出发某个交互的某个消息开始,在生命线之间从上到下依次画出所有消息。
eg.学生在教务系统中查询其课程的成绩
在本例中,角色有学生,对象有教务系统、课程、成绩。
对象的梳理是一个相对主观的过程,比如本例中,课程以及成绩分别作为了对象存在,也可以合并为数据库这一个对象。请注意:角色以及对象,都为名词,动词不可作为角色和对象,如“成绩查询”不可作为对象。

学生的登录验证作为本时序图的前置行为,可直接引用到本时序图中,也可忽略不画;学生进入成绩查询页面后,页面会加载本学生的成绩查询课程列表,并显示出课程对应的成绩。

2.设计模式常用的UML图分析(用例图、类图与时序图)的更多相关文章
- 设计模式常用的UML图------类图
关系 UML将事物之间的联系归纳为6种,对应响应的图形 关联 定义:表示拥有的关系,具有方向性,一个类单向访问一个类,为单向关联.两个类可以相互访问,为双向关联. 聚合 定义:整体与部分的关系. 组合 ...
- UML分析AsyncDisplayKit框架-ASMuplexImageNode异步下载时序图。
PS:博客园图片服务器不正常工作,数据上传后服务器返回http500,园方迟迟还没解决. 我从2016-01-18 05:52向园方反馈问题-请问博客园的图片服务器有在正常运行吗,至此时2016-01 ...
- Python设计模式 - UML - 时序图(Sequence Diagram)
简介 时序图表示参与者与对象之间.对象与对象之间的动态交互过程及时序关系. 时序图详细而直观地展示了对象随时间变化的状态.调用关系和消息时序,时序图中的主要元素有:参与者(Actor), 对象(Obj ...
- [UML]UML系列——时序图(顺序图)sequence diagram
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...
- UML图 | 时序图(顺序、序列图)绘制
上一次写过一篇 UML | 类图 相关的文章,平时规范开发会用的上,或者是写什么文档,就还是需要画图,就像毕业设计就是如此.希望能够帮助到大家. 注:本文中所用画图软件为 Microsoft Visi ...
- 阅读UML类图和时序图
这里不会将UML的各种元素都提到.我仅仅想讲讲类图中各个类之间的关系. 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同一时候,我们应该能将类图所表达的含义和终于 ...
- UML建模之时序图(Sequence Diagram)<转>
UML建模之时序图(Sequence Diagram) 一.时序图简介(Brief introduction) 二.时序图元素(Sequence Diagram Elements) 角色(Acto ...
- UML之类图、时序图、用例图 粗略版介绍
UML 概述 UML(Unified Modeling Language):统一(标准)建模语言,是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析 ...
- UML 用例图,时序图,活动图的定义以及区别
1.用例图,时序图,活动图的定义 1.用例图: 用例图描述了系统提供的一个功能单元.用例图的主要目的是帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的"角色" ...
随机推荐
- Spring WebFlux 基础教程:WebSocket 使用
WebSocket 协议简介 WebSocket 协议提供了一种标准化的方式,在客户端和服务端建立在一个TCP 连接之上的全双工,双向通信的协议. WebSocket 交互开始于 HTTP 请求,使用 ...
- Linux命令(六)之防火墙iptables的相关操作以及端口的开放
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- 保存Total Commander的列宽
Total Commander的默认列宽经常显示不全内容,需要手工调整,用"Menu -> Configuration -> Save Position"可以永久保存列 ...
- NSIS 制作自动升级包
1:首先定义基础变量 !define PRODUCT_NAME "XXX"//补丁名称 !define PRODUCT_VERSION "3"//版本号 !de ...
- 华为应用市场更新APP多次被拒
最近公司的APP发布了新版本,只进行了线上bug的修复,基本没改什么主体业务功能.各大应用市场都顺利更新上架,但是国货之光华为,被闷了几次.拒来拒去,就是那些反复的内容.内容一般如下: 经检测发现,您 ...
- shell——sort、uniq、tr、cut和eval命令
一.排序命令sort 以行位单位对文件内容进行排序,也可以根据不同的数据类型进行排序 格式:sort [选项] 参数 格式:cat file | sort 选项 1.2常用选项 选项说明 -f 忽略大 ...
- Vue系列-01-基础语法
vue.js文件 # https://blog-static.cnblogs.com/files/lichengguo/vue.js # 下载该文件,保存的路径为代码同级目录 js/vue.js 文件 ...
- Django ORM多表查询
基于双下划线查询 根据存的时候,字段的数据格式衍生的查询方法 1.年龄大于35岁 res = models.AuthorDetails.objects.filter(age__lt=80) print ...
- Linux通过命令增加IPV6地址
第一步:输入nmcli connection modify "eth0" ipv6.method manual ipv6.address ipv6地址/64 ifname et ...
- APIO 2007 动物园 题解
链接题面 看清楚找到小数据范围,第一维表示遍历到的栅栏,第二维是五位状态 先预处理每个状态会使多少小朋友高兴 方程是 f[i][j]=max(f[(i&((1<<4)-1))&l ...