标签: class inheritance uml modeling class-diagram
这种情况如何以更优雅(和专业)的方式(使用遗产?)表示在类图上?
演员 [class]可以是自然人 [class]或公司 [class],但不能同时为两者。 演员可以是内部演员 [class]或外部演员 [class],但不能两者兼得。 内部演员可以是自然人或公司,但不能同时是两者 外部演员可以是自然人或公司,但不能同时是两者。
当然,在这里,每个所说的类都有其特定的属性,方法以及与图上其他类的关系。
答案 0 :(得分:1)
如果你不介意多继承,你可以考虑这样的事情:
(内部演员显示两次以简化图表,它是同一个类。)
答案 1 :(得分:0)
这是一种优雅的方式,用最少的类来表示你想要的UML:
由于{complete, disjoint}限制,此模型要求实例恰好是Physical Person 或 Company中的一个,而同时恰好是一个Inner Actor 或 External Actor。底部的实例规范显示了如何实例化它。
{complete, disjoint}
Physical Person
Company
Inner Actor
External Actor
UML可以代表这一点没有问题。但是,如何将它映射到编程语言是另一回事。 (以及另一个SO问题。)许多语言不支持实例的多重分类,因此你必须将方形钉子敲入圆孔。