2013-10-09 3 views
0

В диаграмме классов UML, как я могу опустить несущественные базовые классы, не создавая неправильного представления?Как опустить базовые классы в диаграмме классов UML

Рассмотрим следующую иерархию классов:

Class hierarchy

Я хочу, чтобы проиллюстрировать тот факт, что оба Blackbird s и Airplane s являются FlyingThing s. Но я не хочу загромождать свою диаграмму классов UML со всей родословной Blackbird.

Я мог бы просто оставить вне Bird, Animal и LivingOrganism, рисуя только три «соответствующие» классы. Но это выглядело бы так, как если бы Blackbird был получен только от FlyingThing и ни от чего другого.

Чтобы предотвратить это неправильное впечатление, я мог бы счесть включение класса Bird в конце концов, оставив только Animal и LivingOrganism. Но тогда было бы так, как если бы у Bird не было базовых классов вообще. Итог: везде, где я делаю разрез, всегда будет выглядеть так, как если бы у одного класса было меньше базовых классов, чем на самом деле.

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

Edit:

я выдумал классы на этой диаграмме, чтобы проиллюстрировать этот вопрос. Так что вопрос не о том, имеет ли смысл множественное наследование или этот дизайн класса. Предположим, они это делают. Этот вопрос касается не какого-либо конкретного инструмента моделирования UML: предположим, что мы работаем с ручкой и бумагой.

Чтобы повторно рассказать о моем вопросе: Imaging вы видели диаграмму, содержащую только три выделенных класса и ничего больше. Вы предположили бы, что эта диаграмма отражает всю правду и что Blackbird не имеет других базовых классов, кроме FlyingThing?

  • Если вы думаете, да, Blackbird по-видимому, происходит от FlyingThing только: то должен быть какой-то стандартный синтаксис UML, чтобы показать, что это не так.

  • Если вы считаете, что нет других базовых классов, которые автор диаграммы пропустил: тогда это отвечает на мой вопрос, и я просто видел проблемы, где на самом деле их нет. :-)

+0

right :) Я удалю свой комментарий – stan0

ответ

0

Я уверен, что вы найдете решение каждого дизайнера ... Диаграмма выставляет часть всей модели и только часть, так что вся проблема в том, какая часть ? Ответ на этот вопрос просто зависит от того, что вы хотите показать для понимания своей проблемы.

С уважением,

BR

+0

Спасибо, Red Beard, за то, что указали, что пропуски (без какой-либо специальной маркировки) отлично выглядят на диаграмме классов. –

0

В дополнение к тому, что правильно сказал @Red Борода, некоторые инструменты дают возможность добавлять ссылки на другие диаграммы (например, корпоративный архитектор делает):

enter image description here

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

Но сначала рассмотрим это:

ли ваш класс Blackbird действительно наследует от обоих FlyingThing и Bird? Возможно на некоторых языках, но не умный дизайн.

Или ваш generalization для FlyingThing на самом деле implementation интерфейса? Если это так, вы хотите использовать правильный тип соединения (как указано на изображении).

0

Мое решение определяет суперкласс с его именем (определением), также вы бы указали некоторое примечание, чтобы целевой разработчик не смешивал. пример: enter image description here и, кстати, я должен сказать, что это не относится к ISO. Эффекты кофе.

Смежные вопросы