【设计模式】十、UML急速入门

54 阅读6分钟

这是我参与「掘金日新计划 · 2 月更文挑战」的第 5 天,点击查看活动详情

系列文章|源码

github.com/tyronczt/de…

定义-是什么

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

它以图形的方式来描述软件的概念。

思考-为什么

一个软件项目要经历业务调研、立项、需求采集、架构设计、编码开发和测试验证等多个环节。

每个环节可能角色并不相同,同样的文档同样的话语越向后传递就越容易失真。因此就容易出现最终交付的产品不是客户真正想要的这种情况。

如何避免角色间信息传递的失真,保证信息能被准确的传达和准确的理解?一种好的办法就是大家使用标准化的语言。

统一建模语言(UML)就试图用标准化的语言来覆盖整个软件过程,让不同团队不同角色可以用相同的语言顺畅的沟通。

在信息传播方面,图形相对于文字,人脑的接受能力显然更强。因此,UML 采用了「可视化」的图形方式来定义语言。

应用-怎么用

UML 建模的核心是模型,模型是现实的简化、真实系统的抽象。 UML 提供了系统的设计蓝图。当给软件系统建模时,需要采用通用的符号语言,这种描述模型所使用的语言被称为建模语言。在 UML 中,所有的描述由事物、关系和图这些构件组成。下图完整地描述了所有构件的关系。

本文主要讲解 类图时序图,更加详细介绍可以参考最后第一、第二个链接文章;

类图

UML箭头方向: 从子类指向父类

摘自大话设计模式

这张图关系比较全面,如果理解透了类图也就掌握了。

动物

先从“动物”矩形框入手,它代表一个类(Class)。类图分三层:

  1. 第一层显示类的名称,如果是抽象类,则就用斜体显示;
  2. 第二层表示类的特性,通常就是字段和属性;
  3. 第三层表示类的操作,通常是方法或行为。

注意前面的符号,“+”表示public,“-”表示private,“#”表示protected,“~”表示default 默认,下划线表示static;

飞翔

注意左下角的“飞翔”,它表示一个接口图,与类图的区别主要是顶端有 <>显示。第一行是接口名称,第二行是接口方法。接口还有另一种表示方式,俗称棒棒糖表示法,就是唐老鸭类实现了“讲人话”的接口。

时序图

时序图(Sequence Diagram),亦称为序列图、循序图或顺序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

时序图是一个二维图,横轴表示对象,纵轴表示时间,消息在各对象之间横向传递,依照时间顺序纵向排列。

作用

  1. 展示对象之间交互的顺序。将交互行为建模为消息传递,通过描述消息是如何在对象间发送和接收的来动态展示对象之间的交互;
  2. 相对于其他UML图,时序图更强调交互的时间顺序;
  3. 可以直观的描述并发进程。

组成元素

  1. 角色(Actor)

系统角色,可以是人、机器、其他系统、子系统;在时序图中用表示。

  1. 对象(Object)

第一种方式包括对象名和类名,例如:直播课时:课时,在时序图中,用“对象:类”表示;

第二种方式只显示类名,即表示它是一个匿名对象,例如: :课程;在时序图中,用“:类”表示;

第三种方式只显示对象名不显示类名,例如:讲师;在时序图中,用“对象”表示。

  1. 生命线(Lifeline)

在时序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间。

  1. 控制焦点(Focus of Control)

又称为激活期,表示时间段的符号,在这个时间段内对象将执行相应的操作。它可以被理解成C语言语义中一对花括号{ }中的内容;用小矩形表示。

  1. 消息(Message)

消息一般分为同步消息(Synchronous Message),异步消息(Asynchronous Message)和返回消息(Return Message)。

消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义;

消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。

返回消息表示从过程调用返回。

  1. 自关联消息

表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。

  1. 组合片段

组合片段用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。组合片段共有13种:抉择(Alt)、选项(Opt)、循环(Loop)、并行(Par)、中断(Break)、关键(Critical)、弱顺序(Seq)、强顺序(Strict)、考虑(Consider)、忽略(Ignore)、断言(Assert)、否定(Neg)。

例子

摘自:blog.csdn.net/fly_zxy/art…

时序图解释:

1,用户输入手机密码

2,打开手机

3,打开微信扫一扫

4,返回微信扫一扫界面

5.1 扫描商家收款码

5.2 商家生成收款二维码

5.3 返回收款二维码

5.4 识别商家收款码

6,提示用户输入微信支付密码

7.1 输入微信支付密码

7.2 微信验证用户输入密码正确

7.3 向商家汇款

7.4 汇款成功

8,提示用户支付成功

参考

UML 教程_w3cschool

万字多图 | UML 入门指南

UML急速入门 | MRCODE-BOOK

『十倍程序员』一文弄懂UML

UML一一 类图关系 (泛化、实现、依赖、关联、聚合、组合)

快速学习时序图

UML时序图(Sequence Diagram)学习笔记