前言

在画类图时,空心菱形(聚合关系)和实心菱形(组合关系)两者分别在什么场景下使用?由于两者概念有些相近,相信搞混的人还是存在的。本文通过类图对比来说明两者的根本区别。

X先生的回答

  • 空心菱形代表has - a 即持有/拥有的意思
  • 实心菱形代表part - of 即 ~的一部分的意思
所以,人拥有车用空心菱形表示,轮胎是车的一部分用实心菱形表示。如下图所示

通过has - apart - 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)比较相关推荐

  1. java uml图中的关系_UML类图中的关系

    UML类图中的关系分为四种:泛化.依赖.关联.实现:关联关系又可以细化为聚合和组合. 1. 泛化(Generalization) 泛化是父类和子类之间的关系,子类继承父类的所有结构和行为.在子类中可以 ...

  2. 空心菱形,空心三角,实心菱形,实线,虚线在类图中的使用

    原文链接 :https://www.cnblogs.com/silent2012/archive/2011/09/07/2169946.html 1.什么是类图 类图(Class diagram)主要 ...

  3. UML类图中的六大关系:关联(单向、双向、自关联)、聚合、组合、依赖、继承、实现

    一.类的属性的表示方式 在UML类图中,类使用包含类名.属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个A类,它包含c.d两个属性,以及methodA方法. 那么 ...

  4. 区分 UML 类图中的几种关系

    区分 UML 类图中的几种关系   2010-12-23 作者:fnw 来源:网络      区分 UML 类图中的几种关系  UML 类图中的 "关联关系(association) &qu ...

  5. UML类图中符号的含义

    UML类图中符号的含义 类图中的基本符号由虚线.箭头.实线.空心三角形.空心菱形.实心菱形组成,这些符号的组合构成类图的基本符号 实线+箭头 表示关联关系 关联关系分类 自身关联 表示自身拥有一个自身 ...

  6. UML类图中各种箭头和线条的含义和用法(转)

    UML类图中箭头和线条的含义和用法 1.UML中关系 本节向大家学习一下UML箭头.线条代表的意义,UML中关系主要有依赖,聚合,合成,泛化和实现等,下面就让我们来看一下这些关系如何用UML箭头和线条 ...

  7. 一张图看明白UML类图中的6种关系

    在UML类图中,有6种关系,分别是: (1)泛化(Generalization),简单说就是父类和子类的关系,extends/: (2) 实现(Realization),简单说就是接口和实现的关系,i ...

  8. [跟我学UML] UML类图中的泛化

    本文基于UML规范,介绍了类图中的泛化.此外,还通过举例说明来帮助读者加深理解. ...打开附件阅读全文.

  9. 如何在类图中标注设计模式(二)

    接文章<如何在类图中标注设计模式(一)>. 本文姗姗来迟,见谅!        5.  基于标记的模式标注 美国德克萨斯大学达拉斯分校的Jing Dong等人提出了一种基于标记的模式标注方 ...

最新文章

  1. Codeforces #536 div2 E (1106E)Lunar New Year and Red Envelopes (DP)
  2. Spring容器中Bean的作用域
  3. 两个datatable之间的复制
  4. 媒体查询-响应式布局-BFC
  5. [人生]不经历风雨怎么见彩虹
  6. 阿里每天纳税超 1.4 亿元;余承东:苹果很难和华为竞争;三星 Note 7 爆炸案终审 | 极客头条...
  7. 全球开发者大调查:编程始于少年,Python 成最爱
  8. 手把手教你整合最优雅SSM框架
  9. Linux之squirrelmail小松鼠客户端搭建
  10. vs2010创建动态库(亲测可行)
  11. windows10百度网盘下载,windows iso文件下载
  12. 处理器架构 (四) ARM指令集
  13. Hbuilder X 开发APP指南
  14. 安装永中office 2009个人版 点快捷方式无法运行
  15. BERT 中wordPiece的原理
  16. python 随机森林调参_scikit-learn随机森林调参小结
  17. 关注家庭教育-父母对子女的期望
  18. 分享一个宝藏级 Java 插件
  19. 连续性方程_连续性方程表示什么守恒
  20. 报错解决:PermissionError

热门文章

  1. SuperMap iMobile 8C 技术文档 ——加载倾斜摄影模型
  2. 学生管理系统之登录错误 233
  3. javaweb JAVA JSP失物招领系统源码( JSP寻物启事)-毕业设计-课程设计
  4. 今日报错系列:在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加 “#include “stdafx.h“”?
  5. 安装chatterbot的填坑过程
  6. css改变权重,让css的权重变得更友好的小技巧
  7. 用TensorFlow预测纽约市AirBnB租赁价格
  8. 突发!美的内网遭病毒入侵,被勒索1000万美金,官方回应来了
  9. 公布一经验,看开盘后半小时的趋势,可预测收盘的阴阳!(80%准确率)
  10. 计算机专业的毕业生35,计算机专业毕业生求职简历