软件设计师 · 高频练习

UML 类图中聚合和组合有什么区别?

中级 单选题 第 115 题 中等 软件设计师UML 类图聚合组合整体部分关系
题目

在 UML 类图中,班级与学生可以理解为整体和部分,但学生离开某个班级后仍然可以独立存在;而订单与订单明细通常生命周期绑定,订单不存在时明细也没有独立意义。下列说法较合理的是()。

A 班级和学生更接近聚合,订单和订单明细更接近组合
B 班级和学生一定是组合,订单和订单明细一定是泛化
C 聚合和组合都表示方法重载
D 聚合和组合只能用于数据库索引设计
题目类型:原创高频考点题 用途:用于帮助理解软件设计师相关考点和答案解析,不等同于官方真题。
正确答案
A
答案解析

聚合和组合都表达整体-部分关系,但强弱不同。聚合是较弱的拥有关系,部分对象可以脱离整体存在;组合是更强的整体-部分关系,部分对象通常与整体生命周期绑定。

选项分析

A

正确。聚合表示较弱的整体-部分关系,组合表示强拥有和生命周期绑定。

B

错误。班级和学生不一定是强生命周期绑定,订单明细也不是泛化关系。

C

错误。方法重载是程序设计语言概念,不是 UML 类图整体-部分关系。

D

错误。聚合和组合属于面向对象建模关系,不是数据库索引设计概念。

本题为什么容易错

这题容易错在看到“整体和部分”就直接选组合。其实组合比聚合更强,关键要看部分对象是不是跟着整体一起消亡。

先看结论

简短答案

UML 类图中聚合和组合有什么区别,正确答案是 A(班级和学生更接近聚合,订单和订单明细更接近组合)。聚合和组合都表达整体-部分关系,但强弱不同。聚合是较弱的拥有关系,部分对象可以脱离整体存在;组合是更强的整体-部分关系,部分对象通常与整体生命周期绑定。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
班级和学生更接近聚合,订单和订单明细更接近组合 本题正确答案 正确。聚合表示较弱的整体-部分关系,组合表示强拥有和生命周期绑定。 看到题干核心场景时优先联想到它
班级和学生一定是组合,订单和订单明细一定是泛化 本题干扰项 错误。班级和学生不一定是强生命周期绑定,订单明细也不是泛化关系。 看到该词不要急着选,先判断是否真正解决题干问题
聚合和组合都表示方法重载 本题干扰项 错误。方法重载是程序设计语言概念,不是 UML 类图整体-部分关系。 看到该词不要急着选,先判断是否真正解决题干问题
聚合和组合只能用于数据库索引设计 本题干扰项 错误。聚合和组合属于面向对象建模关系,不是数据库索引设计概念。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 班级和学生一定是组合,订单和订单明细一定是泛化:错误。班级和学生不一定是强生命周期绑定,订单明细也不是泛化关系。
  • 聚合和组合都表示方法重载:错误。方法重载是程序设计语言概念,不是 UML 类图整体-部分关系。
  • 聚合和组合只能用于数据库索引设计:错误。聚合和组合属于面向对象建模关系,不是数据库索引设计概念。
复习

知识点详解

UML 类图是软件设计师考试中需要结合场景理解的考点。围绕“UML 类图中聚合和组合有什么区别”这类题目,复习时要先看题干描述的是概念定义、适用场景、作用效果,还是与其他选项的区别。本题的题干关键词是“在 UML 类图中,班级与学生可以理解为整体和部分,但学生离开某个班级后仍然可以独立存在;而订单与订单明细通常生命周期绑定,订单不存在时明细也没有独立意义。下列说法较合理的是()”,它指向的核心答案是 A(班级和学生更接近聚合,订单和订单明细更接近组合)。

备考速记

备考速记:题干如果强调“整体部分关系”中的关键目标,就先联想到 UML 类图;如果选项里出现 班级和学生一定是组合,订单和订单明细一定是泛化、聚合和组合都表示方法重载、聚合和组合只能用于数据库索引设计,不要只看名称熟悉,要判断它们是否真正对应题干场景。

UML 类图 在整体部分关系场景中的作用

UML 类图在本题中的核心价值,是解决“在 UML 类图中,班级与学生可以理解为整体和部分,但学生离开某个班级后仍然可以独立存在;而订单与订单明细通常生命周期绑定,订单不存在时明细也没有独立意义。下列说法较合理的是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给出整体部分关系场景,判断应该选择哪个概念、工具、协议或管理过程。
  • 考查UML 类图的作用,要求从四个相近选项中找出最符合题干目标的一项。
  • 把UML 类图和班级和学生一定是组合,订单和订单明细一定是泛化、聚合和组合都表示方法重载、聚合和组合只能用于数据库索引设计放在一起考,重点看适用场景是否一致。
  • 题干通常会出现一个关键动作或目标,先定位关键词,再回到选项逐一排除。
UML 类图 在软件设计师软考中的考法

软考选择题通常不会只考概念定义,还会把UML 类图放到整体部分关系场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

班级没有了,学生这个对象仍然可以转班或继续存在,所以是弱整体-部分关系,更像聚合。订单明细依附于订单,离开订单就失去业务意义,更像组合。

考点定位

类图关系题常把关联、聚合、组合、泛化放在一起考。判断聚合和组合时,重点看部分对象能不能脱离整体独立存在,以及生命周期是否强绑定。

易错提醒

  • 空心菱形通常表示聚合,实心菱形通常表示组合。
  • 聚合和组合都属于 has-a 关系,但组合更强。
  • 泛化表示 is-a,不要和整体-部分关系混淆。

备考提示

  • 类图题先判断语义:是一种、拥有、使用、依赖,分别对应不同关系。
  • 聚合/组合可以用“能不能离开整体继续存在”来快速判断。

你可能还想了解

  • UML 类图中聚合和组合有什么区别?
  • UML 类图是什么?
  • UML 类图在软件设计师考试中怎么考?
  • 软件设计师UML 类图题怎么理解?
  • UML聚合和组合区别怎么考?
  • 软件设计师类图关系怎么考?

本文小结

本题核心考点是UML 类图在整体部分关系场景中的判断和应用。遇到类似题目时,先看题干描述的目标,再判断哪个选项最符合场景;本题应选择 A(班级和学生更接近聚合,订单和订单明细更接近组合)。