oop - 组合和聚合是否可以共享一部分?
问题描述
我正在创建一个 UML 设计类图,其中我的类“Borger”(丹麦语)最终成为其他两个类(整体)的一部分:
一种关系是组合,一种是聚合。这可能吗?为什么/为什么不?
解决方案
Borger不能有两个组合,因为复合聚合是一种强大的聚合形式,它要求一次最多将一个部分对象包含在一个复合对象中( formal-17-12-05.pdf第 112 页的第 9.5.3 页) ,但是有一个组合(AggregationKind是复合的)和一个聚合(与AggregationKind是共享的)是可能的。
规范中没有给出AggregationKind值shared的精确语义:共享聚合的精确语义因应用领域和建模者而异(仍然是formal-17-12-05.pdf的第 112 页第 9.5.3 页),因此您可以决定它的含义允许与您的上述情况兼容。
但是,您的情况有点奇怪,出于可读性原因,我建议使用组合和简单属性( AggregationKind为none )。
请注意,在 Java 中您总是使用指针,Borger的实例不能成为真正的一部分(但这在 C++ 中是可能的)。
推荐阅读
- svg - 使用 CSS 为其添加大小时,SVG 不缩放
- r - heatmap.2() (gplots) 旋转对角线
- pandas - 将 xticks 设置为 df 列中的唯一值 - Seaborn
- reactjs - 自定义钩子和动态 useEffect 依赖
- border - |助推器 5| 边框颜色不变
- node.js - Discord Ouath2 访问令牌“不支持授予类型无”
- scheduled-tasks - 任务调度程序中的任务触发器
- angular - ng build --configuration 生产在 Jenkins 上需要 30 多分钟,但在本地需要 5-6 分钟
- java - 我想显示具有最高度量的行。但对我来说什么都没有
- reactjs - 无法在 react-lazyload 中将组件显示为占位符