UML から Java への変換

UML から Java への変換では、UML モデル要素が Java™ コードに変換され、 Java 2 Platform, Standard Edition 1.4 (J2SE 1.4) および Java 2 Platform, Standard Edition 5.0 (J2SE 5.0) と互換性のあるコードが生成されます。
重要: UML から Java 1.4 への変換は推奨されておらず、現在では、UML から Java への (非推奨) 変換と呼ばれています。 UML から Java への (非推奨) 変換には機能が追加されておらず、 現在、UML から Java への変換と呼ばれている UML から Java 5.0 への変換とは変換動作が異なっています。 アプリケーションに Java 2 Platform, Standard Edition (J2SE) 5.0 または J2SE 1.4 以降と互換性のあるコードが含まれているかどうかにかかわらず、UML から Java への変換を使用する必要があります。

有効な変換ソース

UML から Java への変換では、以下の UML ソースから Java クラスが生成されます。
  • UML モデル
  • パッケージと、そのパッケージのコンテンツ
  • ネストなしのクラスと、そのクラスのコンテンツ
  • ネストなしのインターフェースと、そのインターフェースのコンテンツ
  • ネストなしの列挙

この変換では、UML モデル、パッケージ、クラス、およびインターフェースのコンテンツを変換します。 例えば、この変換によってクラスが変換された場合、 そのクラスの操作とプロパティーも変換されます。

変換構成エディターを使用せずに、「プロジェクト・エクスプローラー」ビューでモデルまたはモデル要素を選択した場合、その選択したモデルまたは要素によって、変換構成に指定したソース・モデルまたはソース要素がオーバーライドされます。 変換構成は影響を受けず、変換構成エディターまたは「新規変換構成」ウィザードの「ソースとターゲット」ページで指定したソースも変更されません。

有効な変換対象

UML から Java へのの出力の宛先として、Java プロジェクト、または Java プロジェクト内のソース・フォルダーを指定できます。

生成される出力の代替名

マッピング・モデルを作成すれば、変換によって生成された要素の代替名をソース・モデルを変更せずに指定できます。 命名上の制約などの Java 固有の詳細をプラットフォーム独立モデルに組み込む場合、 またはソース・モデルの論理編成がターゲット・パッケージとして適切でない場合は、代替名を指定できます。

com.ibm.NewName などの修飾名や、NewName などの非修飾名を指定できます。 パッケージに代替名を指定すると、分類子に完全修飾名が指定されていない限り、該当パッケージ内のすべての分類子に影響を及ぼします。 変換によって生成された要素に対して、同じプロジェクト内の代替場所を指定することもできます。

UML から Java への 変換でサポートされるパラメーター化された型

UML から Java への 変換を作成または構成する場合に、パラメーター化された型の汎用インターフェース、または generics として以下の Java コレクション型を指定できます。
  • AbstractCollection
  • AbstractList
  • AbstractMap
  • AbstractSequentialList
  • AbstractSet
  • ArrayList
  • BitSet
  • Collection
  • HashMap
  • HashSet
  • Hashtable
  • LinkedList
  • List
  • Map
  • Set
  • SortedMap
  • SortedSet
  • Stack
  • TreeMap
  • TreeSet
  • WeekHashMap
  • Vector

変換では、その他の Java コレクションに対してはパラメーター化された型の情報を生成しません。

UML コレクション情報がある Java ソース・コードの注釈

J2SE 5.0 と互換性のあるコードを生成するように変換を構成しなかった場合、UML から Java への変換では、生成される Java コレクション・タイプに、UML コレクション・タイプに関するコメントが追加されます。 これらのコメントにより、ビジュアル開発ツールで Java コレクション型の正確なビジュアル表示を作成できるようになります。

UML 属性の多重度として * を指定し、変換構成の Java コレクション情報を変更しなかった場合、デフォルトでは、UML から Java への変換によって、Java 集合が生成されます。

