我可以在uml类图中为一个类绘制多重专业化吗?

时间:2019-01-27 01:26:11

标签: database uml diagram class-diagram

我正在寻找要在oracle中实现的数据库的UMLclass图。
在这个数据库中,我有一个可以以多种方式进行专门化的类。 举例说明:存在可以在Book and Magazine中专用的Publication类,而它们又可以是Digital或Hard Copy。
考虑到我的第二个专业有11个孩子,正确的表示方式是什么?

我想过这个解决方案: solution 您认为这是正确的吗?出版物可以同时作为电子书吗?这两个专业有重叠投掷吗?

2 个答案:

答案 0 :(得分:0)

您的解决方案完全可以。也许您应该重命名某些类,例如Digital Publication,因为有人可能认为Digital不是特殊的Publication

要使其变得更好,您应该考虑使用Generalization Sets。当前,您的四个概化都是一个默认集合,即使它们带有两个树也是如此。此默认集是重叠且不完整的。这意味着Publication的实例可以同时是所有四个专业化的实例,也可以是完全不同的事物。我认为出于您的目的,需要两个Generalization Sets

  • 使用BookMagazine的出版物种类
  • 发布方式是指Digital PublicationHard Publication

这两个标记都将带有属性{disjoint,complete}。

多重概括有其优点。明智地使用它即可。

答案 1 :(得分:-1)

问题的第一个版本

当然,一个类可以被多个继承(泛化)。

  

出版物可以是数字图书吗?

您的图表中没有这样说,因为:

  • Book ---|> Publication表示书是出版物,而不是出版物是书

  • Digital ---|> Publication表示数字是出版物,而不是出版物是数字

使“出版是数字图书”更接近 的一种方法是反转继承的方向:

enter image description here

带有出版物的

是一本书,而 是一本数字书,而不完全是数字书,因为数字书和电子书是两个不同的类

第二个问题版本

  

出版物可以同时作为电子书吗?

如果同时出现 意思是 答案是否定的,因为在您的图表中,Book不能同时也是数字的,因此实例不能同时是Book实例和Digital实例