Диаграмма классов UML: кардинальность отношения переопределения классов

Я хочу представить следующий случай, используя диаграмму классов UML:

  • класс A, который имеет некоторые элементы C
  • класс B, который является подклассом A, который содержит 1 элемент D, который является подклассом C

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

Пример

По сути (на мой взгляд), класс A имеет коллекцию C, но подкласс B допускает (максимум) только один элемент в этой коллекции, который должен быть экземпляром D.

Каков наилучший способ его представления?


person NSR    schedule 18.08.2016    source источник
comment
За исключением того, что вы не показываете иерархическую связь между D и C, я думаю, вы ее поняли.   -  person Bruce    schedule 18.08.2016
comment
Ваши разъемы неправильные. Обобщение не имеет ребра, ведущего в треугольник. Для толстых и тонких линий нет семантики (поэтому они должны иметь одинаковую ширину).   -  person qwerty_so    schedule 19.08.2016
comment
извините за ошибку, я забыл иерархию между C и D. Теперь правильно   -  person NSR    schedule 19.08.2016


Ответы (1)


Чтобы изменить (ограничить) количество элементов или специализировать тип элемента в подклассе, вы должны использовать ограничение «переопределить».

В вашем случае, если ваш атрибут в классе A

anAttribute:C[*]

Тогда в классе B у вас будет

anAttribute:D[0..1] {redefines anAttribute}

Конечно, вы можете использовать то же самое для атрибута, показанного как ассоциация (как на вашей диаграмме), а затем просто добавить {redefines anAttribute} в конце ассоциации (и, конечно, концы ассоциации должны быть названы anAttribute тогда).

person Ister    schedule 18.08.2016
comment
IIRC, переопределяемый тип должен быть подклассом переопределенного типа. - person Jim L.; 18.08.2016
comment
Верный. Вот почему я написал о специализации типа. Это также упоминается в примере OP. - person Ister; 19.08.2016
comment
Большое тебе спасибо. Это именно то, что я хотел знать. С наилучшими пожеланиями - person NSR; 19.08.2016