単一の入力オブジェクトから複数のオブジェクトを生成するモデル間変換の構成例

このサンプルは、複数の相互に依存するマッピング宣言を使用することにより、単一の入力オブジェクトから複数のオブジェクトを生成する方法を示すものです。

始める前に

このサンプルをセットアップするには、「単一の入力オブジェクトから複数のオブジェクトを生成するモデル間変換のセットアップ手順」で説明されている手順を使用してください。

このタスクについて

変換により、単一の入力オブジェクトから、互いに関連する複数のオブジェクトが生成されます。 そのために、変換の作成者が大量のカスタム・コードを書く必要はありません。

手順

  1. ランタイム・ワークベンチの「パッケージ・エクスプローラー」ビューで、ソース・プロジェクトを展開し、「モデル」を展開し、さらに「Source1」を展開します。 Source1 には、A および B という 2 つのクラスを含むパッケージが含まれています。
  2. ターゲット・プロジェクトを展開し、transform source1 to target1.tc という名前の変換構成ファイルをダブルクリックします。
  3. 変換構成エディターで「実行」をクリックします。
  4. ターゲット・プロジェクトで「モデル」を展開してから、「Target1」を展開します。 入力モデル中のクラスごとに、以下の要素が変換により作成されていることに注意してください。
    • ソース・クラス名の先頭に文字 "I" を付加したものをインターフェース名とするインターフェース
    • ソース・クラス名の後に "Impl" を付加したものを実装クラス名とする実装クラス
    • 実装クラス内でインターフェースを実装するインターフェース実現

タスクの結果

変換の動作方法を見るため、それによって解決される問題について考慮してみてください。 例えば、変換のオーサリングにおいて、Package2Package マッピング宣言の中で Class2InterfaceRealization マッピング宣言を使用することにより、インターフェース実現を作成するものとします。 しかし、UML クラスのインターフェース実現であるサブマップ・マッピングのターゲット・フィーチャーは、Package2Package マッピング宣言内からは見えません。 では、欠落しているターゲット・フィーチャーにマップするには、どうすればいいのでしょうか?

注: 以下の本文の中で示されている番号は、付随する図の項目を参照する項目番号です。

インターフェース実現をターゲットとして提供するため、Package2Package マッピング宣言の中で、packagedElement フィーチャーから packagedElement フィーチャーへのサブマップを作成します (図の項目 1)。 このサブマップは、再帰的にその親である Package2Package マッピング宣言を参照しており、それによって、ネストしたパッケージとその内容のためのサポートを提供しています。 その結果、packagedElement フィーチャーから packagedElement フィーチャーへの付加的なサブマップを定義することができます。 それらのサブマップでは、他のマッピング宣言 Class2Class (項目 2) および Class2Interface (項目 3) を参照できます。

Class2Class マッピング宣言を作成する際には、Class 要素全体を入力とするサブマップ (項目 4) を使用できます。 出力については、interfaceRealization を選択します。 その結果として、Class2Interface マッピング宣言が利用可能になります。 それを利用することにより、Class 要素全体を入力とし、サプライヤー・フィーチャーとクライアント・フィーチャーを出力とする 2 つの付加的なサブマップ (項目 5 と 6) を作成します。 変換コードを生成する際に、ここで定義されるサブマップでは出力オブジェクトは作成されません。 その代わり、他のマッピング宣言から生成される変形によって作成される出力オブジェクトへの参照 が作成されます。

変換コードを生成する際には、サプライヤー出力フィーチャーとクライアント出力フィーチャーの両方において、入力 UML オブジェクトから生成された UML オブジェクトが参照されている必要があります。 参照する出力オブジェクトを指定するには、同じ入力から特定の出力オブジェクト Class または Interface を生成する作業を担当する変換を生成するマッピング宣言 Class2Class または Class2Interface を特定するよう、サブマップ定義を作成します。

詳細については、サンプル変換構成を参照してください。 図の中で、サブマップからマッピング宣言の上部に向かう矢印は、そのサブマップがそのマッピング宣言を参照していることを示しています。 例えば、ラベルが "1" の矢印は、Package2Package マッピング宣言を参照しています。

サンプル中のマッピング宣言相互の関係を示す複合ダイアグラム
関連情報
単一の入力オブジェクトから複数のオブジェクトを生成するモデル間変換のセットアップ手順

フィードバック