2011-10-19 78 views
15

是否有任何可用於Scala的UML工具?我的問題的原因是它的功能和OO概念的混合,因此我想知道這些工具如何表示UML圖中的功能。Scala的任何UML工具

回答

22

thread總結了所面臨的任何UML工具,希望代表Scala類的障礙:

  • 有混入的UML沒有正式表示
  • 也很難代表:
    • 關閉
    • 斯卡拉類型成員
    • 類構造函數參數邊界(又名。 「模板 類型」 邊界/約束)
    • 協變和逆變類構造函數繼承
    • (一類或性狀和 同伴對象

本文之間的關係「Evaluierung des Einsatzes von Scala bei der Entwicklung für die Android-Plattform」,pdf,德語)的確爲特質混合素和其他特定的元素添加了定型(第146頁)。

什麼被明光Rachimow 2009年新增:

屬性,getter和setter

​​

對於所有已發佈的屬性存在隱式getter(attribute1attribute2),除能見度被宣佈爲privateattribute3)。如果發佈的屬性使用原型Var進行標記,則它們是變量,存在隱式設置器(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對象被顯示等類和具有標記原型singleton。有可能存在兩個具有相同名稱的類元素。事實上,它是一個單身物體,屬於伴侶類。在這種情況下,依賴性箭頭標記爲原型hasA

+0

其實這篇論文的鏈接不起作用。 –

+0

@PeterSchmitz:我已修復該PDF文件的鏈接。 – VonC

+1

@VonC如果你可以爲特徵類圖添加scala簽名(或骨架),它真的會幫助我(也可能是其他人)。 (例如'特質Trait2延伸Trait'等等。) – dips

1

剛剛測試了Green UML Eclipse plugin。幾個月前它不能正常工作,但是在2012年4月的Scala IDE夜間版本中),你可以得到某種類圖。看起來很有希望。

2

你可以嘗試(實驗)Dia2Scala工具。該代碼生成器使用的Notation基於來自Meiko Rachimow的論文(在來自VonC的answer中描述)的符號。

+0

它看起來很有希望。但它可以從代碼生成圖表嗎? –

+0

@ Wei-ChingLin不是,它只是一種工具:dia - > scala。編寫一個Scala語法分析器可能很難想象。 – monnef