デフォルトでは、変換によって、ソース C++ 要素と同じ名前と可視性を持つ UML 要素が生成されます。 変換によって C++ 要素が変換できない場合、その要素は無視されます。 下表に、C++ コード要素を UML モデル要素に変換する場合に、 変換によって生成される出力をリストします。
変換によって、C++ コード内のプリプロセッサー・ディレクティブは変換されません。 これは、これらの C++ 要素が UML では表示できないためです。C++ ソース・ファイル内のユーザー定義セクションに、 ユーザー定義プリプロセッサー・ディレクティブを指定する必要があります。
ソース CDT プロジェクトに、 ソース CDT プロジェクトに存在しないクラスをインスタンス化するテンプレート・インスタンス化が含まれている場合、変換によって、テンプレートのインスタンス化は UML 基本タイプに変換されます。 変換では、テンプレートのインスタンス化への参照を、ターゲット・モデル内の UML 基本タイプへの該当する参照に変換します。
class Class1{
int x;
}
変換によって、Class1 という名前の UML クラス内のプロパティー x の型、および
int C++ 基本タイプ間のマッピングが作成されます。C++ タイプ・ライブラリーには、int 基本タイプが含まれています。
下表に、C++ メンバー変数の型がユーザー定義の型の場合に、変換によって 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» ステレオタイプを適用します。 複数のコンストラクターを変換する場合、変換によって、コンストラクターを一意的に識別するための数字がコンストラクター名に追加されます。 |
| Copy | 変換では、«cpp_copy_constructor» ステレオタイプを適用します。 複数のコピー・コンストラクターを変換する場合、変換によって、コピー・コンストラクターを一意的に識別するための数字がコンストラクター名に追加されます。 |
| Destructor | 変換では、«cpp_destructor» ステレオタイプを適用します。 複数のデストラクターを変換する場合、変換によって、デストラクターを一意的に識別するための数字がデストラクター名に追加されます。 |
| Friend | 変換では、«cpp_operation» ステレオタイプを適用し、isFriend プロパティーを true に設定します。 |
| Inline | 変換では、«cpp_operation» ステレオタイプを適用し、isInline プロパティーを true に設定します。 |
| Pure virtual | 変換では、isAbstract プロパティーを true に設定します |
| Static | 変換では、«cpp_operation» ステレオタイプを適用し、isVirtual プロパティーを true に設定します。 |
| Virtual | 変換では、isStatic プロパティーを 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 次元の値に設定されます。 |