Как правильно представить миксин / роль / черту с UML?

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

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

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

2 ответа

Решение

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

http://img.skitch.com/20100422-8iey4atkkama53ni81c3pca562.jpg

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

http://img820.imageshack.us/img820/5665/simplecomposition.png

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

http://img828.imageshack.us/img828/244/conflictcomposition.png

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

Другие вопросы по тегам