如何正确地用UML表示mixin / role / trait?

时间:2010-04-22 11:17:40

标签: perl uml roles moose class-diagram

我和其他几位开发人员目前正在清理我们的遗留代码库,主要是分离视觉和数据层。为了帮助没有参与这种重构的开发人员理解该模型,我想介绍一个(相当非正式的)类图,其中包含有关每个类的范围和所需用法的注释。因为我很懒,所以我想使用UMLGraph。

但是有一个小问题:我们有一个perl代码库,重构使用Moose角色。现在我不知道UML足以找到适当的角色抽象 - 我的第一个猜测是接口,但它们也包含实现;多重继承并没有完全削减它。

我如何(或如何)在类图中正确表示角色?

2 个答案:

答案 0 :(得分:8)

我不是UML专家,但在original paper中,Traits就像这样表示

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

答案 1 :(得分:3)

我会将角色表示为具有«role»构造型的UML类。然后,组成该角色的类将与具有构造型«does»的角色关联。

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

如果我需要进一步调整角色,使用别名或排除,我会将其创建为具有正确注释成员和«adaptation»构造型的关联类。关联类的名称无关紧要,因为它不是设计中的真实类型;所以我不给它命名。

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

(请注意,我已经展示了与作曲及其适应角色相关的改编“类”。我真正想要做的是将其连接到MyCompositionMyRole1之间的关联。只是我使用的工具不支持关联类。)