UML泛化和关系

时间:2012-12-03 15:51:58

标签: class inheritance uml diagram

目前我们的UML类图中有如下结构:

Node --1------------*-- Data
 ^                        ^
 |                        |
SpecialNode--1----*--SpecialData

E.g。 SpecialNode是Node类的特化,而SpecialData是类Data的专门化。

这个想法是每个SpecialNode只有SpecialData,没有'普通'数据。 但是,有些人认为,由于SpecialNode是一个Node,它可以与Data和SpecialData建立关系。

是否有任何可用的参考资料可以澄清SpecialNode是否只能包含SpecialData?如果没有,我们怎么能这样做(以干净的方式)。

亲切的问候, 朱斯

1 个答案:

答案 0 :(得分:0)

实际上,这种建模意味着SpecialNode继承了Node的所有属性,包括Data。否则它会与Liskov Substitution Principle相矛盾,这是良好设计的重要规则。我建议您不要将NodeSpecialNode定义为“拥有”DataSpecialData,而是拥有 {{1}的界面}。对于Data,它将与Node对象相关联,对于Data,它将与SpecialNode对象相关联。