UML - 链式 Class 参考
UML - Chained Class References
Class 男
public Box box;
private Gun gun;
public Man()
{
gun = new Gun(this);
}
Class盒子
public Bullets bullets;
public Box()
{
bullets = new Bullets();
}
Class 子弹
public Bullets() {}
Class枪
private Man owner;
private Bullets bullets;
public Gun(Man owner)
{
this.owner = owner;
bullets = this.owner.box.bullets;
}
classGun 的 UML 是什么?
这是我的想法:
Gun 具有 聚合 Man 和 Bullets
Gun dependency 与 Box
这是否正确?
基本上是的。但具体来说,Box
的依赖性已经给出,Man
与 Box
有关联。所以你不需要那个。
不要太在意聚合,因为它只为模型增加了很少的额外语义。你有一个协会的事实通常就足够了。您可以轻松地开始与 "can X live without Y?" 争论,但这毫无意义。如果在数据库的外键约束上下文中使用复合聚合 and/or 以显示内存管理约束。
您可以使用告诉 { bullets in box are never bullets in gun}
等的约束来扩充模型。不要忘记多重性。
没错,使用聚合可能会造成混淆,但复合是一种强关联,有助于理解模型和关联。
在规范文档中,第 9.5.3 节进行了描述
据我了解,您可以在以下情况下使用组合:
- 复合对象负责
组合对象的存在和存储
- 零件对象最多包含在一个组合中
一次对象。如果删除复合对象,则其作为对象的所有部分实例也将随之删除。
- 请注意菱形方的基数,默认为 0..1
如果我可以帮助改进建议的模型,我总是尽量避免循环关联(可能是由于我的旧 C/C++ 编码没有垃圾收集器),所以我尽量避免 class 关联到class B 关联到 class C 关联到 class A。
希望这有帮助
Class 男
public Box box;
private Gun gun;
public Man()
{
gun = new Gun(this);
}
Class盒子
public Bullets bullets;
public Box()
{
bullets = new Bullets();
}
Class 子弹
public Bullets() {}
Class枪
private Man owner;
private Bullets bullets;
public Gun(Man owner)
{
this.owner = owner;
bullets = this.owner.box.bullets;
}
classGun 的 UML 是什么?
这是我的想法:
Gun 具有 聚合 Man 和 Bullets
Gun dependency 与 Box
这是否正确?
基本上是的。但具体来说,Box
的依赖性已经给出,Man
与 Box
有关联。所以你不需要那个。
不要太在意聚合,因为它只为模型增加了很少的额外语义。你有一个协会的事实通常就足够了。您可以轻松地开始与 "can X live without Y?" 争论,但这毫无意义。如果在数据库的外键约束上下文中使用复合聚合 and/or 以显示内存管理约束。
您可以使用告诉 { bullets in box are never bullets in gun}
等的约束来扩充模型。不要忘记多重性。
没错,使用聚合可能会造成混淆,但复合是一种强关联,有助于理解模型和关联。
在规范文档中,第 9.5.3 节进行了描述
据我了解,您可以在以下情况下使用组合:
- 复合对象负责
组合对象的存在和存储
- 零件对象最多包含在一个组合中
一次对象。如果删除复合对象,则其作为对象的所有部分实例也将随之删除。
- 请注意菱形方的基数,默认为 0..1
如果我可以帮助改进建议的模型,我总是尽量避免循环关联(可能是由于我的旧 C/C++ 编码没有垃圾收集器),所以我尽量避免 class 关联到class B 关联到 class C 关联到 class A。
希望这有帮助