📄 一句话概括
观点 5:设计先于编码——用 UML(统一建模语言)把类与关系画成图纸,评审改图便宜、上线改码昂贵。
📝 本节和前面几节的关系
建模思想落到纸面就是 UML。4.2 的流程图管【步骤】,UML 类图管【结构】。
一、UML 是什么
UML(Unified Modeling Language,统一建模语言)诞生于 1990 年代,把 Booch、OMT 等各家画法归一。 它不是编程语言,是画图的标准——图标准化了,天下工程师才能互相看懂。 十几种图里最常用的是类图(结构)与时序图(交互)——本节主攻类图。
二、类图怎么画
一个类画成三格盒子:类名/属性/方法——一格一格像填表; 盒子之间用连线表达关系:继承画空心三角实线、组合画实心菱形、依赖画虚线箭头; 属性和方法前的【+-#】标记公开/私有/保护——封装程度直接上图。
三、先画图后写码
5.8 说过【先在纸上考虑算法】——大型 OOP 项目同理:图纸先行。 评审时改图只需橡皮一块,上线后改码要动版本、动测试、动数据库——改图便宜,改码昂贵。 【⚠️ 2026 现状】敏捷时代不再流行把全系统 UML 画全,但白板上的类图草图仍是设计沟通的第一利器。
四、动手 Demo:用 UML 类图画设计图
把 Dog 类画成三格盒子,再认一认三种关系的记号。
# UML 类图用字符画演示 (三格盒子)
box = [
"+---------------------------+"
"| Dog |"
"+---------------------------+"
"| - name : String |"
"| - sound : String |"
"+---------------------------+"
"| + speak() : void |"
"+---------------------------+"
]
for ln in box:
print(ln)
实跑输出:
--------------------------------------------------------------------
观点 5——借助 UML 设计程序
--------------------------------------------------------------------
UML(统一建模语言)是面向对象的设计图纸。最常用的是类图:
一个类画成三格盒子——类名 / 属性 / 方法:
+---------------------------+
| Dog |
+---------------------------+
| - name : String |
| - sound : String |
+---------------------------+
| + speak() : void |
| + eat(food : String) |
+---------------------------+
盒子之间连线表达关系:
UML 关系 记号 含义 对应 7.9
--------------------------------------------------------
继承 空心三角实线 子类指向父类 is-a
组合 实心菱形 整体含部分 has-a
依赖 虚线箭头 临时用一下 调用
4.2 的流程图管【步骤】, UML 类图管【结构】——图纸先行, 照图施工。
大型项目评审时改图纸便宜, 上线后改代码昂贵——图先行就是省钱。
三格从上到下:类名/属性/方法;【-】是私有、【+】是公开——封装画在图上。 时序图管【谁先谁后发消息】,正好配 7.8 的消息驱动观——结构图与交互图成对出现。
30 秒实验
- 给 7.6 的猫狗模型补一张类图,标出 Dog 与 Cat 的继承线。
- 给【购物车】画类图:商品、条目、购物车三个盒子,想想谁组合谁。
常见误区
- 以为 UML 是又一种编程语言——它是画图标准,图是给人看的。
- 以为设计图可有可无——大项目里图纸是团队的共同语言与合同附件。
自测三问(点开对答案)
1. UML 类图的一个类画成什么样? —— 三格盒子:类名/属性/方法。 2. 继承、组合分别用什么记号? —— 继承是空心三角实线,组合是实心菱形。 3. 为什么强调先画图后写码? —— 改图便宜、改码昂贵,图纸先行省钱省时。- ☐ 下一节(7.8 观点6:面向对象编程通过在对象间传递消息驱动程序)
相关笔记
- LX_CH4_42 — 流程图管步骤,UML 类图管结构
- LX_CH5_58 — 先在纸上考虑,图纸先行的老规矩
- 💻 计算机是怎样跑起来的 · 索引