组合和聚合问题 Java
Composition and aggregation issue Java
有人可以向我解释什么是聚合类型,为什么不应该初始化矢量并且此代码是根据图表显示的?我不明白为什么什么时候是 -> 在聚合或组合结束时不应内部化向量。
class Project
{
private Vector<Student> stds;
private Vector<Diag> diagra = new Vector();
}
UML:
此代码不允许区分关联、聚合和组合。 vector初始化与否无关
UML 表示 Project
有未指定数量的 Student
。由于是聚合,没有排他性,所以同一个学生可以出现在多个项目中。 ALsi,当项目销毁时,所有学生不受影响
- Java 代码使
stds
未初始化。这说明也不保证学生的所有权。
- 此外,如果项目要聚集一些学生,Java 代码有时会正确初始化
stds
向量。
- 其实我怀疑代码作者在Java中混淆了聚合和对象赋值。聚合是一种建模安慰剂,没有这个意思。在这种情况下,使用简单的关联而不是聚合要简单得多,也不会含糊不清。
UML 表示 Project
是具有未指定数量的 Diag
的组合。组合意味着独家所有权,不是矢量,而是存储在以下图表的所有权:
- java 代码使用初始化为空向量的向量,它没有说明生命周期和它将包含的对象的所有权。
- 实际上,矢量元素是始终可以共享的引用(“对象句柄”)。没有任何东西可以保证代码中图表的所有权。
有人可以向我解释什么是聚合类型,为什么不应该初始化矢量并且此代码是根据图表显示的?我不明白为什么什么时候是 -> 在聚合或组合结束时不应内部化向量。
class Project
{
private Vector<Student> stds;
private Vector<Diag> diagra = new Vector();
}
UML:
此代码不允许区分关联、聚合和组合。 vector初始化与否无关
UML 表示 Project
有未指定数量的 Student
。由于是聚合,没有排他性,所以同一个学生可以出现在多个项目中。 ALsi,当项目销毁时,所有学生不受影响
- Java 代码使
stds
未初始化。这说明也不保证学生的所有权。 - 此外,如果项目要聚集一些学生,Java 代码有时会正确初始化
stds
向量。 - 其实我怀疑代码作者在Java中混淆了聚合和对象赋值。聚合是一种建模安慰剂,没有这个意思。在这种情况下,使用简单的关联而不是聚合要简单得多,也不会含糊不清。
UML 表示 Project
是具有未指定数量的 Diag
的组合。组合意味着独家所有权,不是矢量,而是存储在以下图表的所有权:
- java 代码使用初始化为空向量的向量,它没有说明生命周期和它将包含的对象的所有权。
- 实际上,矢量元素是始终可以共享的引用(“对象句柄”)。没有任何东西可以保证代码中图表的所有权。