#inheritance #uml #composition #class-diagram
#наследование #uml #состав #диаграмма классов
Вопрос:
Эта диаграмма 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
не может существовать