2011-10-19 15 views
15

Scala用のUMLツールはありますか?私の質問の理由は、その機能とOOのコンセプトの融合であり、そのようなツールがどのようにUMLダイアグラムの機能を表しているか知りたいのです。Scala用のUMLツール

答えて

22

このthreadはScalaのクラスを表したい任意のUMLツールが直面している障害を要約したもの:UML

  • でのミックスインの公式表現がありません

    • 表現するのは困難である:
      • クロージャ
      • スカラタイプのメンバー
      • クラスのコンストラクタパラメータの境界(a.k.a. "テンプレート タイプ" 境界/制約)
      • 共変と反変クラスコンストラクタ継承
      • クラスまたは形質と コンパニオン・オブジェクト

    この論文の関係( "Evaluierung des Einsatzes von Scala bei der Entwicklung für die Android-Plattform"、pdf、German)は、特性ミックスインと他のスカラ固有の要素(146ページ)のステレオタイプを追加します。 2009年にメイコRachimowによって追加された何

    属性、公開されたすべての属性のgetterとsetter

    ​​

    を除き、暗黙のゲッター(attribute1attribute2)が存在します視認性はprivateattribute3)と宣言されました。パブリッシュされた属性がステレオタイプVarでタグ付けされている場合、それらは変数であり、暗黙のセッター(attribute2)が存在します。ステレオタイプlazyは、インスタンス変数を遅延(attribute4)とマークします。

    クラスとジェネリックUMLのよう

    Scala class and genericity

    、ジェネリッククラスは抽象型でマークされています。 Scala言語の構文を使用すると、このタイプの上限と下限を宣言できます(EineKlasse)。構造体型を境界として使用することができます。属性とメソッドは、中括弧(EineKlasse2)で囲まれています。メソッドの汎用型パラメータは角括弧(operation)で囲まれています。

    Scala traits in UML

    形質は抽象クラスのように表示し、ステレオタイプtraitでタグ付けされる形質。抽象属性およびメソッドはイタリック(attribute2,operation2)で表示されます。抽象的な属性の場合、依存矢印にステレオタイプrequiresTrait3,attribute3)というタグを付けることができます。一方、ステレオタイプselfは自己参照型(Trait4)に使用されます。形質が別の形質を継承する場合、継承の矢印(Trait2)が表示されます。クラスが特性を拡張する場合、この矢印タイプも使用されます(Klasse)。形質の「ミックスイン」を強調するために、継承矢印にステレオタイプmixinKlasse)を付けることができます。

    シングルトンは

    Scala singleton in UML

    シングルトンオブジェクトは、クラスのように表示し、ステレオタイプsingletonでタグ付けされているオブジェクト。同じ名前のクラス要素が2つ存在する可能性があります。実際、それは所属のクラスを持つシングルトンオブジェクトです。この場合、依存性矢印はステレオタイプhasAでタグ付けされます。

  • +0

    実際に論文へのリンクは機能しません。 –

    +0

    @PeterSchmitz:そのPDFファイルへのリンクを修正しました。 – VonC

    +1

    @VonC特質クラス図のスカラ記号(またはスケルトン)を追加することができれば、本当に役に立つかもしれません。 (例えば、 'trait Trait2 Trait'はTrait'を拡張します。) – dips

    1

    ちょうどGreen UML Eclipse pluginをテストしました。数か月前には動作しませんでしたが、Scala IDEの夜間バージョン(2012年4月)でクラス図を作成できます。約束しているようだ。

    2

    試してみてください(実験的)Dia2Scalaツールです。 Notationは、Meiko Rachimowの論文(VonCのanswerに記載されています)の表記に基づいています。

    +0

    有望そうです。しかし、コードからダイアグラムを生成することはできますか? –

    +0

    @ Wei-ChingLinいいえ、それは唯一の道具です:dia→scala。 Scalaパーサを書くことは想像するのがかなり難しいかもしれません。 – monnef

    関連する問題