## 连载:面向对象葵花宝典:思想、技巧与实践(20) - 用例图的陷阱
你知道么,用例图 **不是** 用来描述 用例的哦!!!!
熟悉UML的朋友都肯定知道,UML有一个叫做用例图的东东。
单纯从名字上来看,你可能以为用例图是用来描述用例的,即:用例图 = 用例的图形化表示。
然而各位发明UML的大师们,却在无意中给我们设下了一个陷阱:所谓的用例图,不是用来描述用例,而是用来描述系统的图形。
听起来有点奇怪和别扭,既然是用来描述系统的图形,为什么叫做用例图,而不叫系统图呢?
这和用例图的画法有关,用例图虽然是用来描述系统的图形,但其内容主要就是用例。
我们来看用例图的定义:
The use case view captures the behavior of a system, subsystem, or class as it appears to an outside user
简单翻译一下:用例图用于捕获系统、子系统或者类相关的呈现给外部用户的行为。
单纯看这个定义有点难以理解,其实看看用例图的组成就很简单了。用例图的组成如下:
Actor:系统外的用户,对应5W中的Who,包括但不限于用户、外系统;
Use Case:用例,对应前面讲到的用例;
System:系统,所有用例的集合就是系统了。
我们以ATM取款机为样例,用例图如下:
![](https://box.kancloud.cn/2016-01-20_569f5cca01fde.jpg)
从这个图可以清楚的看到,所谓用例图,可以简单的**理解为系统用例的集合**,而不是详细描述每个用例的具体步骤和流程。
这也是前面我们提到的为什么是用“用例”来分析需求,而不是用“用例图”来分析需求的原因
- 前言
- (1) - 程序设计思想的发展
- (2) - 面向对象语言发展历史
- (3) - 面向过程 vs 面向对象
- (4) - 面向对象是瑞士军刀还是一把锤子?
- (5) - 面向对象迷思:面向对象导致性能下降?
- (6) - 不要说你懂“类”
- (7) - “对象”新解
- (8) - “接口” 详解
- (9) - “抽象类” 详解
- (10) - “抽象” 详解
- (11) - “封装” 详解
- (12) - “继承” 详解
- (13) - “多态” 详解
- (14) - 面向对象开发技术流程
- (15) - 需求详解
- (16) - 需求分析终极目的
- (17) - 需求分析518方法
- (18) - 用例分析
- (19) - 功能点提取
- (20) - 用例图的陷阱
- (21) - SSD
- (22) - 领域模型
- (23) - 领域建模三字经
- (24) - 设计模型
- (25) - 类模型
- (26) - 类模型三板斧
- (27) - 动态模型设计
- (28) - 设计原则:内聚&耦合
- (29) - 高内聚低耦合
- (30) - SRP原则
- (31) - OCP原则
- (32) - LSP原则
- (33) - ISP原则
- (34) - DIP原则
- (35) - NOP原则
- (36) - 设计原则如何用?
- (37) - 设计模式:瑞士军刀 or 锤子?
- (38) - 设计模式之道
- (39) - 设计原则 vs 设计模式
- (40) - DECORATOR模式
- (完)- 书籍已经出版