Scala的任何UML工具

时间:2011-10-19 02:40:19

标签: scala uml

是否有适用于Scala的UML工具。我的问题的原因是它混合了功能和OO概念,因此我想知道这些工具如何表示UML图中的功能。

4 个答案:

答案 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和setter

Scala attributes

  

对于所有已发布的属性,存在隐式getter(attribute1attribute2),但可见性被声明为privateattribute3)。如果已发布的属性使用构造型Var标记,则它们是变量,其中存在隐式setter(attribute2)。构造型lazy将实例变量标记为惰性(attribute4)。

类和泛型

Scala class and genericity

  

与UML类似,泛型类用抽象类型标记。通过使用Scala语言语法,可以为此类型声明上限和下限(EineKlasse)。可以使用结构化类型作为边界,花括号(EineKlasse2)包含哪些属性和方法。方法的通用类型参数包含在方括号(operation)。

性状

Scala traits in UML

  

特征显示为抽象类,并使用构造型trait标记。抽象属性和方法以斜体显示(attribute2operation2)。对于抽象属性,依赖关系箭头可以使用构造型requiresTrait3attribute3)进行标记。另一方面,构造型self用于自引用类型(Trait4)。如果特征继承了另一个特征,则继承将显示一个继承箭头(Trait2)。如果类扩展了特征(Klasse),也会使用此箭头类型。为了强调特征的“混合”,可以使用构造型mixinKlasse)标记继承箭头。

单件对象

Scala singleton in UML

  

单例对象显示为类,并使用构造型singleton标记。有可能存在两个具有相同名称的类元素。实际上它是属于伴侣类的单例对象。在这种情况下,依赖关系箭头标有构造型hasA

答案 1 :(得分:2)

您可以尝试(实验性) Dia2Scala 工具。此代码生成器使用的Notation基于Meiko Rachimow的论文(在VonC的answer中描述)。

答案 2 :(得分:1)

刚刚测试了Green UML Eclipse plugin。几个月前它没有用,但是使用Scala IDE每晚版本2012年4月)你可以获得某种类图。看起来很有希望。

答案 3 :(得分:0)

我使用的工具与Java,Intellij中的UML图(类或依赖项)相同,但仅适用于“最终”用户

https://www.jetbrains.com/help/idea/class-diagram.html