我有这个场景是由UML类图建模的,我不同意粗体注释。
课程可以属于类别,每个类别都分配了自己的管理员,这也是员工 (可以改变, 因此不适合通过继承解决</ strong>)。
为什么Employee&lt; | ==管理员不适合继承?我认为它显然是一个&#34;是一个&#34;关系,而不是&#34;有一个&#34;。他们可以&#34;切换&#34;通过双面铸造可以很容易地解决。额外的属性将被删除,缺失的属性将被初始化为NULL或一些默认值。
答案 0 :(得分:1)
虽然没有明确说明,但部分
不适合通过继承来解决
为您提供了如何理解的提示
可以更改
如果没有括号部分,可以继承的重要部分来自此部分
管理员,也是员工
然而,您有信息可以更改(例如,将来可能有外部管理员或管理部分可以排除到单独的公司,因此管理员将不再是员工)。因此,您不能认为管理员是员工这一事实(将来它现在可能不再适用),因此您不能使用继承来模拟这种关系。
答案 1 :(得分:1)
考虑这个模型(我在这里合并了两个模型):
左右管理员有什么区别?左侧具有Employee
继承的所有属性和操作,使Category
可以访问它们。但那应该只能与Admin
部分互动。在正确的版本中,Admin
可以将其Employee
- 关系设为私有,因此Category
无法访问它。
无论如何,必须通过从Category
删除它来处理pro / / demote。那运动时呢?当您处理已继承的Admin
时,您只需在需要Employee
的所有操作中使用该对象。现在,当他不再是管理员时,必须做些什么?您必须创建一个简单的Employee
并向他提供前Admin
所需的部分。
在正确的情况下,您只需删除Admin
。