这不是一个真正的编程(编码)问题,对不起(但设计是第一位的)。
我不明白disjoint
和overlapping
之间的区别。它出现在几本书中,与OCL
有关系,被认为是UML
的一部分,但OMG最新的OCL规范不再提及这些术语;因此,对我来说,它似乎有些不明确。如果有人能澄清这背后的原因,我将不胜感激。它只是同一个超类的多重继承吗?
答案 0 :(得分:6)
想象一下,超类A有两个子类B和C.
我们说A,B和C之间的继承关系是不相交的,当A实例不能同时是B实例和C实例时(即超类型的实例最多只出现在子类中)。否则,我们说继承集重叠
默认情况下,OO语言中的继承实现是不相交的。
答案 1 :(得分:1)
目前的2.2上层结构规范,第76页(印刷版),第7.3.21节,引用如下。它与泛化规则和集合论有关。您可以在Web上搜索子类型和不相交并阅读非UML示例,它们应该适用。虽然图7.4 8看起来很有用,但是在第78页开始的示例中。好的,我读了规范中的示例,他们把它钉了下来,但是有图片所以我不能轻易复制那些。
一个例子中的文字:{完整,不相交}
因为这个 GeneralizationSet是分区的(即,被约束为完整且不相交),Person的每个实例必须是a 女性或男性;也就是说,它必须是一个或另一个而不是两者。
http://www.omg.org/spec/UML/2.2/Superstructure/PDF/
规范列出了所有组合。