类图先看静态结构,不要当流程图读
类图描述的是系统中的类、属性、方法以及类之间的静态关系。它不是用来表达业务步骤先后顺序的,这一点要和活动图、时序图区分开。
题目如果问“学生是一种人员”“订单包含订单明细”“用户和角色之间有关系”,这些都是类图关系判断的典型语言。
泛化、实现、关联先分大类
泛化关系表达 is-a,也就是“是一种”。比如学生是人员的一种,教师也是人员的一种。实现关系通常出现在接口和实现类之间。
关联关系表达对象之间知道或使用对方。它不一定是强拥有,也不一定意味着生命周期绑定,只是说明类之间存在业务联系。
| 关系 | 题干信号 | 判断方法 |
|---|---|---|
| 泛化 | 是一种、继承自 | is-a 关系 |
| 实现 | 实现接口、遵循契约 | 接口与实现类 |
| 关联 | 使用、认识、关联到 | 普通业务联系 |
| 依赖 | 临时使用、作为参数 | 关系更弱,常是方法级使用 |
聚合和组合的区别,看生命周期
聚合和组合都属于整体-部分关系。聚合较弱,部分对象可以离开整体继续存在;组合更强,部分对象通常随整体创建和销毁。
比如班级和学生更接近聚合,学生离开班级仍然存在。订单和订单明细更接近组合,订单不存在时明细通常没有独立业务意义。
| 关系 | 强弱 | 例子 |
|---|---|---|
| 聚合 | 弱整体-部分 | 班级和学生 |
| 组合 | 强整体-部分 | 订单和订单明细 |
| 普通关联 | 一般联系 | 用户和角色 |
| 泛化 | 继承分类 | 学生和人员 |
多重度要按业务语句翻译
多重度不是凭感觉填 1 或 *,而是把题干中的数量约束翻译到关系两端。比如“一个客户可以有多个订单,一个订单只属于一个客户”,客户到订单是 1 对多,订单到客户是多对 1。
如果题干说“可以没有”“至少一个”“最多三个”,这些词都要保留下来。很多下午题的空就是考你是否漏掉了 0、1、* 这些边界。
1恰好一个
0..1可以没有,也可以有一个
1..*至少一个,可以多个
0..*可以没有,也可以多个
和其他 UML 图怎么区分
用例图看参与者和系统功能,时序图看对象之间按时间发送消息,活动图看业务流程,部署图看硬件节点和软件部署。类图则回到静态结构和类之间关系。
考试时不要只看“UML”三个字就选类图。题干的关键词才是答案。
相关题目解析
下面这些题目和本专题的判断方法关联较强,适合读完概念后回到具体题干里校验理解。
- UML 类图中泛化关系是什么意思?UML 类图关系 / 软件设计师UML类图
- UML 类图中聚合和组合有什么区别?UML 类图 / 聚合
- UML 用例图中 include 和 extend 怎么区分?UML / 用例图
- UML 时序图主要用来描述什么?UML / 时序图
- UML 活动图主要用来描述什么?UML / 活动图
- UML 部署图主要描述什么?UML / 部署图