Я не могу найти ошибку в этой диаграмме классов UML

#inheritance #uml #composition #class-diagram

#наследование #uml #состав #диаграмма классов

Вопрос:

UMLclassdiagramm

Эта диаграмма UML имеет ровно одну ошибку, но я не уверен, что это такое.
Я предполагаю, что B это не может быть частью A , потому что это суперкласс C .

У кого-нибудь есть решение?

Комментарии:

1. Эй, да, я думаю, что вижу проблему. Я отвечу, задав вопрос — что представляет собой черный бриллиант?

2. Ну что ж, Кристоф и Герт все равно ответили! Их ответы верны, как я вижу.

Ответ №1:

Если C является специализацией B, он также наследует свои ассоциации. Это означает, что любой экземпляр C является компонентом экземпляра A в дополнение к тому, что он является компонентом экземпляра D (из-за кратности 1 ..1): это противоречит композиции UML, которая требует исключительного владения.

Вы можете получить действительную диаграмму, например, удалив наследование, изменив кратность рядом с RoleA на 0 ..1 или используя агрегацию вместо композиции на стороне A.

Ответ №2:

Элемент может играть роль «части» только в одной композиции. C имеет унаследованную композицию для A и композицию для D

Обе композиции являются обязательными (кратность = 1), поэтому допустимый C не может существовать