java的组合和聚合问题

k75qkfdt  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(396)

有人能告诉我聚合的类型是什么,为什么不应该初始化向量,并且这个代码符合图表?我不明白的是,为什么在聚合或合成的末尾,向量不应该被内部化。

class Project
{
 private Vector<Student> stds;
 private Vector<Diag> diagra = new Vector();
}

统一建模语言:

whlutmcx

whlutmcx1#

此代码不允许在关联、聚合和组合之间进行区分。向量的初始化与否无关。
uml说 Project 有未指定数量的 Student . 因为它是聚合的,所以没有独占的所有权,所以相同的学生可以出现在几个项目中。此外,当项目被摧毁时,所有学生都不受影响。
java代码离开了 stds 统一化。这并不能保证学生的所有权。
此外,java代码有时需要正确初始化 stds 向量,如果该项目要聚集一些学生。
事实上,我怀疑代码的作者将聚合与java中的对象分配混为一谈。聚合是一种建模安慰剂,没有这种意义。在这种情况下,使用简单关联而不是agregion要简单得多,也不那么模棱两可。
uml表示 Project 是具有未指定数量的 Diag . 合成是指专有所有权,不是矢量所有权,而是存储在以下范围内的图表所有权:
java代码使用被初始化为空向量的向量,它不告诉任何关于生命周期及其将包含的对象的所有权的信息。
事实上,向量元素是始终可以共享的引用(“对象句柄”)。没有任何东西可以保证代码中图表的所有权。

相关问题