从父类继承的关联

问题描述 投票:0回答:1

类的特化,继承父类的所有属性和关联。专业化可以不参与父类的关联吗?

示例:员工和他的经理专业化。经理可以参加连接员工和公司的协会吗?

inheritance uml associations class-diagram
1个回答
0
投票

确实,专业化继承了其父类的关联。

因此,如果

Employee
Employer
具有关联(例如,一名雇员有 1 个雇主,而一名雇主有 * 个雇员),并且如果
Manager
Employee
的专业化,则它会继承相同的关联。

有一些方法可以更改继承的元素

  • 您可以重新定义继承的属性或关联端,
  • 您也可以专门化继承的关联。

通过绘制

Manager
Employer
之间的关联来直观地呈现两者。在第一种情况下,您将在关联末端添加一个
{redefines ...}
装饰,在第二种情况下,您将在两个关联之间绘制一个泛化箭头(并非每个工具都接受这一点,尽管它是合法的 UML)。您可以在此处找到一些专门协会的示例。这篇研究论文全面概述了这种高级 UML 功能。

您可能想知道:如果有一个专门的或重新定义的关联,它有什么帮助?好吧,只需将重数更改为

0..0

话虽如此,这看起来很丑。这给人带来的不好的感觉同时也是一个很好的提醒:这可能不是一个好主意。事实上,里氏替换原则告诉我们,专用类型的元素应该可以与超级类型的元素互换使用(即,每当你与员工一起做某事时,你可以与经理一起做)。而这个设计就打破了这个原则。

更一般地说,你可能会在 UML 中很好地设计那些有不好的 OOP 设计的东西,但你不一定应该这么做。

© www.soinside.com 2019 - 2024. All rights reserved.