Наследование групп UML

У меня есть куча классов, которым нужно наследовать один и тот же базовый класс и интерфейс. Наличие стрелок от каждого конкретного класса делает диаграмму очень запутанной. Я хочу сделать что-то вроде помещения конкретных классов в «подгруппу» и просто рисовать стрелки от базового класса и интерфейса к пакету, и все внутри пакета получит это наследование. Кроме того, я видел набор обобщений, но он по-прежнему требует много стрелок и запутан.

Что-то вроде этого:

BaseClass    Interface
    |         |     
    |         | 
    |         | 
    |         | 
    \/       \/
________________
|ClassA        |
|ClassB        |
|ClassC        |
|ClassD        |
________________

И все ClassA, ClassB, ClassC и ClassD наследуют как BaseClass, так и Interface.

Кстати, я использую визуальную парадигму.


person user3657017    schedule 13.06.2014    source источник


Ответы (2)


В UML нет никакого способа сгруппировать специализированные классификаторы или интерфейсы. Вы должны соединить каждый специализированный и общий классификатор одним отдельным отношением обобщения. Обобщение — это прямая связь ровно с двумя концами. Один для общего и один для специализированного классификатора. Если набор обобщения определен, вы можете использовать соединитель в виде дерева. Древовидный стиль в наборе обобщения определяет, что специализированные классификаторы специализированы в одном и том же наборе обобщения. Древовидный стиль также делает вашу диаграмму более понятной.

Я также рекомендую вам использовать больше диаграмм.

person Vladimir    schedule 13.06.2014

Ваш вопрос не зависит от вашего программного обеспечения UML Deisgn, это более общий UML. вопрос.

Хотя программное обеспечение для проектирования UML очень полезно, я настоятельно рекомендую попробовать диаграммы UML с точки зрения доски / ноутбука.

А позже представьте эти диаграммы в выбранном вами программном инструменте.

Поскольку ваши классы происходят от «BaseClass» и поддерживают «BaseInterface», помните, что поддержка одного или нескольких интерфейсов также наследуется подклассами.

..................................................
..+------------------+......+------------------+..
..|    BaseClass     +--(o--+   BaseInterface  |..
..+------------------+......+------------------+..
..| [+] SomeProperty |............................
..+--------+---------+............................
...........|......................................
...........|......................................
...........^......................................
........../.\.....................................
........./...\....................................
........+-----+...................................
...........|......................................
...........|................+------------------+..
...........+----------------+   AChildClass    |..
...........|................+------------------+..
...........|......................................
...........|................+------------------+..
...........+----------------+   BChildClass    |..
............................+------------------+..
...........|......................................
...........|................+------------------+..
...........+----------------+   CChildClass    |..
............................+------------------+..
..................................................

В этом примере: "AChildClass", "BChildClass" и "CChildClass", которые являются потомками "BaseClass", унаследовали свойство "SomeProperty". Но также унаследована поддержка интерфейса «BaseInterface».

Большинство языков программирования поддерживают эту функцию, хотя я помню, как смотрел один язык программирования, где поддержка одного и того же интерфейса должна была быть явно объявлена ​​в каждом классе.

Ваше здоровье.

person umlcat    schedule 18.07.2014