类图中的聚合关系(aggregation)和组合关系(composition)比较
前言
在画类图时,空心菱形(聚合关系)和实心菱形(组合关系)两者分别在什么场景下使用?由于两者概念有些相近,相信搞混的人还是存在的。本文通过类图对比来说明两者的根本区别。
X先生的回答
- 空心菱形代表
has - a
即持有/拥有的意思 - 实心菱形代表
part - of
即 ~的一部分的意思
所以,人拥有车
用空心菱形表示,轮胎是车的一部分
用实心菱形表示。如下图所示
![]() |
![]() |
---|---|
通过has - a
和part - of
来理解可能就是容易搞混的原因了。
正确的意思
首先, 菱形代表的意思就是全体 - 部分
的关系。也就是说不管实心还是空心,都代表全体 - 部分
/ part - of
的含义。
![]() |
![]() |
---|---|
- 空心,全体和部分的连接可以是宽松的,全体和部分可以相互脱离独立存在。
- 实心,全体和部分的连接是强关联
空心菱形(聚合关系)的准确含义
在UML1.3时代,空心菱形被称为共有聚合
。即 多个全体
的实例,可以共同拥有1个部分
的实例 的意思。 全体和部分的连接可以是宽松的,全体和部分可以相互脱离独立存在。 UML2起叫虽然称之为聚合
,但本身的含义并未改变。例如: 图形
拥有样式
,可以把这个认为是全体 - 部分
关系 - 1个样式
实例,可以被多个图形
实例所拥有 - 图形
实例也可以不拥有样式
- 样式
实例也可以脱离图形
实心菱形(组合关系)的准确含义
和聚合关系不同,实心菱形里的部分
不能被全体
所拥有。 即 1个部分
实例只能被唯一1个全体
实例所持有 。 且可以认为部分
和全体
拥有一个共同的生存周期,当全体
被删除,部分
也被连带删除。 但,在全体
删除前移除部分
,是可以免去连带删除全体
。例如: 车
和轮胎
,也可以认为是全体 - 部分
关系 - 1个轮胎
实例,只能被1个车
实例拥有 - 车
报废时,轮胎
也跟着报废 - 在车
报废前,可以将轮胎
拆除,转移到别的车
下
参考链接
https://qiita.com/azuki8/items/49e1add6ea838cd13734
查看原文:http://www.huuinn.com/archives/249
更多技术干货:风匀坊
关注公众号:风匀坊
类图中的聚合关系(aggregation)和组合关系(composition)比较相关推荐
- java uml图中的关系_UML类图中的关系
UML类图中的关系分为四种:泛化.依赖.关联.实现:关联关系又可以细化为聚合和组合. 1. 泛化(Generalization) 泛化是父类和子类之间的关系,子类继承父类的所有结构和行为.在子类中可以 ...
- 空心菱形,空心三角,实心菱形,实线,虚线在类图中的使用
原文链接 :https://www.cnblogs.com/silent2012/archive/2011/09/07/2169946.html 1.什么是类图 类图(Class diagram)主要 ...
- UML类图中的六大关系:关联(单向、双向、自关联)、聚合、组合、依赖、继承、实现
一.类的属性的表示方式 在UML类图中,类使用包含类名.属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个A类,它包含c.d两个属性,以及methodA方法. 那么 ...
- 区分 UML 类图中的几种关系
区分 UML 类图中的几种关系 2010-12-23 作者:fnw 来源:网络 区分 UML 类图中的几种关系 UML 类图中的 "关联关系(association) &qu ...
- UML类图中符号的含义
UML类图中符号的含义 类图中的基本符号由虚线.箭头.实线.空心三角形.空心菱形.实心菱形组成,这些符号的组合构成类图的基本符号 实线+箭头 表示关联关系 关联关系分类 自身关联 表示自身拥有一个自身 ...
- UML类图中各种箭头和线条的含义和用法(转)
UML类图中箭头和线条的含义和用法 1.UML中关系 本节向大家学习一下UML箭头.线条代表的意义,UML中关系主要有依赖,聚合,合成,泛化和实现等,下面就让我们来看一下这些关系如何用UML箭头和线条 ...
- 一张图看明白UML类图中的6种关系
在UML类图中,有6种关系,分别是: (1)泛化(Generalization),简单说就是父类和子类的关系,extends/: (2) 实现(Realization),简单说就是接口和实现的关系,i ...
- [跟我学UML] UML类图中的泛化
本文基于UML规范,介绍了类图中的泛化.此外,还通过举例说明来帮助读者加深理解. ...打开附件阅读全文.
- 如何在类图中标注设计模式(二)
接文章<如何在类图中标注设计模式(一)>. 本文姗姗来迟,见谅! 5. 基于标记的模式标注 美国德克萨斯大学达拉斯分校的Jing Dong等人提出了一种基于标记的模式标注方 ...
最新文章
- Codeforces #536 div2 E (1106E)Lunar New Year and Red Envelopes (DP)
- Spring容器中Bean的作用域
- 两个datatable之间的复制
- 媒体查询-响应式布局-BFC
- [人生]不经历风雨怎么见彩虹
- 阿里每天纳税超 1.4 亿元;余承东:苹果很难和华为竞争;三星 Note 7 爆炸案终审 | 极客头条...
- 全球开发者大调查:编程始于少年,Python 成最爱
- 手把手教你整合最优雅SSM框架
- Linux之squirrelmail小松鼠客户端搭建
- vs2010创建动态库(亲测可行)
- windows10百度网盘下载,windows iso文件下载
- 处理器架构 (四) ARM指令集
- Hbuilder X 开发APP指南
- 安装永中office 2009个人版 点快捷方式无法运行
- BERT 中wordPiece的原理
- python 随机森林调参_scikit-learn随机森林调参小结
- 关注家庭教育-父母对子女的期望
- 分享一个宝藏级 Java 插件
- 连续性方程_连续性方程表示什么守恒
- 报错解决:PermissionError
热门文章
- SuperMap iMobile 8C 技术文档 ——加载倾斜摄影模型
- 学生管理系统之登录错误 233
- javaweb JAVA JSP失物招领系统源码( JSP寻物启事)-毕业设计-课程设计
- 今日报错系列:在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加 “#include “stdafx.h“”?
- 安装chatterbot的填坑过程
- css改变权重,让css的权重变得更友好的小技巧
- 用TensorFlow预测纽约市AirBnB租赁价格
- 突发!美的内网遭病毒入侵,被勒索1000万美金,官方回应来了
- 公布一经验,看开盘后半小时的趋势,可预测收盘的阴阳!(80%准确率)
- 计算机专业的毕业生35,计算机专业毕业生求职简历