UML 中的组合
Composition in UML
在 UML 图中考虑组合时。我们应该在逻辑或实现意义上使用它。两个术语的示例:
- 实施 - 机场将包含对国家/地区的引用。换句话说,一个国家是机场的一部分。
- 逻辑 - 一个国家可以有零个或多个机场。换句话说,机场是国家的一部分。
从上图中,哪种情况显示了合成的正确用法?
注意:如果这两种情况都不好,请建议其他方式来显示国家和机场之间的关系。
这取决于您要构建的最终模型。
如果您的模型包含国家作为第一个 class 对象或实体,那么显然国家包含机场。如果 Country 是机场的一个属性(更准确地说是机场位置的一个属性),那么就这样建模。
除非您有充分的理由将国家/地区建模为实体,否则我会使用该属性,因为边界会改变,机场也会改变国家/地区。
换句话说,这个问题没有一个明确的答案,两者都可以,这取决于你的最终目标。
我认为这不是该词的强烈“UML 意义”的组合。
来自wikipedia:
复合对象与组件之间的关系是一种强“具有”关系,因为复合对象拥有组件的所有权。这意味着组合体负责组件部分的创建和销毁。
机场不会创建 个国家(并且在 IT 意义上,“国家”对象也不负责 providing/creating“机场”对象)。
从这个意义上说,您正在寻找这里的协会;我认为第一个更合适(“一般”)。但核心方面是:你的模型必须表达你的领域的具体要求。换句话说:两种解决方案都有效;选择哪一个在很大程度上取决于上下文。所以,选择一个可以帮助您解决问题的吧!
如果我可以建议:
比照。 UML 规范第 9.5.3 节(2015 年 3 月):
Composite :表示属性是复合聚合的,即复合对象负责复合对象的存在和存储(见11.2.3部分定义)
和
复合聚合是一种强大的聚合形式,它要求一个部分对象最多包含在一个复合中
一次对象。如果删除复合对象,则其作为对象的所有部分实例也将随之删除。
对我来说,实现和逻辑的问题更多是关于数据库模型的问题。但也许我错了。
如果一定要我选择,我只会设计实现案例。
你可以说机场是一个国家的一部分,或者换句话说,机场对它负责。所以从业务的角度来看,第二种方法是正确的。要从机场角度指示 "knowledge" 关于国家/地区的信息,您可以在菱形之前添加一个指向国家/地区方向的空心箭头。
无论采用何种方法,第一个图表的确切模型是不正确的。使用此图,每个机场将负责一个国家/地区,因此每个机场将位于不同的国家/地区。
在 UML 图中考虑组合时。我们应该在逻辑或实现意义上使用它。两个术语的示例:
- 实施 - 机场将包含对国家/地区的引用。换句话说,一个国家是机场的一部分。
- 逻辑 - 一个国家可以有零个或多个机场。换句话说,机场是国家的一部分。
从上图中,哪种情况显示了合成的正确用法? 注意:如果这两种情况都不好,请建议其他方式来显示国家和机场之间的关系。
这取决于您要构建的最终模型。
如果您的模型包含国家作为第一个 class 对象或实体,那么显然国家包含机场。如果 Country 是机场的一个属性(更准确地说是机场位置的一个属性),那么就这样建模。
除非您有充分的理由将国家/地区建模为实体,否则我会使用该属性,因为边界会改变,机场也会改变国家/地区。
换句话说,这个问题没有一个明确的答案,两者都可以,这取决于你的最终目标。
我认为这不是该词的强烈“UML 意义”的组合。
来自wikipedia:
复合对象与组件之间的关系是一种强“具有”关系,因为复合对象拥有组件的所有权。这意味着组合体负责组件部分的创建和销毁。
机场不会创建 个国家(并且在 IT 意义上,“国家”对象也不负责 providing/creating“机场”对象)。
从这个意义上说,您正在寻找这里的协会;我认为第一个更合适(“一般”)。但核心方面是:你的模型必须表达你的领域的具体要求。换句话说:两种解决方案都有效;选择哪一个在很大程度上取决于上下文。所以,选择一个可以帮助您解决问题的吧!
如果我可以建议: 比照。 UML 规范第 9.5.3 节(2015 年 3 月):
Composite :表示属性是复合聚合的,即复合对象负责复合对象的存在和存储(见11.2.3部分定义)
和
复合聚合是一种强大的聚合形式,它要求一个部分对象最多包含在一个复合中 一次对象。如果删除复合对象,则其作为对象的所有部分实例也将随之删除。
对我来说,实现和逻辑的问题更多是关于数据库模型的问题。但也许我错了。
如果一定要我选择,我只会设计实现案例。
你可以说机场是一个国家的一部分,或者换句话说,机场对它负责。所以从业务的角度来看,第二种方法是正确的。要从机场角度指示 "knowledge" 关于国家/地区的信息,您可以在菱形之前添加一个指向国家/地区方向的空心箭头。
无论采用何种方法,第一个图表的确切模型是不正确的。使用此图,每个机场将负责一个国家/地区,因此每个机场将位于不同的国家/地区。