Как правильно представить миксин / роль / черту с 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
, Просто инструмент, который я использовал, не поддерживал классы ассоциации).