変換構成が 調整されたモデリング設計規約管理プロトコル (DCMP) を実装する場合は、UML から Java 変換と Java から UML への変換に有効なソース要素とターゲット要素を指定する必要があります。
この変換では、UML モデル、パッケージ、クラス、およびインターフェースのコンテンツを変換します。 例えば、この変換によってクラスが変換された場合、 そのクラスの操作とプロパティーも変換されます。
変換構成エディターを使用しないで、「プロジェクト・エクスプローラー」ビューでモデルまたはモデル要素を選択した場合は、その選択したモデルまたは要素により、変換構成で指定されたソース・モデルまたは要素がオーバーライドされます。 変換構成は影響を受けず、変換構成エディターまたは「新規変換構成」ウィザードの「ソースとターゲット」ページで指定したソースも変更されません。
マッピング・モデルを作成すれば、変換によって生成された要素の代替名をソース・モデルを変更せずに指定できます。 命名上の制約などの Java 固有の詳細をプラットフォーム独立モデルに組み込む場合、 またはソース・モデルの論理編成が対象のパッケージングとして適切でない場合は、代替名を指定できます。
com.ibm.NewName などの修飾名や、NewName などの非修飾名を指定できます。 パッケージに代替名を指定すると、分類子に完全修飾名が指定されていない限り、該当パッケージ内のすべての分類子に影響を及ぼします。 変換によって生成された要素に対して、同じプロジェクト内の代替場所を指定することもできます。
列挙型リテラルの名前と値を取得可能な文字列として保持する Java 列挙型の生成を可能にすることができます。この機能を使用可能にするには、変換の構成時に、「UML から Java へのカスタム列挙型拡張」を選択します。
XSD 型のモデル・ライブラリーを UML モデルに適用すると、UML から Java 変換を実行したときに、XSD データ型が対応する Java 修飾名に変換されます。マッピング情報の詳細は、下の参照トピックを参照してください。
変換では、その他の Java コレクションに対してはパラメーター化された型の情報を生成しません。
J2SE 5.0 と互換性のあるコードを生成するように変換を構成しない場合、UML から Java 変換では、生成される Java コレクション・タイプに UML コレクション・タイプについてのコメントが追加されます。 これらのコメントにより、ビジュアル開発ツールで Java コレクション型の正確なビジュアル表示を作成できるようになります。
UML 属性に多重度 * を指定し、変換構成の Java コレクション情報を変更しない場合、デフォルトでは、UML から Java 変換によって、Java セットが生成されます。
| UML 要素 | UML から Java 変換の出力 | 変換出力のビジュアル表示 |
|---|---|---|
![]() |
変換構成で「Java 5 を使用」チェック・ボックスをクリアすると、変換により、以下のソース・コードが生成されます。
public class Class1 {
/**
* <!-- begin-UML-doc -->
* <!-- end-UML-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;
}
|
![]() |
変換構成で「Java 5 を使用」チェック・ボックスを選択すると、変換により、以下のソース・コードが生成されます。
public class Class1 {
/**
* <!-- begin-UML-doc -->
* <!-- end-UML-doc -->
* @generated "UML to Java (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
*/
private Set<Class2> class2;
}
|
以下のイメージは、Java から UML への変換によって生成される UML クラスのビジュアル表示を示しています。