以下の表は、Class1 と Class2 の間の関連関係の例を示したものです。この関連関係では、1..* という多重度が指定されています。 この表には、変換が変換構成のデフォルト値を使用して生成するソース・コードの抜粋、および関連関係のビジュアル表示も示されています。 この変換は、ソース・モデル要素と生成済みコードの間のトレース関係を作成するようには構成されていないものとします。
UML 要素 UML から Java への 変換の出力 変換出力のビジュアル表示
このイメージは、多重度を指定する関連がある UML モデル要素 Class1 および Class2 を示しています。 変換構成の「Java 5 を使用」チェック・ボックスをクリアした場合、この変換では、以下のソース・コードが生成されます。
public class Class1 {
	/** 
	 * <!-- begin-user-doc -->
* <!-- end-user-doc -->
	 * @uml.annotations for <code>class2</code>
	 *     collection_type="Package1.Class2"
	 * @generated "UML to Java (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
	 */
	private Set class2;
}
このイメージは、クラス Class2 のコレクションが含まれている Class1 のビジュアル表示を示しています。
変換構成の「Java 5 を使用」チェック・ボックスを選択した場合、この変換では、以下のソース・コードが生成されます。
public class Class1 {
/**
*
*
* @generated "UML to Java (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
*/
	private Set<Class2> class2;
}</Class2>
上記の例で生成されたコードを変換ソースとして使用して Java から UML への変換を実行すると、以下の項目が生成されます。
  • Class1 では、«JavaCollection» ステレオタイプを適用した class2 という UML 属性が変換によって生成されます。 collectionType プロパティーは java.util.Collection に、多重度は * に設定されます。
  • Class2 では、多重度を 1 に設定した、ステレオタイプを適用していない class1 というクラス型の UML 属性が変換によって生成されます。

次のイメージは、Java から UML への変換で生成される UML クラスのビジュアル表示を示しています。

このイメージは、前の段落で説明されている例を示しています。

変換出力における関係の文書

UML から Java への 変換では、以下の UML 関係に対する UML 関係文書を Javadoc 情報に変換します。
  • 関連
  • 汎化
  • 実装
  • 実現
使用関係の文書を Javadoc 情報に変換する場合は、 J2SE 5.0 コードを生成するよう UML から Java への 変換を構成する必要があります。

変換では、汎化、実装、および実現の各関係の文書を、各関係内の発生元クラスの UML 文書に対して追加します。 また、変換では、各関係の生成されたターゲット・クラスの Javadoc 情報に対しても、それらの関係の文書を追加します。

関連の場合、変換では、それぞれの関連プロパティーの文書に対して UML 文書を追加します。

Java 例外のモデリング

UML モデルでは、UML 操作を使用して Java メソッドを表すことができます。 UML 操作の RaisedException プロパティーで、操作に関連付けられた例外オブジェクトを表す UML クラスを指定できます。 UML から Java への 変換を実行すると、RaisedException プロパティーに指定したクラスを含んだ Java throws ステートメントが生成されます。

Java キーワードの保持

いくつかの Java キーワード (strictfp、native、transient、および volatile など) は、UML モデル内に表すことができません。 UML から Java への変換または UML から Java への変換を実行する際にこれらのキーワードを保持するには、 これらのキーワードを UML キーワードとしてモデル化する必要があります。

生成された Java 要素のビジュアル表示

UML から Java への変換の出力を基本技術成果物にする場合は、変換時にソース UML オブジェクトと生成された Java コードの間に直接関係が作成されるように指定することができます。 直接関係の作成により、ソース UML オブジェクトが削除され、それがソース・オブジェクトのビジュアル表示で置き換えられます。

トレース関係

UML から Java への変換では、UML ソース・モデル要素から、生成された Java クラスへのトレース関係を作成できます。 その後、モデル照会を作成および実行して、トピック図内にそのトレース関係を表示することができます。

変換出力におけるモデル要素の ID

トレース関係を作成するように構成された変換を実行すると、@generated タグをサポートするそれぞれの要素で、@generated タグに 固有 ID が付加されます。 この ID は、Java 要素の生成元となる UML モデル要素を示します (例えば、* @generated "sourceid:platform:/resource/UMLProject/SimpleModel.emx#_83GpoBtIEdyLaOwyRX_ZMQ" など)。 ソース UML モデル内の要素が名前変更された場合、 マージ機能は、この固有 ID によって、適切な要素のリファクタリングおよびマージを行うことができます。

Java から UML への変換、またはその後方変換では、Java プロジェクトと UML モデルの間の対応する要素を突き合わせる場合にも、この ID を使用します。 Java ソース・コード要素への変更は、 生成済みコードでの追加および削除としてではなく、変更またはコード・リファクタリングとして処理されます (そう処理するのが妥当な場合)。

チーム・サポートとの統合

UML から Java への 変換には、ファイルの自動チェックアウトや新規ファイルの追加を 可能にする CVS、Rational® ClearCase®、 および Rational ClearCase LT バージョン管理システムとの 統合機能が用意されています。 構成管理システムを使用するには、チーム機能を有効にする必要があります。

関連概念
UML モデル要素と UML から Java への変換出力の関係
関連タスク
UML モデルから Java コードへの変換
UML から Java への変換プロファイルの適用
UML 操作における 例外の指定
UML から Java への変換用のソースとターゲットの指定
UML から Java への変換により生成される Java コレクション・タイプの指定
UML ソース・モデル要素と UML から Java への変換出力の間のトレース関係の作成
チーム機能の使用可能化
関連資料
UML から Java への変換による UML 要素の変換処理

フィードバック