Могу ли я нарисовать несколько специализаций для класса в диаграмме классов UML?

Я ищу рисунок диаграммы UMLclass для базы данных, которую я буду реализовывать в Oracle.
В этой базе данных у меня есть класс, который может быть специализирован более чем одним способом. В качестве примера: существует класс Publication, который может специализироваться на Book и Magazine, в свою очередь это может быть цифровая или печатная копия.
Как правильно это представить, учитывая, что у моей второй специализации примерно одиннадцать детей?

Я думаю об этом решении: решение Вы думаете, что это правильно? Публикация может быть специализированной как цифровая книга одновременно? Есть ли совпадение этих двух специализаций?

2 ответа

Решение

первая версия вопроса

Конечно, класс может наследоваться (обобщаться) несколькими.

Издание может быть цифровой книгой?

На вашей диаграмме ничего не сказано об этом, потому что:

  • Book ---|> Publication означает, что книга - это публикация, а не публикация - это книга

  • Digital ---|> Publication означает, что цифровое издание является публикацией, а не публикация является цифровым

Чтобы сделать что-то похожее на "Публикация - это цифровая книга", можно изменить направление наследования:

при этом Публикация - это Книга и Цифровая, но не совсем Цифровая Книга, потому что Цифровая и Книга - это два разных класса

вторая версия вопроса

Публикация может быть специализированной как цифровая книга одновременно?

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

Ваше решение в порядке. Может быть, вы должны переименовать некоторые классы, как Digital Publicationпотому что кто-то может подумать Digital не особенный Publication,

Чтобы сделать его еще лучше, вы должны рассмотреть возможность использования Generalization Sets, В настоящее время все четыре обобщения являются одним набором по умолчанию, хотя они показаны с двумя деревьями. Этот набор по умолчанию перекрывается и не является полным. Это означает, что экземпляр Publication может быть экземпляром всех четырех специализаций одновременно или быть чем-то совершенно другим. Думаю для твоих целей два Generalization Sets будет необходимо:

  • Публикация Book а также Magazine
  • PublicationMeans с Digital Publication а также Hard Publication

Оба будут отмечены свойствами {disjoint, complete}.

Многократное обобщение имеет свои достоинства. Просто используйте это с умом.

Другие вопросы по тегам