vlambda博客
学习文章列表

设计模式前戏-UML

一、前言

接下来的一段时间我会和大家一起学习GoF23,即设计模式,在学习设计模式之前呢,希望大家可以具备一些前置能力
首先,你要拥有一颗爱学习的心
其次,你应该拥有面向对象的基础,即了解继承、封装、多态的基本概念和使用
最后,也就是本篇文章要讲的内容:UML类图

二、什么是UML

简介

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

三、为什么要学UML

  • UML是面向对象设计的建模工具,独立于任何具体程序设计语言这就可以很好的帮助不同语言开发者对相同产品进行交流和理解

  • UML用于说明、可视化、构建和编写一个正在开发的面向对象的、软件密集系统的制品,可以对整个软件系统有更加直观的认识

    制品可包括在软件开发过程中的模型、流程图、测试用例、源代码等

四、UML分类

4.1 结构式图形

强调系统式建模

  • 静态图:类图、对象图、包图
  • 实现图:组件图、部署图
  • 剖面图
  • 复合结构图

4.2 行为式图形

强调系统模型中触发的事件

  • 活动图
  • 状态图
  • 用例图

4.3 交互式图形

属于行为式图形子集合,强调系统模型中资料流程

  • 通信图
  • 交互概述图
  • 时序图
  • 时间图

五、类图

UML作图,推荐一款在线软件https://www.processon.com/

简介

类图(Class diagram): 用于表示类、接口、实例等之间的静态结构和关系。

作用

  • 在软件工程中,类图是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解
  • 类图是系统分析和设计阶段的重要产物,是系统编码和测试的重要模型

类图并不只有类,还包括接口、抽象类、实例

类图案例

类图案例
  • 关系包括:继承(Inheritance),实现关系(Realization/Implementation),关联关系(Association),聚合关系(Aggregation),组合关系(Composition),依赖关系(Dependency)
  • 关系表现为继承或实现关系(is a)
  • 关联关系表现为变量(has a),其中关联关系包含:聚合关系(Aggregation),组合关系(Composition)
  • 依赖关系表现为方法中的参数(use a)

六、时序图

简介

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

元素

角色(Actor)、对象(Object)、生命线(LifeLine)、控制焦点(Activation)、消息(Message)

时序图案例

时序图案例
  • 上方矩形表示类对象,矩形链接的表示生命线(时间从上向下,上面表示已经流逝的时间,下面是未来),表示对象的生命周期
  • 实线尖头(实心箭头表示同步,空心表示异步)表示方法调用
  • 生命线上的矩形表示实例处于右边箭头描述的活动,
  • 空心箭头表示返回数据,右边箭头对应的活动结束

七、总结

  • UML是一种建模语言, ,可以很好的对系统进行可视化构建
  • 类图对于我们后续学习和使用设计模式提供极大的助力,主要需要关注类图之间的关系、以及类图中图形元素含义
  • 时序图主要帮助我们了解一个业务功能的流程,我们常常在使用第三方平台的接口时会见到,理解常规的时序图元素含义,有助于快速学习使用第三方接口