/* * <!-- begin-UML-doc --> * <!-- end-UML-doc --> */
変換では、汎化、実装、および実現の各関係の文書を、各関係内の発生元クラスの UML 文書に対して追加します。 また、変換では、各関係の生成されたターゲット・クラスの Javadoc 情報に対しても、それらの関係の文書を追加します。
関連の場合、変換では、それぞれの関連プロパティーの文書に対して UML 文書を追加します。
UML モデルでは、strictfp、native、transient、および volatile などのいくつかの Java キーワードを表すことができません。 UML から Javaへの変換を実行する際に、これらのキーワードを保持するには、これらのキーワードを UML キーワードとしてモデル化する必要があります。
UML から Java 変換の出力を基本技術成果物にする場合は、変換によって混合モデリングと呼ばれる設計規約管理プロトコル (DCMP) が実装されるように指定します。 この DCMP を指定することで、変換によって、ソース UML オブジェクトと生成された Java コードの間に直接関係が作成されます。直接関係の作成により、ソース UML オブジェクトが削除され、それがソース・オブジェクトのビジュアル表示で置き換えられます。
ネストされた要素などで、UML 要素を変換できない場合、これらの要素は最も近いパッケージに移動されます。変換でモデル要素を最も近いパッケージに移動できない場合、その要素は削除されます。
起こりうる問題を回避するために、ソース・モデルのバージョン管理を行ってください。
UML から Java 変換を使用して、UML ソース・モデル要素から生成された Java クラスへのトレース関係を作成できます。その後、モデル照会を作成および実行して、トピック図内にそのトレース関係を表示することができます。
トレース関係の作成は、複数のモデルおよび複数の変換構成を持つような大規模なプロジェクトの場合に便利です。 また、変換出力がソフトウェアの仕様やモデル要素とどのように関係しているかを表示する、追跡可能性照会を作成および実行することもできます。
変換を再実行すると、必要に応じて、ソース・コード内の ID を 使用して、対応する要素がマッチングされ、モデルに対する変更内容を反映するためにコードが変更されます。例えば、ソース・モデル内の UML 操作の名前を変更して変換を再実行すると、変換により前に生成された Java メソッドが削除されて新規メソッドが追加されるのではなく、前に生成されたメソッドの名前が変更され、メソッドの本文が保持されます。
Java から UML への変換、または後方変換でも、ID を使用して Java プロジェクトと UML モデル間の対応する要素をマッチングすることができます。この方法を使用すると、Java ソース・コード要素に対する変更は、生成されたコードの追加や削除ではなく、変更として、またはコードのリファクタリングとして扱われます。
| UML 要素 | 変換出力 | クラス図のトレース関係 |
|---|---|---|
![]() |
/**
*
*/
package Package1;
import java.util.Collection;
/**
* <!-- begin-UML-doc -->
* <!-- end-UML-doc -->
* @uml.annotations
* derived_abstraction="platform:/resource/UMLProject/Model.emx#_9YlH8CpPEdyn7_VFIWTp4A"
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#_9YlH8CpPEdyn7_VFIWTp4A"
*/
public class Class1 {
/**
* <!-- begin-UML-doc -->
* <!-- end-UML-doc -->
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#__8ptgOSnEdyXH8PWExuX2g"
*/
private Integer attribute1;
/**
* @return the attribute1
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#__8ptgOSnEdyXH8PWExuX2g?GETTER"
*/
public Integer getAttribute1() {
// begin-user-code
return attribute1;
// end-user-code
}
/**
* @param theAttribute1 the attribute1 to set
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#__8ptgOSnEdyXH8PWExuX2g?SETTER"
*/
public void setAttribute1(Integer theAttribute1) {
// begin-user-code
attribute1 = theAttribute1;
// end-user-code
}
/**
* <!-- begin-UML-doc -->
* <!-- end-UML-doc -->
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#_RDsjcOSnEdyXH8PWExuX2g"
*/
public void Operation1() {
// begin-user-code
// TODO 自動生成されたメソッド・スタブ
// end-user-code
}
/**
* <!-- begin-UML-doc -->
* <!-- end-UML-doc -->
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#_R04v0OSnEdyXH8PWExuX2g"
*/
public void Operation2() {
// begin-user-code
// TODO 自動生成されたメソッド・スタブ
// end-user-code
}
}
|
![]() |
変換によってトレース関係を生成するように指定した場合には、ソース・モデルは変換によって変更されません。
トレース関係を作成するように構成された変換を実行すると、@generated タグをサポートする各要素について、@generated タグに固有 ID が追加されます。 この ID は、Java 要素の生成元になった UML モデル要素を指定します。この例の場合は、* @generated "sourceid:platform:/resource/UMLProject/SimpleModel.emx#_83GpoBtIEdyLaOwyRX_ZMQ" です。 ソース UML モデル内の要素の名前を変更すると、この固有 ID によりマージ機能で適切な要素のリファクタリングとマージが可能になります。
Java から UML への変換、または後方変換でも、ID を使用して Java プロジェクトと UML モデル間の対応する要素をマッチングすることができます。この方法を使用すると、Java ソース・コード要素に対する変更は、生成されたコードの追加や削除ではなく、変更として、またはコードのリファクタリングとして扱われます。