Как правильно представить миксин / роль / черту с UML? - PullRequest
9 голосов
/ 22 апреля 2010

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

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

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

Ответы [ 2 ]

8 голосов
/ 22 апреля 2010

Я не эксперт по UML, но в оригинальной статье черты были представлены так

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

3 голосов
/ 27 июля 2010

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

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

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

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

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

...