UML 2.5.1 规范可在 OMG 网站上免费下载,但没有具体说明
GeneralizationSet
的理想所有者元素应该是什么。我们有以下选择:
由于
GeneralizationSet
是 PackageableElement
,我们可以将所有权分配给 Package
。这很可能是它包含的所有泛化的最近的封闭命名空间(或者至少对于“通用”分类器来说,它对于其集合中的所有泛化必须相同),但是在UML 规范;
由于 GeneralizationSet 中的所有 Generalization 必须具有相同的“通用”分类器,因此这可以是 GeneralizationSet 本身的指定所有者;
可以有关联的
powertype
,但由于可能不存在(多重性为 [0..1]
),并且 GeneralizationSet 必须有一个所有者,所以这是行不通的;
还有什么吗?
我倾向于选择选项
2
,但不确定这是否有任何不可预见的影响?
选项 2 和 3 是不可能的,因为类不能拥有 GeneralizationSet。我认为选项 1 是最佳选择。
泛化集可以在没有泛化的情况下存在。因此,可以首先定义一个集合,然后找到它的概括。我可以想象一种利用它的方法。
所以,对于他们来说,确实没有最好的地方。这取决于建模者。将它们放在靠近概括的地方可能是个好主意。