在UML类图中,如何在不给出错误印象的情况下省略不相关的基类?
让我们考虑以下类层次结构:
我想说明Blackbird
和Airplane
都是FlyingThing
的事实。但我不想把我的UML类图与Blackbird
的整个祖先混为一谈。
我可以简单地省略Bird
,Animal
和LivingOrganism
,只绘制三个“相关”类。但这看起来好像Blackbird
只来自FlyingThing
,而不是其他任何东西。
为了防止出现这种错误的印象,我可能会考虑包括Bird
课程,只留下Animal
和LivingOrganism
。但是看起来好像Bird
根本就没有基类。结论:无论我在哪里进行剪切,它总是看起来好像一个类的基类比实际的更少。
我正在寻找的是某种方式来表明“除了显示的类之外,这个类还有其他基类,但是我不能费心去画它们。”我想象一下省略号的一些东西。是否有任何标准的表达方式?
修改
我在这个图中编写了类来说明问题。因此问题是不关于多重继承或此特定类设计是否有意义。我们假设他们这样做了。这个问题不是关于特定的UML建模工具,我们假设我们在这里使用笔和纸。
重新说出我的问题:想象您看到的图表只包含三个突出显示的类而没有别的。您是否认为此图表示全部事实,Blackbird
除了FlyingThing
之外没有其他基类?
如果您认为,是的,Blackbird
似乎仅来自FlyingThing
:那么必须有一些标准的UML语法来表明情况并非如此。
如果您认为,不,可能会有图表的作者省略的其他基类:那么这就回答了我的问题而我只是看到了实际上没有的问题。 : - )
答案 0 :(得分:0)
我很确定你会找到每个设计师的解决方案...... 一个图表暴露了整个模型的部分和唯一的一部分,所以整个问题是哪个部分?对这个问题的回答很简单,取决于你想要展示什么来理解你的问题。
此致
BR
答案 1 :(得分:0)
除了@Red Beard正确的说法之外,一些工具还可以为其他图表添加超链接(例如,企业架构师):
所以你可以添加一个链接到另一个图表来揭示完整的继承祖先。
但首先考虑一下:
您的班级Blackbird
是否真的继承了FlyingThing
和Bird
?
可能在某些语言中,但不是巧妙的设计。
或者你的generalization
到FlyingThing实际上是接口的implementation
吗?如果是这样,您希望使用正确的连接类型(如图中所示)。
答案 2 :(得分:0)
我的解决方案是使用其名称(定义)指定超类,您也会提供一些注释以确保目标开发人员不会混淆。 例: 顺便说一下,我不得不说,这不属于ISO。咖啡效果。