🧩 第八章 UML:查看无形软件的工具
📄 一句话概括

13 种图先分结构 6 种 + 行为 7 种两刀——结构图回答【长什么样】,行为图回答【怎么动】。

📝 本节和前面几节的关系

8.1 说 UML 是语言,这一节把它有多少个词数清楚。13 种不必全学,但得知道有哪几类。

一、第一刀:结构与行为

13 种图分两大类:结构图(6 种)看静态形状,行为图(7 种)看动态过程。 结构图的代表是类图(类、属性、方法、关系),行为图的代表是时序图(消息按时间排开)。 先记住这一刀,13 种立刻变成 6 加 7。

二、结构图六种

类图:类、属性、方法、关系——本章的主角。 对象图:某一时刻的真实对象,类图的【快照】。 包图:类按包分组,看命名空间。 组件图:可替换的构件及其接口。 部署图:程序装在哪台机器上,看物理分布。 组合结构图:一个类内部的部件怎么搭。

三、行为图七种

用例图:谁让系统做什么。 活动图:工作流程怎么走,带判定和并行。 状态机图:一个东西的状态怎么变。 时序图:消息按时间排开,看先后。 通信图:对象之间连了哪些线,看耦合。 交互概览图:活动图里嵌时序图,管大流程。 定时图:横轴是时间,看状态持续多久。

四、13 这个数是怎么来的

13 是 UML 2.0 的图数;后来的版本又加了制品图、概览图之类,但书按 13 种讲。 数不重要,会挑才重要——8.3 会看到,三种用法加起来只用到 7 种。 学 UML 的通病是把 13 种当任务清单,结果一种都不熟。

五、动手 Demo:UML有13种图形

把 13 种图形按结构/行为两栏列出来。 每种后面标一句【它看什么】。

struct = [("类图", "类、属性、方法、关系"),
          ("对象图", "某一时刻的真实对象"),
          ("包图", "类按包分组"),
          ("组件图", "可替换的构件"),
          ("部署图", "程序装在哪台机器"),
          ("组合结构图", "一个类内部的部件")]

behav = [("用例图", "谁让系统做什么"),
         ("活动图", "工作流程怎么走"),
         ("状态机图", "一个东西的状态怎么变"),
         ("时序图", "消息按时间排开"),
         ("通信图", "对象之间连了哪些线"),
         ("交互概览图", "活动图里嵌时序图"),
         ("定时图", "时间轴上的状态")]

print(len(struct), len(behav), len(struct) + len(behav))   # 6 7 13

实跑输出:

--------------------------------------------------------------------
UML有13种图形
--------------------------------------------------------------------

  13 种图形,按【看结构】和【看动作】分成两大类:

  图形           大类     看什么
  ---------------------------------------------
  类图           结构     类、属性、方法、关系
  对象图         结构     某一时刻的真实对象
  包图           结构     类按包分组
  组件图         结构     可替换的构件
  部署图         结构     程序装在哪台机器
  组合结构图     结构     一个类内部的部件
  用例图         行为     谁让系统做什么
  活动图         行为     工作流程怎么走
  状态机图       行为     一个东西的状态怎么变
  时序图         行为     消息按时间排开
  通信图         行为     对象之间连了哪些线
  交互概览图     行为     活动图里嵌时序图
  定时图         行为     时间轴上的状态

      结构类图形                  6 种
      行为类图形                  7 种
      合计                        13 种

  **13 种不是要你全学**——下面 8.3 会看到,三种用法一共只用到 7 种。
  **先分清【结构图】和【行为图】这一刀**,13 种立刻减半记忆量。
  **结构图回答【长什么样】,行为图回答【怎么动】。**

实测:结构 6 种、行为 7 种、合计 13 种。 6 加 7 这个分法不是记忆技巧,是 UML 本来的分类——它自己就把图分成这两族。 别急着学全:下面 8.3 会看到三种用法只用到 7 种。

30 秒实验

  1. 把这 13 种按【你这周用得上/半年内用得上/用不上】三档分一分。
  2. 给自己只留 3 种,说出为什么是这 3 种。

常见误区

  1. 以为 13 种都要会画。常用的是 7 种,其中 3 种最关键。
  2. 以为结构图和行为图可以混着画。一张图只回答一个问题。
自测三问(点开对答案) 1. 13 种怎么分类? —— 结构图 6 种(类图/对象图/包图/组件图/部署图/组合结构图)+行为图 7 种(用例/活动/状态机/时序/通信/交互概览/定时)。 2. 两类分别回答什么问题? —— 结构图回答【长什么样】,行为图回答【怎么动】。 3. 13 是哪个版本的图数? —— UML 2.0;后来的版本又加了制品图、概览图等,但书按 13 种讲。

相关笔记