UML - 两个实体之间的多个分解关系

时间:2018-03-12 10:24:19

标签: uml

我想为机场和城市建模,并希望选择两者之间适当的分解关系,但我似乎无法决定选择哪一个,因为它们都有不同的关系。

一个城市可以独立存在而且不需要机场因此我会说City-Airport链接是聚合但是...

机场需要一个城市,如果没有一个城市成为一个组合关系,它将不存在。

有可能有两种关系吗?一个是城市 - >机场和另一个机场 - >城市它确实感到奇怪,因为对我而言,作品感觉就像一种应该被两个人而不仅仅是一个人尊重的关系。

1 个答案:

答案 0 :(得分:3)

普遍的误解是,课程之间的关系主要是"聚合"或"成分"。我认为这个不幸的传统已经在C ++社区中得到了体现。

相反,类之间最重要的关系是"关联",因为它们在UML类模型/图表中被调用。因此,如果您想对CityAirport之间的关系建模,您可能希望选择一对多关联(因为一个城市可能有多个机场,但任何机场都已分配到一个城市)。

enter image description here

在UML中,聚合和组合都是关联的特殊情况,用于表示两个类的实例之间的部分 - 完整关系。由于机场不是真正的城市的一部分,而只是与之相关,因此CityAirport之间既没有构成也没有聚合,而只是一个普通的协会。

在许多情况下,我们可能想知道一个关联是否是一个组合,将它建模为一个简单的关联更安全。

将关联建模为合成的唯一理由是组件类型的实例是"弱实体"没有自己的身份(对象ID)。但是机场确实拥有自己的ID,所以没有必要也没有任何收获来将它们建模为城市的组成部分。