Как я представляю mixin/role/trait с UML правильно?

Меня и несколько других разработчиков в настоящее время очищают нашу базу унаследованного кода, главным образом отделяясь визуальный и слои данных. Для помощи разработчикам, не вовлеченным в этот рефакторинг, понимают модель, я хотел бы представить (довольно неофициальную) диаграмму классов с комментариями об объеме и желаемом использовании для каждого класса. Так как я ленив, я хотел бы использовать UMLGraph для этого.

Однако существует небольшая проблема: у нас есть кодовая база жемчуга, и рефакторинг использует роли Американского лося экстенсивно. Теперь я не знаю UML достаточно хороший находить надлежащий abstaction для ролей - мое первое предположение было бы интерфейсами, но они также содержат реализацию; множественное наследование не вполне сокращает его также.

Как делают меня (или как был бы Вы) представлять роли правильно в диаграмме классов?

9
задан Nikolai Prokoschenko 22 April 2010 в 11:17
поделиться

2 ответа

Я не эксперт по UML, но в исходной статье черты были представлены следующим образом

Диаграмма черт http: // img .skitch.com / 20100422-8iey4atkkama53ni81c3pca562.jpg

8
ответ дан 4 December 2019 в 20:22
поделиться

Я бы представил роль как класс UML со стереотипом «роль» . Тогда класс, составляющий роль, будет иметь ассоциацию с ролью со стереотипом «делает» .

Простая композиция http://img820.imageshack.us/img820/5665/simplecomposition.png

Если мне нужно было дополнительно адаптировать роль с псевдонимами или исключениями, я бы создал это как класс ассоциации с должным образом аннотированные члены и со стереотипом «адаптация» . Имя класса ассоциации не имеет значения, потому что это не будет реальным типом в проекте; так что я бы оставил его безымянным.

Композиция с разрешением конфликтов http://img828.imageshack.us/img828/244/conflictcomposition.png

( Обратите внимание, что я показал адаптационный «класс», связанный с композицией и ролью, которую он адаптирует. Я действительно хотел связать его с ассоциацией между MyComposition и MyRole1 . Просто инструмент, который я использовал, не поддерживал классы ассоциации).

3
ответ дан 4 December 2019 в 20:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: