UML中的组合

时间:2017-02-22 16:50:14

标签: java uml

在考虑组合时的UML图中。我们应该在逻辑或实现意义上使用它吗?这两个术语的例子:

  • 实施 - 机场将包含对该国家的引用。换句话说,一个国家是机场的一部分。
  • 逻辑 - 一个国家可以拥有零个或多个机场。换句话说,机场是该国的一部分。

UML example diagram

从上图中,哪个案例显示了作文的正确用法? 注意:如果这两种情况都不好,请建议其他方式来显示国家和机场之间的关系。

4 个答案:

答案 0 :(得分:2)

我认为这是强烈的" UML意义上的组合"那个词。

来自wikipedia

复合对象与组件之间的关系是强有力的“有”关系,因为复合对象取得组件的所有权。这意味着复合材料负责组件的创建和销毁。

机场不会创建国家/地区(在IT意义上,"国家"对象也不负责提供/创建"机场"对象)

从这个意义上说,你正在寻找一个协会;我认为第一个更合适(在"一般")。但核心方面是:您的模型必须表达 您的域的特定要求。换句话说:两种解决方案都是有效的;它在很大程度上取决于选择的背景。换句话说:你选择一个可以帮助你解决问题的那个!

答案 1 :(得分:0)

这取决于您尝试构建的最终模型。

如果您的模型将国家/地区作为头等对象或实体包含在内,那么显然国家/地区包含机场。如果国家/地区是机场的属性(更恰当地说是机场位置的属性),则将其建模为此类型。

除非你有充分的理由将国家建模为实体,否则我会选择该属性,因为边界可以改变,机场可以改变国家。

换句话说,这个问题没有明确的答案,要么可以根据你的最终目标发挥作用。

答案 2 :(得分:0)

如果我可以建议: 比照UML规范的第9.5.3节(2015年3月):

Composite:表示Property是复合聚合的,即复合对象负责组合对象的存在和存储(参见11.2.3中部件的定义)。

复合聚合是一种强大的聚合形式,需要将一个零件对象包含在最多一个复合材料中 一次一个对象。如果删除了复合对象,则会删除作为对象的所有零件实例。

对我来说,实现和逻辑问题更多的是关于db模型的问题。但也许我错了。

如果我必须做出选择,我将只设计实施案例。

答案 3 :(得分:0)

你可以说机场是一个国家的一部分,换句话说就是对它负责。因此从业务角度来看,第二种方法是正确的。表明"知识"从机场的角度来看,你可以在钻石之前添加一个指向国家方向的空心箭头。

无论采用何种方法,您想要建模的第一个图表都是错误的。通过该图表,每个机场将负责一个国家,因此每个机场将位于不同的国家。