【问题标题】:UML Generalization and RelationshipsUML 泛化和关系
【发布时间】:2012-12-03 15:51:57
【问题描述】:

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

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

例如SpecialNode 是 Node 类的特化,SpecialData 是 Data 类的特化。

这个想法是每个 SpecialNode 只有 SpecialData,没有“普通”数据。 然而,有些人会争辩说,由于 SpecialNode 是一个节点,它可以与 Data 和 SpecialData 都有关系。

是否有任何可用的参考资料可以阐明 SpecialNode 是否只能具有 SpecialData?如果不是,我们如何(以干净的方式)强制执行此操作。

亲切的问候, 乔斯

【问题讨论】:

    标签: class inheritance uml diagram


    【解决方案1】:

    确实,这样的建模意味着SpecialNode 继承了Node 的所有属性,包括Data。否则它将与Liskov Substitution Principle 相矛盾,这是良好设计的重要规则。我建议不要将您的NodeSpecialNode 定义为“拥有”DataSpecialData,而是有一个接口 Data。对于Node,它将与Data 对象关联,对于SpecialNode,它将与SpecialData 对象关联。

    【讨论】:

      猜你喜欢
      • 2015-04-20
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 2015-06-07
      • 1970-01-01
      • 2017-01-04
      相关资源
      最近更新 更多