【发布时间】:2016-01-05 14:00:15
【问题描述】:
我很困惑如何在 java 代码中正确实现,关联绘制在 UML 类图上。
假设我们只有两个类(即订单和产品),它们以不同的方式指定关联, 这些关联可以绘制为以下情况 A、B 或 C:
自从我找到了这个答案:https://stackoverflow.com/a/2293760/3248096 谈论(与箭头和导航方向的关联)
我的第一个问题是关于实现 B 与 A 的区别。 在 A 实现上我会写:
public class Order{
private Set<Product> products;
}
public class Product{
private Set<Order> orders;
}
关于 B 的实现:
public class Order{
private Set<Product> products;
}
public class Product{
//no references properties back to order from here since no back navigability
...
}
第二个问题是关于 C 模型的: 通过实现表示从 0 到 4 的有限基数的最佳方法是什么(有吗?)? (产品可能有 0 到 4 个父订单没有多大意义。更多的是理解建模与代码)
public class Product{
//Array(4) orders...?
}
【问题讨论】:
-
注意:我不是在问 A 是否比 B 更好。我们选择了 Order Product 作为示例,将它们视为具有关系的两个实体。重点不在于订购尽可能多的产品是否正确,反之亦然。该关系可能表示为A图或B。我想了解的是B实现是否由于添加的箭头而满足B图。
-
我认为 A 和 B 的意思是一样的,即箭头隐含在 A 中,该订单包含产品。因此,您的第一个实现是错误的(双向引用)。第二个是正确的。关于 C,如果没有更多信息,很难说发生了什么。
-
A 和 B 显然不是同一个意思。如果关联实现为双向关联(如问题中所建议)或单向关联(如 B 中所示),则 A 将其打开。请参阅下面的答案。