UML から Java への変換により、UML 2.0 仕様が Java クラスに変換されます。 この変換を使用して、Java プロジェクトを UML 2.0 仕様からシードできます。 初期のシードの後に変換を適用して、更新された UML モデルと既存の Java コードをマージできます。
次の手順では、Java 変換の最も簡単な使用法を説明します。
UML モデルを Java に変換するには、次の手順を実行します。
1. モデリング・パースペクティブに切り替える。
2. 「モデル・エクスプローラー」ビューで、UML クラス (Class1 など) を右クリックする。
3. 「変換」>「変換を実行」>「UML2 から Javaへ (UML2 to Java)」をクリックする。
4. 「変換を実行」ダイアログが開きます。「対象コンテナーの作成 (Create Target Container)」ボタンをクリックします。
5. 「新規 Java プロジェクト」ダイアログが開く。 「プロジェクト名」フィールドに simple と入力し、
「完了」をクリックします。
6. 「変換の実行」ダイアログで、「完了」をクリックする。
新規の Java プロジェクトにはデフォルトのパッケージが含まれ、そのパッケージには新規の Java クラス Class1 が含まれます。
変換は、それ以外にも、さらに複雑な機能を実行できます。
例えば、ソース・モデルを変更しない名前の指定変更、
可視化を行う UML オブジェクトの置換、UML モデルと
Java ソースの変更のマージ、および潜在的な変換の問題を検出するための UML モデルの検証などが
あります。
UML | Java |
パッケージ | 同じ名前*を持つ Java パッケージ |
ステレオタイプ <<perspective>> のパッケージ | 無視されます |
キーワード <<Analysis>> または <<analysis>> を持つパッケージ | 無視されます |
クラス | 同じ名前* および可視性を持つ Java クラス |
(クラス) isLeaf プロパティー | Java クラスは、true の場合 "final" です |
(Class) isAbstract プロパティー | Java クラスは、true の場合 "abstract" です |
(Class) 汎化 | Java クラスは、指定されたスーパークラスを "拡張" します |
実装 | Java クラスは、指定されたインターフェースを "実装" します |
(クラスとインターフェースの間の) 実現 |
Java クラスは、指定されたインターフェースを "実装" します |
インターフェース | 同じ名前* および可視性を持つ Java インターフェース |
(インターフェース) 汎化 | Java インターフェースは、指定されたインターフェースを "拡張" します |
列挙
|
同じ名前* および可視性を持つ Java インターフェース |
EnumerationLiteral |
同じ名前* および可視性を持つ Java フィールド |
操作 | 同じ名前* および可視性を持つ Java メソッド |
(操作) isStatic プロパティー | Java メソッドは、true の場合 "static" です |
(操作) isAbstract プロパティー | Java メソッドは、true の場合 "abstract" です |
(操作) isLeaf プロパティー | Java メソッドは、true の場合 "final" です |
クラスと同じ名前を持つ (操作) | Java コンストラクター |
(操作) ステレオタイプ <<create>> | Java コンストラクター |
パラメーター | 同じ名前*を持つ Java パラメーター |
(パラメーター) Type プロパティー | Java パラメーターには指定されたタイプ (別のクラスであっても、プリミティブ・タイプであってもかまいません) があります |
(パラメーター) Direction プロパティー | Java メソッドは、"return" に設定されると "return <param type>" を持ちます。 それ以外の場合は、"<param type> <param name>" をメソッド・シグニチャーに追加します |
(パラメーター) Multiplicity プロパティー | 多重度についての情報を記載した、次の表を参照してください |
プロパティー | 同じ名前* および可視性を持つ Java フィールド |
(プロパティー) isStatic プロパティー | Java フィールドは、true の場合 "static" です |
(プロパティー) isLeaf プロパティー | Java フィールドは、true の場合 "final" です |
(プロパティー) Type プロパティー | Java フィールドには指定されたタイプ (別のクラスであっても、プリミティブ・タイプであってもかまいません) があります |
(プロパティー) Multiplicity プロパティー | 多重度についての情報を記載した、次の表を参照してください |
* 一部の文字は、Java 識別子では無効になります (スペースなど)。 Java 変換では、無効文字をアンダースコアー (_) で自動的に置換して、有効な識別子を作成します。 この置換が原因で、名前の競合が生じる可能性があり、変換によって 重複するクラスやインターフェースが生成されることを防止します。 検証機能を使用して、これらの問題を検出できます。 これらの置換の問題を回避するには、要素を名前変更するか、 マッピング機能を使用してソース・モデルを変更しない代替名を指定してください。
プロパティーおよびパラメーターの Java タイプ
UML 多重度 | 生成された Java タイプ |
0..1 | 属性、ポインター、または参照 (String など) |
1 | 属性 (String など) |
N (N > 1) | 配列 (String[] など) |
1..*、*、または x..y | コレクション、以下の表を参照 |
1..*、*、または x..y 多重度の Java コレクション
isOrdered プロパティー | isUnique プロパティー | UML コレクション |
生成された Java タイプ |
True | True | Ordered Set |
java.util.SortedSet |
True | False | Sequence |
java.util.List |
False | True | Set |
java.util.Set |
False | False | Bag |
java.util.Collection |
詳細
「詳細」タブは、いくつかのコード生成オプションを提供します。 「モデリング」>「変換」>「変換を構成」をクリックし、「UML から Java へ」構成を選択し、「詳細」タブを選択します。 このタブには、「getter と setter の生成」チェック・ボックス、および「コレクション」グループが含まれています。
「getter と setter の生成」にチェックマークが付けられていると、変換によって、UML プロパティーごとに getter および setter メソッドを持つプライベート・フィールドが生成されます。
このプロパティーの isLeaf (final) または isReadOnly が true に設定されている場合、setter は生成されません。 このプロパティーの isDerived が true の場合、setter 実装は空になります。
「コレクション」グループでは、UML から Java への変換によって生成されるコレクションを指定できます。
例えば、「シーケンス」ドロップダウンから「java.util.Vector」を選択すると、変換によってリストではなく、ベクトルが生成されます。 このドロップダウンにクラス名を入力すると、カスタム・コレクション・クラスを指定することもできます。 「バッグ」ドロップダウンに "custom.Bag" を入力した場合は、変換によってコレクションではなくバッグが生成されます。
「マッピング・モデルの作成」をクリックすると、Java 変換により
マッピング・モデルが作成されます。これは、変換可能要素ごとに成果物を持つ個別のモデル
です。 成果物は元の変換可能な要素を参照し、この要素と同じ名前に
なります。 元の要素の代替名を指定するには、
成果物のファイル名プロパティーに新規の名前を
入力します。 成果物のファイル名プロパティーを変更しない場合は、
変換により、成果物のデフォルト名を持つ要素が生成されます。
パッケージに代替名を指定すると、その代替名はそのパッケージ内のすべての分類子
に影響を与えます (分類子が完全修飾名を指定している場合を除く)。 次の表に、代替名の例をリストします。
UML ソース | マッピング成果物ファイル名 | 生成された Java |
"Package1" | "" | "Package1" |
"Package2" | "com.ibm.test" | "com.ibm.test" |
Package1 内の "Class1" | "" | Package1.Class1 |
Package2 内の "Interface1" | "ITestable" | com.ibm.test.ITestable |
Package2 内の "Class2" | "com.ibm.test.Testable" | com.ibm.test.Testable |
マッピング・モデルを使用するには、次のステップを完了します。
1. モデリング・パースペクティブに切り替える。
2.「モデル・エクスプローラー」ビューで、UML モデルをクリックする。
3. メニュー・バーで、「モデリング」>「変換」>「変換を構成」をクリックする。
4. 新規の UML2 から Java への変換を作成する (例えば、変換の名前を「マッピングの使用」にします)。
5.「マッピング」ページで、「マッピング・モデルの使用 (Use Mapping Model)」をクリックする。
6. 以前に作成したマッピング・モデルをクリックして、「実行」をクリックする。
変換が実行されると、マッピング・モデルに指定した代替名が
使用されます。