この変換によって生成される Common Object Request
Broker Architecture (CORBA) Interface Definition Language (IDL) は、ソース UML モデルの要素とその特性によって決定されます。
モデル
モデルは CORBA 要素に直接マップされません。
ソース・モデル内にコンポーネントがない場合、変換により CORBA 要素は生成されません。
コンポーネント
変換によって、コンポーネントから単一の CORBA
IDL ファイルが生成されます。IDL ファイルには、コンポーネントが所有する CORBA 要素が含まれます。
プリミティブ・タイプ
変換によって、プリミティブ・タイプから CORBA 基本タイプまたは CORBA ネイティブ・タイプが生成されます。CORBA タイプのモデル・ライブラリーには、CORBA 基本タイプに対応する UML プリミティブ・タイプが含まれます。
あるいは、ソース・モデル内に、CORBA 基本タイプと同じ名前のプリミティブ・タイプを作成できます。以下のリストに、CORBA 基本タイプ・ライブラリーに含まれるタイプを示します。
- any
- boolean
- char
- double
- fixed
- float
- long
- long double
- long long
- Object
- octet
- short
- string
- TypeCode
- unsigned long
- unsigned long long
- unsigned short
- ValueBase
- void
- wchar
- wstring
上記にリストされていないソース・モデル内のプリミティブ・タイプは、CORBA ネイティブ・タイプを表します。
CORBA ネイティブ・タイプについては、変換により IDL ファイル内にネイティブ定義が生成されます。
パッケージ
変換によって、コンポーネントのパッケージから CORBA モジュールが生成されます。この変換では、コンポーネント内にないパッケージは無視されます。
インターフェース
変換によって、ソース・モデル内のインターフェースから CORBA インターフェースが生成されます。インターフェースの汎化は、CORBA インターフェースの継承に対応します。以下の表は、ソース・モデル要素の UML プロパティーと、変換によって生成される、対応する CORBA 要素の一覧です。
| UML プロパティー |
変換出力 |
| 名前 |
指定された名前を持ち、不正な文字が除去された、IDL 内の新規 CORBA インターフェース |
| Visibility、public |
標準のインターフェース |
| Visibility、private |
ローカル・インターフェース |
| 抽象 |
抽象 CORBA インターフェース |
| 特化不可 (Leaf) |
無視 |
属性と関連
変換によって、属性と関連から CORBA 属性が生成されます。
以下の表は、ソース・モデル要素の UML プロパティーと、変換によって生成される、対応する CORBA 要素の一覧です。
| UML プロパティー |
変換出力 |
| 名前 |
同じ名前を持つ CORBA 属性 |
| タイプ (関連プロパティー) |
この関連のサプライヤーとしてのタイプを持つ CORBA 属性 |
| タイプ (属性プロパティー) |
指定された基本タイプを持つ CORBA 属性 |
| 「Is Static」および「default」値 |
CORBA 定数 |
| 読み取り専用 |
読み取り専用の CORBA 属性 |
| 順序付け |
IDL 順序 |
| «CORBAUnion» ステレオタイプが適用されているクラスの属性に適用される«switch» ステレオタイプ |
IDL 共用体の switch 文
switch 文の各 case は、«switch» ステレオタイプが適用されている UML 属性に対応
|
操作
変換によって、«CORBAValue»
ステレオタイプが適用されているインターフェースまたはクラスにおいて宣言される操作から IDL 操作が生成されます。
以下の表は、ソース・モデル要素の UML プロパティーと、変換によって生成される、対応する CORBA 要素の一覧です。
| UML プロパティー |
変換出力 |
| 名前 |
指定された名前を持つ新規 CORBA 操作 |
| 戻り値の型 |
CORBA 操作の戻り値の型 |
| その他すべてのプロパティー |
無視 |
| ステレオタイプ «CORBAOneway» を持つ操作 |
片方向 IDL 操作 |
| «CORBAValue» クラスの操作での «create» ステレオタイプ |
CORBA 値のイニシャライザー操作へのマップ |
| 演算に適用される «CORBAOperation» ステレオタイプの context プロパティー |
演算呼び出しの一部である ID にマップされる一連のストリング値
この変換は、UML モデルから以下のコード・フラグメントを生成します。
そこには、Interface1 というインターフェースが含まれており、その中には、context プロパティーに "sys_time" および "sys_location" という値が含まれている Operation1 という演算が含まれています。
module Module1 {
interface Interface1 {
long Operation1() context ("sys_time", "sys_location");
};
};
|
パラメーター
変換により、UML パラメーターから IDL 操作が生成されます。
以下の表は、ソース・モデル要素の UML プロパティーと、変換によって生成される、対応する CORBA 要素の一覧です。
| UML プロパティー |
変換出力 |
| 名前 |
指定された名前を持つ新規パラメーター |
| Direction (in、out、inout) |
IDL での対応パラメーター |
| タイプ |
指定された型のパラメーター |
| 可視性 |
無視 |
列挙型
変換において、UML 列挙型から CORBA 列挙型が生成されます。
列挙型の内容としては、列挙リテラルのみ可能です。
«CORBAUnion» ステレオタイプのクラス
変換において、«CORBAUnion» ステレオタイプが適用されたクラスから、構成値である CORBA 共用体が生成されます。
以下の例を考慮してください。
ここでは、以下の項目を含む UML モデルが想定されています。
- ComponentIDL1 というコンポーネント
- ComponentIDL1 コンポーネントに、Module1 という UML パッケージが含まれています
- Module1 モジュールには Union1 というクラスが含まれています
- Union1 クラスには «CORBAUnion» ステレオタイプが適用されており、switchType プロパティーは long に設定されています
- このクラスには型がそれぞれ long、string、および char の 3 つの属性が含まれており、各属性には «switch» ステレオタイプが適用されています
- 最初と 2 番目の属性の case プロパティーはそれぞれ 1 および 2 に設定されており、3 番目の属性の isDefault プロパティーは true に設定されています
変換では、ComponentIDL1.idl ファイルの Module1 モジュールの中に、下記のコード・フラグメントに示す共用体が生成されます。
module Module1 {
union Union1 switch(long) {
case 1: long u1;
case 2: string u2;
default: char u3;
};
};
«CORBAValue» ステレオタイプのクラス
変換によって、«CORBAValue»
ステレオタイプが適用されているクラスから CORBA 値タイプが生成されます。
ステレオタイプ «CORBAValue» には、specification と呼ばれるプロパティーがあります。
specification プロパティーは、値が
none、
custom、または
boxed の列挙型です。
デフォルト値は
none です。
CORBA 値タイプは、インターフェースのプロパティーとは別のオプション状態およびイニシャライザー・メソッドを持つエンティティーです。ステレオタイプ «CORBAState» の属性は、CORBA
値タイプの状態メンバーを表します。
ステレオタイプ «create» は、CORBA 値タイプのイニシャライザー・メソッドを表します。
以下の表は、ソース・モデル要素の UML プロパティーと、変換によって生成される、対応する CORBA 要素の一覧です。
| UML プロパティー |
変換出力 |
| ステレオタイプ |
«CORBAValue» |
| 名前 |
指定された名前を持つ新規値タイプ |
| 可視性 |
無視 |
| 抽象 |
抽象値タイプ |
| 可視性が public または private の «CORBAState» の属性 |
public または private の可視性を持つ、CORBA 値タイプの CORBA 状態メンバー |
| «create» ステレオタイプの演算 |
非抽象値タイプの CORBA ファクトリー・メソッド |
| «CORBAtruncatable» ステレオタイプが適用されている汎化関係。
«CORBAValue» ステレオタイプが適用されている 2 つのクラスの間の関係でなければならない |
2 つのクラスの間の truncatable 継承を示す |
静的属性
CORBA 定数宣言は、IDL ファイル、モジュール、インターフェース、または値タイプのスコープに表示されます。ソース・モデルでは、インターフェースやクラス内の static 属性は、インターフェースまたは値タイプのスコープ内に存在する CORBA 定数を表すことができます。
CORBA モジュールまたは IDL
ファイルのスコープ内の CORBA 定数は、ステレオタイプ «CORBAConstants»
を持つクラス内の属性である必要があります。そのクラスは、モジュール・スコープの定数の場合はパッケージの中、あるいは IDL スコープの定数の場合はコンポーネントの中に含まれていなければなりません。
変換では、クラスの名前は無視されます。 ステレオタイプ «CORBAConstants»
を持つクラスの各属性は、定数宣言を表します。
«CORBAStruct» ステレオタイプのクラス
変換によって、«CORBAStruct»
ステレオタイプを持つクラスから CORBA 構造が生成されます。
クラスには属性のみが必要であり、操作は必要ありません。
クラスの属性または関連が、構造のメンバーを表します。
«CORBAException» ステレオタイプのクラス
変換によって、«CORBAException»
ステレオタイプを持つクラスから CORBA 例外が生成されます。
クラスには、属性が含まれることがあります。
«CORBATypedef» ステレオタイプのクラス
変換では、既存の
CORBA タイプに新しい名前を付けるために
«CORBATypedef» ステレオタイプを使用します。
ステレオタイプ «CORBATypedef» を持つクラスは、CORBA typedef
に対応します。
クラスから既存の CORBA タイプへの置換関係は、CORBA typedef を表します。
«CORBATruncatable» ステレオタイプの汎化関係
変換により、truncatable 値タイプの継承のためのコードが生成されます。
以下の例を考慮してください。
ここでは、以下の項目を含む UML モデルが想定されています。
- ComponentIDL1 というコンポーネント
- ComponentIDL1 コンポーネントに、Module1 という UML パッケージが含まれています
- Module1 モジュールには、Class1 と Class2 という 2 つのクラスが含まれています
- Class1 から Class2 への汎化関係が存在し、«CORBATruncatable» ステレオタイプがその関係に適用されています。
変換では、ComponentIDL1.idl ファイルの Module1 モジュールの中に、下記のコード・フラグメントに示すコードが生成されます。
module Module1 {
valuetype Class2 {
};
valuetype Class1 : truncatable Class2 {
};
};