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

UML - Multiple decomposition relationships between two entities

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

城市可以独立存在,不需要机场,因此我会说城市-机场 link 是一个集合,但是...

一个机场需要一个城市,如果没有一个构成关系,它就不会存在。

有可能有两个关系吗?一个是城市 -> 机场,另一个是机场 -> 城市,这确实感觉很奇怪,但是因为对我来说,作文感觉像是一种应该由两个人而不是一个人尊重的关系。

人们普遍误解 class 之间的关系主要是 "aggregations" 或 "compositions"。我认为这个不幸的传统已经在 C++ 社区中建立起来了。

相反,class 之间最重要的一种关系是 "associations",因为它们在 UML class models/diagrams 中被称为。因此,如果您想对 CityAirport 之间的关系建模,您可能希望选择 one-to-many 关联(因为一个城市可能有多个机场,但任何机场都被分配到一个城市)。

在 UML 中,聚合和组合都是关联的特例,用于表达两个 class 的实例之间的 part-whole 关系。由于机场实际上并不是城市的一部分,而只是与城市相关,因此 CityAirport 之间既没有组合也没有聚合,只是一个普通的关联。

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

将关联建模为组合的唯一好理由是组件类型的实例 "weak entities" 没有自己的身份(对象 ID)。但机场确实有自己的 ID,因此没有必要,也没有任何好处,将它们建模为城市的组成部分。