1

业主等级:

class University {
  List<Student> studentCollection;
  public void addStudent();
  public void removeStudent();
}

拥有类:

class Student {
  String name;
  public void setName();
  public String getName();
}

这里的大学是由学生组成的,如果我们删除大学对象,它的所有学生都应该被删除。

但我想问学生它在哪所大学?我们可以更改学生班级以获得大学的参考吗?

提议的班级

class Student {
  String name;
  University univRef;
  /* ... */
}

这仍然是合适的组成吗?在 UML 中可以将其标记为组合吗?还是应该改成双向关联?

注意:搜索答案没有成功并且在格式化方面遇到了困难:)

4

3 回答 3

0

阅读文档java.lang.ref.*

于 2012-06-27T14:28:33.670 回答
0

以学生身份提及大学和从大学向所有学生提及是双向关联。它也比作文更合适,因为大学不是由学生组成的。

但请确保清楚,当您从大学中删除学生时,您也会更新该学生对大学的引用。这两个操作应该原子地完成,一定要彻底测试。

于 2012-06-27T14:35:58.203 回答
0

是的,它仍然是一个组合。学生仍然归大学所有,当大学被烧毁时,他们仍然被杀。

正式地说,第一个组合(没有反向引用)在 UML 类图中建模,在 University 端有一个实心菱形,在 Student 端有一个箭头。没有后向引用的组合则以不带箭头的形式表示。然而,很多人在使用箭头时并不是很严格,使用第二种表示法也用于单向合成。

To be clear you should model it with two arrows: One with a filled diamond from the University to the Student, the other without diamond from the Student to the University.

于 2012-06-27T16:30:10.840 回答