【发布时间】:2014-12-04 17:24:00
【问题描述】:
我正在尝试了解聚合和组合。
假设我有如下内容:
我想用java实现它,下面的实现是否正确?
public class ClassC { private String z; }
public class ClassB {
private String y;
private ClassC classC;
//-----setter and getter for classC
}
public class ClassA {
private String x;
private List<ClassB> classBList;
public ClassA(final List<ClassB> classBList) {
this.classBList=classBList
}
}
另外,如何确保 ClassB 可以恰好有 1 个 ClassC ?
ClassA 可以有 1 个或多个 ClassB 吗?如箭头所示(如果我正确理解这些符号)。
【问题讨论】:
-
你好,mihaisimi!我也浏览了链接,但我是否理解正确,上面的示例是从类图中实现它的正确方法吗?
-
我了解聚合和组合之间的基础知识和区别,但是从上面的类图以及放置在箭头上的数字何时为 0 或 1 的实现有点困惑
-
啊,我当时就糊涂了:)。好吧,如果你想确保一个参数被实例化,你总是可以将它标记为 final。这将迫使您内联或在构造函数中实例化它,因此它不能再为 0 并且将满足 1->1 。例如,在 classB 中更改为“private final ClassC classC”。
标签: java uml aggregation composition class-diagram