デフォルトでは、変換によって、ソース C++ 要素と同じ名前と可視性を持つ UML 要素が生成されます。 変換によって C++ 要素が変換できない場合、その要素は無視されます。 下表に、C++ コード要素を UML モデル要素に変換する場合に、 変換によって生成される出力をリストします。
| C++ 要素 | UML 要素 |
|---|---|
| クラス |
|
| 列挙 |
|
| 名前空間 |
|
| ネスト・クラス、構造体、または共用体 |
|
| 構造体 |
|
| 型定義 |
|
| 共用体 |
|
変換によって、C++ コード内のプリプロセッサー・ディレクティブは変換されません。 これは、これらの C++ 要素が UML では表示できないためです。C++ ソース・ファイル内のユーザー定義セクションに、 ユーザー定義プリプロセッサー・ディレクティブを指定する必要があります。
ソース C/C++ 開発ツール (CDT) プロジェクトに、ソース CDT プロジェクトに存在しないクラスをインスタンス化するテンプレート・インスタンス化が含まれている場合、変換によって、テンプレートのインスタンス化は UML 基本タイプに変換されます。 変換では、テンプレートのインスタンス化への参照を、ターゲット・モデル内の UML 基本タイプへの該当する参照に変換します。
| C++ テンプレート・クラス | UML 要素 |
|---|---|
| テンプレート・クラス定義 |
|
| 型定義に定義されているテンプレート・クラスのインスタンス化 |
|
| 型定義に定義されていないテンプレート・クラスのインスタンス化 |
|
class Class1{
int x;
}
変換によって、Class1 という名前の UML クラス内のプロパティー x の型、および
int C++ 基本タイプ間のマッピングが作成されます。C++ タイプ・ライブラリーには、int 基本タイプが含まれています。
下表に、C++ メンバー変数の型がユーザー定義の型の場合に、変換によって type プロパティーを設定する方法をリストします。
C++ メンバー変数の型がユーザー定義の型の場合、変換では、UML type プロパティーを、 ターゲットの UML モデル内のユーザー定義の型に対応する UML 要素の値に設定します。 変換によって、ユーザー定義の型に対応するモデル内の UML 要素を判別できない場合、UML 要素と同じ名前を持つ UML 基本タイプが作成され、新規 UML 基本タイプの名前と同等の UML プロパティーの Type を設定します。
下表の例には、C++ メンバー変数の型が、別の C/C++ 開発ツール (CDT) プロジェクトに定義されている型を参照している場合に、 変換において、UML type プロパティーの値がどのように設定されるかがリストされています。
| C++ コード・サンプル | type プロパティーの値 |
|---|---|
| CDTProject1 プロジェクトには、Class1 という名前のクラスが含まれています。 CDTProject2 プロジェクト には、Class2 という名前の以下のようなクラスが含まれています。 #include "CDTProject1/Class1"
class Class2{
Class1 x;
};
|
変換によって、UML プロパティー x の型、および CDTProject1 という名前の C++ ソース・プロジェクト内の Class1 という名前のクラスに対応する可視要素間にマッピングが作成されます。 |
下表に、変換によって特定のメンバー変数に対して生成される追加情報をリストします。
| C++ メンバー変数 | 変換出力の追加特性 |
|---|---|
| const | isStatic プロパティーは true です。 |
| mutable | 変換では、«cpp_type» ステレオタイプをプロパティーに適用します。 ステレオタイプの isMutable プロパティーは、true に設定されます。 |
| static | isStatic プロパティーは true です。 |
| volatile | 変換では、«cpp_type» ステレオタイプをプロパティーに適用します。 ステレオタイプの isVolatile プロパティーは、true に設定されます。 |
変換では、クラス、構造体、または共用体内の C++ メンバー関数を、対応する UML クラスの UML 操作に変換します。 変換によって生成される UML 操作は、C++ メンバー関数と同じ名前と可視性を持っています。 下表に、変換によって特定の関数パラメーターに対して生成される追加情報をリストします。
| C++ メンバー関数 | 変換出力の追加特性 |
|---|---|
| Assignment | 変換では、«cpp_assignment» ステレオタイプを適用します。 生成される操作は、= 代入演算子と同じ名前および可視性を持ちます |
| Const | 変換では、isQuery プロパティーを true に設定します |
| Constructor | 変換は、«cpp_constructor» ステレオタイプを適用します。 C++ コードのコンストラクター・メソッドが過負荷になった場合、変換により、コードの各コンストラクター・メソッドに対し、対応するコンストラクター・メソッドがターゲット・モデル内に生成されます。 変換では、コード内に重複するコンストラクター・メソッドが存在する場合、最初に処理されるコンストラクター・メソッドが生成されます。 |
| CopyConstructor | 変換は、«cpp_copy_constructor» ステレオタイプを適用します。 C++ コードのコピー・コンストラクター・メソッドが過負荷になった場合、変換により、コードの各コピー・コンストラクター・メソッドに対し、対応するコピー・コンストラクター・メソッドがターゲット・モデル内に生成されます。 変換では、コード内に重複するコピー・コンストラクター・メソッドが存在する場合、最初に処理されるコピー・コンストラクター・メソッドが生成されます。 |
| Destructor | 変換は、«cpp_destructor» ステレオタイプを適用します。 C++ コードのデストラクター・メソッドが過負荷になった場合、変換により、コードの各デストラクター・メソッドに対し、対応するデストラクター・メソッドがターゲット・モデル内に生成されます。 変換では、コード内に重複するデストラクター・メソッドが存在する場合、最初に処理されるデストラクター・メソッドが生成されます。 |
| Friend | 変換では、«cpp_operation» ステレオタイプを適用し、isFriend プロパティーを true に設定します。 |
| Inline | 変換では、«cpp_operation» ステレオタイプを適用し、isInline プロパティーを true に設定します。 |
| Pure virtual | 変換では、isAbstract プロパティーを true に設定します |
| Static | 変換では、isStatic プロパティーを true に設定します |
| Virtual | 変換では、«cpp_operation» ステレオタイプを適用し、isVirtual プロパティーを true に設定します。 |
class one{
int op(int x=5);
}
変換では、操作 op で生成された UML パラメーター
x のデフォルト値を 5 に設定します。| C++ 関数パラメーター | 変換出力 |
|---|---|
| Reference | 変換によって、Direction プロパティーが inout に設定されます。 |
| Return | 変換によって、Direction プロパティーが return に設定されます。 |
| Regular (参照または戻りパラメーターではありません) | 変換によって、Direction プロパティーが in に設定されます。 |
C++ メンバー変数、メンバー関数、およびパラメーターは、 型へのポインター、参照型、および配列型などの型修飾子を指定する場合があります。 これらの型修飾子は、UML では表示できません。 下表に、変換においてどのように型修飾子が変換されるかをリストします。
| 型修飾子 | 変換出力 |
|---|---|
| C++ タイプへのポインター | 変換では、«cpp_type» ステレオタイプを、生成する UML パラメーターまたはプロパティーに適用し、
修飾子属性をポインター演算子に設定します。
以下の C++ コードを参照してください。class MyClass {
private: char* name;
};
変換によって、以下のプロパティーを持つ名前付き変数を含んでいる MyClass という名前の UML クラスが生成されます。 ![]() |
| C++ タイプへの参照 | 変換によって、修飾子属性が参照演算子に設定されます。
ソース・コード内の複数の参照型を変換する場合にのみ、変換によって «cpp_type» ステレオタイプが適用されます。 参照型の C++ パラメーターを変換する場合、UML パラメーターの方向属性が inout に設定されます。 以下の C++ コードを参照してください。 class MyClassClone {
private:
MyClassClone clone(MyClassClone& copy);
};
変換によって、以下のプロパティーを持つ戻りパラメーターを含む MyClassClone という名前の UML クラスが生成されます。 ![]() |
| 配列 | 1 次元配列の場合、 変換によって、UML パラメーターまたはプロパティーの多重度が 1 次元の値と同等の値に設定されます。 ソース・コード内の多次元配列を変換する場合にのみ、変換によって «cpp_type» ステレオタイプが適用されます。 次の例は、 変換による int x[10] タイプの属性に対する多重度の設定方法を示しています。 ![]() 変換によって、multiplicity プロパティーの下限および上限は、その属性の 1 次元の値に設定されます。 |