是否有适用于Scala的UML工具。我的问题的原因是它混合了功能和OO概念,因此我想知道这些工具如何表示UML图中的功能。
答案 0 :(得分:23)
这个thread总结了任何想要代表Scala类的UML工具所面临的障碍:
- UML中没有正式的mixins表示
- 很难代表:
- 封
- Scala类型成员
- 类构造函数参数bounds(a.k.a。“模板 输入“bounds / constraints”
- 协变和逆变类构造函数继承
- 一个阶级或特征与之间的关系 伴侣对象
本论文(“Evaluierung des Einsatzes von Scala bei der Entwicklung für die Android-Plattform”,pdf,德语)确实为特质混合和其他scala特定元素添加了刻板印象(第146页)。
2009年 Meiko Rachimow 添加的内容:
对于所有已发布的属性,存在隐式getter(
attribute1
和attribute2
),但可见性被声明为private
(attribute3
)。如果已发布的属性使用构造型Var
标记,则它们是变量,其中存在隐式setter(attribute2
)。构造型lazy
将实例变量标记为惰性(attribute4
)。
与UML类似,泛型类用抽象类型标记。通过使用Scala语言语法,可以为此类型声明上限和下限(
中EineKlasse
)。可以使用结构化类型作为边界,花括号(EineKlasse2
)包含哪些属性和方法。方法的通用类型参数包含在方括号(operation
)。
特征显示为抽象类,并使用构造型
trait
标记。抽象属性和方法以斜体显示(attribute2
,operation2
)。对于抽象属性,依赖关系箭头可以使用构造型requires
(Trait3
,attribute3
)进行标记。另一方面,构造型self
用于自引用类型(Trait4
)。如果特征继承了另一个特征,则继承将显示一个继承箭头(Trait2
)。如果类扩展了特征(Klasse
),也会使用此箭头类型。为了强调特征的“混合”,可以使用构造型mixin
(Klasse
)标记继承箭头。
单例对象显示为类,并使用构造型
singleton
标记。有可能存在两个具有相同名称的类元素。实际上它是属于伴侣类的单例对象。在这种情况下,依赖关系箭头标有构造型hasA
。
答案 1 :(得分:2)
答案 2 :(得分:1)
刚刚测试了Green UML Eclipse plugin。几个月前它没有用,但是使用Scala IDE每晚版本2012年4月)你可以获得某种类图。看起来很有希望。
答案 3 :(得分:0)
我使用的工具与Java,Intellij中的UML图(类或依赖项)相同,但仅适用于“最终”用户