Меня и несколько других разработчиков в настоящее время очищают нашу базу унаследованного кода, главным образом отделяясь визуальный и слои данных. Для помощи разработчикам, не вовлеченным в этот рефакторинг, понимают модель, я хотел бы представить (довольно неофициальную) диаграмму классов с комментариями об объеме и желаемом использовании для каждого класса. Так как я ленив, я хотел бы использовать UMLGraph для этого.
Однако существует небольшая проблема: у нас есть кодовая база жемчуга, и рефакторинг использует роли Американского лося экстенсивно. Теперь я не знаю UML достаточно хороший находить надлежащий abstaction для ролей - мое первое предположение было бы интерфейсами, но они также содержат реализацию; множественное наследование не вполне сокращает его также.
Как делают меня (или как был бы Вы) представлять роли правильно в диаграмме классов?
Я не эксперт по UML, но в исходной статье черты были представлены следующим образом
Диаграмма черт http: // img .skitch.com / 20100422-8iey4atkkama53ni81c3pca562.jpg
Я бы представил роль как класс UML со стереотипом «роль»
. Тогда класс, составляющий роль, будет иметь ассоциацию с ролью со стереотипом «делает»
.
Простая композиция http://img820.imageshack.us/img820/5665/simplecomposition.png
Если мне нужно было дополнительно адаптировать роль с псевдонимами или исключениями, я бы создал это как класс ассоциации с должным образом аннотированные члены и со стереотипом «адаптация»
. Имя класса ассоциации не имеет значения, потому что это не будет реальным типом в проекте; так что я бы оставил его безымянным.
Композиция с разрешением конфликтов http://img828.imageshack.us/img828/244/conflictcomposition.png
( Обратите внимание, что я показал адаптационный «класс», связанный с композицией и ролью, которую он адаптирует. Я действительно хотел связать его с ассоциацией между MyComposition
и MyRole1
. Просто инструмент, который я использовал, не поддерживал классы ассоциации).