クラスからインターフェースへのマッピング宣言に入力オブジェクトおよび出力オブジェクトを追加したら、入力オブジェクトおよび出力オブジェクトの属性間のマッピング規則を定義できます。
この演習では、IClassName というインターフェースを作成するカスタム・マッピング規則を作成します。
また、演習 3: クラス間マッピング宣言の作成と詳細化で作成する操作間サブマップを起動する、サブマップ・マッピング規則を作成し、入力フィルターをサブマップ・マッピング規則に追加して、public 操作のみがターゲット・インターフェースに変換されるように指定します。
入力オブジェクトおよび出力オブジェクトの属性間のマッピング規則を定義するには、以下のとおりに実行します。
- 入力および出力オブジェクトの name 属性間のカスタム・マッピング規則を作成します。
- エディター・エリアにあるクラス入力オブジェクトの name 属性をクリックします。
- name 属性のハンドルをインターフェース出力オブジェクトの name 属性にドラッグします。 移動マッピング規則が作成されます。
- name 属性を接続する「移動」要素上で、下矢印をクリックし、「カスタム」をクリックします。
- 「カスタム」要素を右クリックしてから、「プロパティーで表示」をクリックします。
- 「プロパティー」ビューの「詳細」タブで、「インライン」をクリックし、メソッド・シグニチャーの下のテキスト・エリアに次のコードを入力します。Interface_tgt.setName("I"+Class_src.getName());
注: コンテンツ・アシスト機能を呼び出すには、コードを入力するときに、Ctrl + スペース・キーを押します。
- 「適用」をクリックします。
- 入力および出力オブジェクトの ownedOperation 属性間のサブマップ・マッピング規則を作成します。
- エディター・エリアにあるクラス入力オブジェクトの ownedOperation 属性をクリックします。
- ownedOperation 属性のハンドルをインターフェース出力オブジェクトの ownedOperation 属性にドラッグします。ownedOperation 属性はコレクションのため、サブマップ・マッピング規則はデフォルトで作成されます。
- 「プロパティー」ビューが開いていない場合は、新しい「サブマップ」要素を右クリックして、「プロパティーで表示」をクリックします。
- まだ選択されていない場合は、「プロパティー」ビューの「詳細」タブで、「マップ」リストから「Operation2Operation」を選択します。
- ステップ 2 で作成したサブマップ・マッピング規則に、public 操作のみをターゲット・インターフェースに変換する入力フィルターを追加します。
- 「プロパティー」ビューの「入力フィルター」タブで、「入力要素のフィルター」をクリックし、「インライン」をクリックします。
- 「コード」オプションのテキスト・エリアで、メソッド・シグニチャーの下に次のコードを入力します。if (ownedOperation_src.getVisibility().equals(VisibilityKind.PUBLIC_LITERAL))
{ return true; } return false;
注: 入力フィルターあるいは出力フィルター用に指定するコードは、Boolean 値を戻すものでなければなりません。メソッド本文のみを指定できます。メソッド・シグニチャーは変換オーサリング・フレームワークが定義します。
有効な変数名のリストを表示するには、「インライン」ボタンの下のテキスト・エリアで Ctrl + スペース・キーを押します。
- 「適用」をクリックします。
- とクリックします。
次の演習では、
Generalize_Classes.mapping モデルに複数のマッピング宣言を作成します。これらのマッピング宣言は、生成済み変換を実行する際にパラメーターおよび基本タイプが変換される方法を定義します。