Down345 2022-12-24 09:31 采纳率: 0%
浏览 437
已结题

对标记redefines给出的这个解释到底对不对?

具体内容见“如何理解UML2.5.1(05篇)”一文。

我的问题是,我在此文中给出的redefines的最新解释是否正确?如不正确,请给出一个正确的解释。
我倒是希望我给出的这个解释不正确,因为其还是与完全没有subsets/redefines标记的区别太少,能应用的场景太少。

欢迎大家积极评论、留言,先感谢了。

  • 写回答

11条回答 默认 最新

  • Down345 2022-12-25 17:54
    关注

    感谢大家的回复,受到大家给出的答案的启发,现在我提出一个最新答案,还请大家批评指正。谢谢。

    两个关联具有泛化关系的两个先决条件:
    一、两个关联在语义上具有泛化关系;
    二、两个关联联接两对具有泛化关系的类。
    这就导致如果两个关联具有泛化关系,则关联两个端点必须具有subsets/redefines标记。
    以“UML2.5.1”中的Figure9.4为例,其右侧的Classifier和ClassifierTemplateParameter之间有两个关联,左边一个关联(Asso1)两端有redefines标记,右边一个关联(Asso2)两端则没有任何标记。
    Asso1满足前述两个先决条件,因此Asso1与第三个关联(Asso3)之间具有泛化关系,进而导致Asso1两端都有redefines标记。
    Asso2满足第二个先决条件(因为其与Asso1联接的是相同的类),但是不满足第一个先决条件。由于其与其它关联之间没有泛化关系,因此关联两端没有任何标记。
    现在也可以解释为什么redefines与没有subsets/redefines标记的效果可以完全相同。原因也不复杂,当关联一端,尤其是两端有redefines标记时,其作用是告诉看图人这是一个泛化关联。也就是说,关联两端都有redefines标记的效果与没有subsets/redefines标记的效果完全相同,但是前者还有一个后者不具有的功能:即其所修饰的关联是一个泛化关联。这个功能在Figure8.4中还不明显,因为泛化和被泛化的关联在同一个图中。但是这个功能在例如前述Figure9.4中就很明显,如果Asso1两端没有任何标记,则很难让看图人知道这是一个泛化关联。而造成这个问题的起因就在于UML2.5.1放弃了之前用在关联之间画继承符号的方式表达关联泛化。

    因此现在我又有了一个新问题:
    我之前给出的那个解释是不是画蛇添足?
    欢迎大家继续讨论,先感谢了。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月30日
  • 创建了问题 12月24日