2010-04-22 1 views
9

В настоящее время я и несколько других разработчиков очищают нашу устаревшую базу кода, в основном разделяя визуальные и информационные слои. Чтобы помочь разработчикам, не участвующим в этом рефакторинге, понять модель, я хотел бы представить (довольно неформальную) диаграмму классов с комментариями о области и желаемом использовании для каждого класса. Поскольку я ленив, я бы хотел использовать UMLGraph для этого.Как я должен представлять mixin/role/trait с UML правильно?

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

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

ответ

3

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

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

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

Composition with Conflict Resolution http://img828.imageshack.us/img828/244/conflictcomposition.png

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

+0

Жордао, мне нравится вид этих диаграмм. Какой инструмент вы использовали для их создания? –

+0

@WayneConrad: Я использовал [yUML] (http://yuml.me/), проверьте это! –

+0

Это как Graphviz для UML. Очень хорошо! –

Смежные вопросы