软件设计师 · UML · 类图

软件设计师 UML 类图题怎么做?

UML 类图题最容易丢分的地方,不是看不懂图形,而是把关系语义混在一起。泛化、关联、聚合、组合都像线,但它们表达的意思不一样。

软件设计师专题 软考题库编辑部 持续更新

类图先看静态结构,不要当流程图读

类图描述的是系统中的类、属性、方法以及类之间的静态关系。它不是用来表达业务步骤先后顺序的,这一点要和活动图、时序图区分开。

题目如果问“学生是一种人员”“订单包含订单明细”“用户和角色之间有关系”,这些都是类图关系判断的典型语言。

泛化、实现、关联先分大类

泛化关系表达 is-a,也就是“是一种”。比如学生是人员的一种,教师也是人员的一种。实现关系通常出现在接口和实现类之间。

关联关系表达对象之间知道或使用对方。它不一定是强拥有,也不一定意味着生命周期绑定,只是说明类之间存在业务联系。

关系题干信号判断方法
泛化是一种、继承自is-a 关系
实现实现接口、遵循契约接口与实现类
关联使用、认识、关联到普通业务联系
依赖临时使用、作为参数关系更弱,常是方法级使用

聚合和组合的区别,看生命周期

聚合和组合都属于整体-部分关系。聚合较弱,部分对象可以离开整体继续存在;组合更强,部分对象通常随整体创建和销毁。

比如班级和学生更接近聚合,学生离开班级仍然存在。订单和订单明细更接近组合,订单不存在时明细通常没有独立业务意义。

关系强弱例子
聚合弱整体-部分班级和学生
组合强整体-部分订单和订单明细
普通关联一般联系用户和角色
泛化继承分类学生和人员

多重度要按业务语句翻译

多重度不是凭感觉填 1 或 *,而是把题干中的数量约束翻译到关系两端。比如“一个客户可以有多个订单,一个订单只属于一个客户”,客户到订单是 1 对多,订单到客户是多对 1。

如果题干说“可以没有”“至少一个”“最多三个”,这些词都要保留下来。很多下午题的空就是考你是否漏掉了 0、1、* 这些边界。

1恰好一个
0..1可以没有,也可以有一个
1..*至少一个,可以多个
0..*可以没有,也可以多个

和其他 UML 图怎么区分

用例图看参与者和系统功能,时序图看对象之间按时间发送消息,活动图看业务流程,部署图看硬件节点和软件部署。类图则回到静态结构和类之间关系。

考试时不要只看“UML”三个字就选类图。题干的关键词才是答案。

相关题目解析

下面这些题目和本专题的判断方法关联较强,适合读完概念后回到具体题干里校验理解。