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

UML-两个实体之间的多重分解关系,uml,Uml,我想模拟一个机场和一个城市,并想在两者之间选择适当的分解关系,但我似乎无法决定选择哪一个,因为它们都有不同的关系 一个城市可以独立存在,不需要机场,因此我认为城市机场连接线是一个集合,但是 一个机场需要一个城市,如果没有一个城市,它就不可能存在 有可能有两种关系吗?一个是城市->机场,另一个是机场->城市,这确实让我感到奇怪,因为作文对我来说就像是两个人的关系,而不仅仅是一个人的关系。人们普遍误解,类之间的关系主要是“聚合”或“合成”。我认为这个不幸的传统已经在C++社区中被推广了。 相反,类之

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

一个城市可以独立存在,不需要机场,因此我认为城市机场连接线是一个集合,但是

一个机场需要一个城市,如果没有一个城市,它就不可能存在


有可能有两种关系吗?一个是城市->机场,另一个是机场->城市,这确实让我感到奇怪,因为作文对我来说就像是两个人的关系,而不仅仅是一个人的关系。

人们普遍误解,类之间的关系主要是“聚合”或“合成”。我认为这个不幸的传统已经在C++社区中被推广了。 相反,类之间最重要的关系是“关联”,正如UML类模型/图中所称的那样。因此,如果要对
城市
机场
之间的关系建模,可能需要选择一个一对多关联(因为一个城市可能有多个机场,但任何机场都分配给一个城市)

在UML中,聚合和组合都是关联的特殊情况,用于表示两个类的实例之间的部分-整体关系。由于机场实际上不是城市的一部分,而是与城市相关,因此城市和机场之间既没有组合,也没有聚合,而只是简单的关联

在许多情况下,我们可能会怀疑关联是否是一个组合,将其建模为普通关联更安全


将关联建模为组合的唯一好理由是,组件类型的实例是“弱实体”,没有自己的标识(对象ID)。但是机场确实有自己的ID,因此没有必要也没有好处将其作为城市的组成部分进行建模。

但是,如果您想知道一个城市中有多少个机场,这不是一个聚合而不是关联吗?或者您可以通过关联实现它吗?您可以使用关联执行任何操作,因为它将以引用属性的形式实现,例如
City
airports
,然后可以检索城市对象
c
的机场数作为集合的大小
c.airports
。例如,在Java中,它将是
c.airports.size()