B 端产品必修课:UML入门

UML是一种开放的方法,主要包括图表中的十一种,那在本次的介绍中,只讲解类图、构件图、部署图、活动图、状态机图、顺序图、用例图。那么UML常用的图都包含哪些呢?它们都在什么场景什么阶段使用?如何使用?本文作者帮小伙帮解决这些问题。

B 端产品必修课:UML入门

01、什么是 UML?

UML (Unified Modeling Language)全称为统一建模语言,由对象管理组(OMG)负责,是面向对象设计的可视化建模语言,独立于任何具体程序设计语言。

UML 标准定义了用于指定业务和软件系统的符号和规则,并且规则说明了如何连接和使用这些元素。

目前已经发布到了 2.5.1 版本,历史版本如下图。

B 端产品必修课:UML入门

02、为什么用 UML?

语言的目的在于沟通交流,作为一门可视化的图形语言,“可视化”和“图形”是重点,也是让 UML 出彩的点。在复杂需求设计时,使用图永远能让人更容易理解,能在开发前期对架构有更好的沟通和协作,最终实现优秀设计。

当然,作为一名 B 端产品经理,使用 UML 的目的很简单,提高抽象水平以及让研发童鞋更好的理解。有道是:一图抵千言。

03、UML 图分类

UML 2.0 定义了 13 种图类型,分为三类:

  • 结构图:定义了一个模型的静态架构,对构成模型的‘要素’建模。
  • 行为图:描绘了系统的动态视图或系统的行为。
  • 交互图:描述了系统中各种用例元素之间的流程

B 端产品必修课:UML入门

当然,这么多 UML 图,实际并不是每种都需要,下面就简单介绍常用的两种:类图和状态机图。

04、常用图–类图

1、组成

类是对现实世界中一组具有相同特征的物体的抽象。在 UML 类图中,类使用包含类名称、属性(field) 和方法(method) 且带有分割线的矩形来表示。

B 端产品必修课:UML入门

其中,有一种特殊的类——接口,这个需要明确一下,其组成和通用有点差异。

B 端产品必修课:UML入门

第 1 层是接口名,并且使用<<>>标识接口名。第 2 层是接口中约定的方法。

2、可见性

在属性/方法前,还可以加参数,来表示可见性。
B 端产品必修课:UML入门

如上文中接口图例,+ 代表为公共方法。

3、多重性

在类图中,关系连线的两端有时会有1、*等符号,这些代表着不同映射关系。

B 端产品必修课:UML入门

4、关系

类与类之间,存在各种关系,如关联、依赖、泛化、实现、聚集和组成。

B 端产品必修课:UML入门

4.1 关联

关联关系是对象之间的一种引用关系,表示一个类和另外一个类之间的联系,如领导和员工,父母和子女等。

关联关系有单向和双向的。在UML类图中,单向关联用一个带箭头的实线表示,箭头从使用类指向被关联的类,双向关联用带箭头或者没有箭头的实线来表示。

B 端产品必修课:UML入门

上图表示老师和学生之间的关系是双向的,一个老师可以有多个学生,一个学生也可以有多个老师。学生和课程之间是单向的,一个学生会学习多门课程,而课程是一个抽象的概念,它不拥有学生。

4.2 依赖

依赖关系是一种使用关系,表示某个类依赖于另外一个类,通常表现为,某个类的方法的参数使用了另外一个类的对象。

B 端产品必修课:UML入门

这里记住,中间为虚线,箭头指向依赖的一侧。就比如,人需要依赖食物,才能存活。

4.3 泛化(继承)

泛化关系其实就是父子类之间的继承关系,表示一般与特殊的关系,指定子类如何特殊化父类的特征和行为。

B 端产品必修课:UML入门

在UML类图中,用带空心三角箭头的实线来表示泛化关系,箭头从子类指向父类。如上图,父类有一个吃的方法,好人和坏人都继承于这个。但是,好人做好事,坏人做坏事。

4.4 实现

实现关系就是接口和实现类之间的关系。类实现了接口中的抽象方法。

B 端产品必修课:UML入门

在UML类图中,用带空心三角箭头的虚线来表示实现关系,箭头从实现类指向接口。如上图,北京大学和清华大学分别实现了大学接口。

4.5 聚集

聚合关系是关联关系的一种,表示整体和部分之间的关系。例如部门和员工,学校和老师。

B 端产品必修课:UML入门

在UML类图中,用带空心菱形的实线来表示聚合关系,菱形指向整体。

4.6 组成

组合关系是整体和局部的关系,属于关联的一种,和聚合相似。和聚合分类的依据主要是能否单独存在,例如部门和个人,是聚合。而公司和部门,是组合,毕竟公司没了,部门也就没了。再比如,身体和大脑。

B 端产品必修课:UML入门

在UML类图中,用带实心菱形的实线来表示组合关系,菱形指向整体。

下面有从网上找到的一张图,我自己经常用来复习各种关系的概念。

B 端产品必修课:UML入门

总的来说,关系从强到弱分别是:实现关系 = 泛化关系 > 组合关系 > 聚合关系 > 关联关系 > 依赖关系 。

05、常用图–状态机图

状态机全称是有限状态机,状态机图描述了一个对象在生命周期内所经历的各种状态,以及引起状态变化的事件。流程图更多表达的是“操作”的前后顺序,对于对象和状态之间的变化不能够直观的表现。

1、组成

简单来说,状态机图有四要素组成:状态机图 = 开始状态 + 状态 + 转移 + 结束状态。

其中,四个要素描述分别如下:

  • 开始状态:开始状态是一个实心圆
  • 状态:状态指对象的生命周期中满足某些条件、执行某些活动时条件。
  • 转移:状态的转移是由事件触发,是一个特定的动作或者行为。
  • 结束状态:结束状态是一个同心圆。

B 端产品必修课:UML入门

2、详解

在 UML 图中,状态分为简单状态和复杂状态。复杂状态中还可以添加活动,活动是在该状态时要执行的动作。另外,状态还有嵌套嵌套行为的组合状态,不过这种用的比较少,有需要可以自行了解。

B 端产品必修课:UML入门

  • entry(入口动作):进入该状态时的特定动作。
  • do(内部活动):状态保持不变时执行的动作。
  • event:接受到某个动作时执行的动作,不会退出状态本身。
  • exit(出口动作):退出该状态时的特定动作。

转移描述对象在两种状态间的转变。当某个特定事件发生并且满足特定的条件,对象操作特定的动作,从现态进入次态。

B 端产品必修课:UML入门

转移的发生由「事件[守卫条件]/动作」组成,如果条件满足,则状态发生转移。如当我码字 2000 时,我就不写了,文章进入码字完成的状态。

当然,条件判定还有一种不太规范的用法,比如使用流程图中的菱形。

B 端产品必修课:UML入门

3、订单状态机

以非常典型的订单状态机图为例,下面为一个简陋的原型。

B 端产品必修课:UML入门

  1. 待支付:代表买家下单了但是还没有付款。
  2. 待发货:代表买家付款了卖家还没有发货。
  3. 已发货:代表卖家已经发货并寄出商品了。
  4. 已完成:代表买家已经确认收到货了。
  5. 退款中:代表买家付款后取消订单。
  6. 交易关闭:代表订单过期了买家也没付款、或者卖家关闭了订单。

参考资料

1、https://www.uml.org/

2、http://www.srcmini.com/37800.html

3、https://segmentfault.com/a/1190000021317534

业界动态

无限迭代:内容创作的产品化思考

2021-4-6 9:37:43

业界动态

不敢给钱,算个屁老板

2021-4-6 9:42:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索