【问题标题】:UML group inheritanceUML 组继承
【发布时间】:2014-08-04 06:19:19
【问题描述】:
我有一堆类需要继承相同的基类和接口。每个具体类都有箭头会使图表非常混乱。我想做一些事情,比如把具体的类放在一个“子组”中,然后从基类和接口中画箭头到包,包内的所有东西都会得到这个继承。另外,我看到了泛化集,但这仍然需要很多箭头,而且很乱。
类似这样的:
BaseClass Interface
| |
| |
| |
| |
\/ \/
________________
|ClassA |
|ClassB |
|ClassC |
|ClassD |
________________
并且 ClassA、ClassB、ClassC 和 ClassD 都继承了 BaseClass 和 Interface。
顺便说一句,我正在使用视觉范例。
【问题讨论】:
标签:
inheritance
uml
visual-paradigm
【解决方案1】:
没有任何方法可以在 UML 中对专门的分类器或接口进行分组。
您必须将每个专用分类器和通用分类器与一个单独的泛化关系联系起来。泛化是与恰好两端的直接关系。一种用于通用分类器,一种用于专用分类器。如果定义了泛化集,您可以使用树形连接器。泛化集中的树样式定义了专门化的分类器专门化在同一个泛化集中。树形样式还可以让您的图表更加清晰。
我建议您也使用更多图表。
【解决方案2】:
您的问题不受您的 UML Deisgn 软件的影响,它是一个更通用的 U.M.L.问题。
Altought UML 设计软件非常有用,我强烈建议从白板/笔记本的角度尝试 UML 图。
然后,在您选择的软件工具中表示这些图表。
由于您的类源自“BaseClass”,并支持“BaseInterface”,请记住,支持一个或多个接口,它也是由子类继承的。
..................................................
..+------------------+......+------------------+..
..| BaseClass +--(o--+ BaseInterface |..
..+------------------+......+------------------+..
..| [+] SomeProperty |............................
..+--------+---------+............................
...........|......................................
...........|......................................
...........^......................................
........../.\.....................................
........./...\....................................
........+-----+...................................
...........|......................................
...........|................+------------------+..
...........+----------------+ AChildClass |..
...........|................+------------------+..
...........|......................................
...........|................+------------------+..
...........+----------------+ BChildClass |..
............................+------------------+..
...........|......................................
...........|................+------------------+..
...........+----------------+ CChildClass |..
............................+------------------+..
..................................................
在此示例中:作为“BaseClass”的后代的“AChildClass”、“BChildClass”和“CChildClass”继承了“SomeProperty”属性。但是,也继承了对“BaseInterface”接口的支持。
尽管大多数编程语言都支持此功能,但我记得看过一些编程语言,其中相同的接口支持必须在每个类中显式声明。
干杯。