UML から C++ への変換プロファイルのステレオタイプ

UML から C++ の変換プロファイルには、パラメーター、プロパティー、文書、固有の関係、クラス、パッケージ、 およびモデルに適用できるステレオタイプが含まれます。 各ステレオタイプは、事前定義済みの有効な属性とタイプのセットを持ちます。

以下の表には、プロファイルのステレオタイプと、その関連するプロパティーおよびタイプがリストされています。

注: UML モデル要素には複数のステレオタイプを適用しないでください。 変換によって、各モデル要素に対する 1 つのステレオタイプのみが処理されます。UML クラスと操作については、変換によって次の表にリストされている順番で 1 つのステレオタイプが処理されます。
ステレオタイプ 適用対象 プロパティー タイプ
«cpp_assignment» 操作 isInline デフォルト値として false を持つ Boolean。
«cpp_body_comment» 関数や静的変数に対するコメントなど、ソース・コードに表示したいコメント    
«cpp_constructor» 操作 isExplicit、isInline デフォルト値として false を持つ Boolean。
«cpp_copy_constructor» 操作 isExplicit、isInline デフォルト値として false を持つ Boolean。
«cpp_dependency» 依存関係 isInclusionInHeader デフォルト値として false を持つ Boolean。 値が true に設定されている場合は、ヘッダー・ファイルに #include ディレクティブが生成されます。
«cpp_destructor» 操作 isVirtual、isInline デフォルト値として false を持つ Boolean。
«cpp_friend» 依存関係   ヘッダー・ファイルに #include ディレクティブが生成されます。
«cpp_generalization» 汎化関係、InterfaceRealization 関係 GeneralizationKind public、protected、private、およびデフォルト値を持つ列挙型 (0-public、1-protected、2-private、3-default)
isVirtual デフォルト値として false を持つ Boolean であり、仮想継承を示します。
«cpp_namespace» パッケージ NamespaceName String
«cpp_operation» 操作 isInline デフォルト値として false を持つ Boolean。 値が true に設定されている場合には、インラインとして操作が生成され、 対応するヘッダー・ファイルに操作本体が追加されます。
isVirtual デフォルト値として false を持つ Boolean。 値が true に設定されている場合は、仮想関数として操作が生成されます。
isFriend デフォルト値として false を持つ Boolean。値が true に設定されている場合は、フレンド操作が生成されます。
«cpp_properties» クラス、インターフェース、または列挙 bodyFileExtension 指定の拡張子を持つ C++ ボディ・ファイル。
headerFileExtension 指定の拡張子を持つ C++ ヘッダー・ファイル。
例えば、ファイル名拡張子として .inc を持つヘッダー・ファイル内の C++ テンプレート・クラスのコードを生成するには、 そのクラスにこのステレオタイプを適用して、このプロパティーを「.inc」に設定します。
注: .inc ファイル名拡張子を C++ ヘッダー・ファイルに関連付けて、 C/C++ 開発ツールが .inc を有効な C++ ファイル名拡張子として認識できるようにする必要があります。
«cpp_struct» クラス    
«cpp_type» プロパティー、パラメーター arrayDimensions String。通常は、UML 2.0 ではサポートされない多次元配列を指定するために使用されます。

例えば、プロパティーに対して [10][20]、 戻りの型でないパラメーターに対しては [][10] などとします。

InitializerKind constructor および assignment の値を持つ列挙型 (0-constructor)

InitializerKind が 0 に設定されている場合、変換でコンストラクター・イニシャライザーが生成されます。

InitializerKind が 1 に設定されている場合、 変換でコンストラクターに代入ステートメントが生成されます。

以下の UML から C++ への変換で «cpp_type» ステレオタイプが適用された要素をどのように変換するかを示すサンプル を参照してください。

isAuto、isMutable、isRegister、isVolatile デフォルト値として false を持つ Boolean。
qualifier String。** や & など、変数名の前かつ型名の後に表示されるコード要素のような、UML でモデル化できない C++ の型の一部が含まれます。
例えば、const int **a[12][33] は、以下によって表されます。
  • a という名前の UML プロパティー
  • isReadOnly=true
    注: isReadOnly は const キーワードを生成します。
  • «cpp_type» ステレオタイプを適用
  • ステレオタイプの qualifier プロパティーを ** に設定
  • ステレオタイプの arrayDimensions のプロパティーは [12][33] に設定
«cpp_typedef» クラス arrayDimensions String
ImplementationType typedef が参照するタイプを指定します。プリミティブ・タイプまたはユーザー定義タイプのいずれかになります。

ユーザー定義タイプは、完全修飾してもしなくてもかまいません。 タイプ名が完全修飾されない場合、typedef のスコープがユーザー定義タイプに適用されます。

qualifier ポインター型や定数などを指定します。
例えば、変換では、以下の UML 要素に対して const int **Typedef1[12][13] が生成されます。
  • Typedef1 という名前のクラスで、ステレオタイプ «cpp_typedef» を付加
  • ImplementationType は int
  • arrayDimensions は [12][13]
  • qualifier は const **
«cpp_union» クラス isAnonymousUnion デフォルト値として false を持つ Boolean。

UML から C++ への変換で «cpp_type» ステレオタイプが適用された要素をどのように変換するかを示すサンプル

このサンプルでは、Class1 という UML クラスに以下の属性が含まれています。
  • デフォルト値 5 を持つ attribute1 という名前の整数属性。InitializerKind は 0 に設定されています。
  • デフォルト値 true を持つ attribute2 という名前の Boolean 属性。InitializerKind は 1 に設定されています。
両方の属性に «cpp_type» ステレオタイプが適用されています。 UML から C++ への変換構成は、コンストラクターを生成するように構成されています。また、追跡可能性オプションは無効になっています。 以下の表に、変換によって生成される C++ コードをリストします。
UML 要素 変換出力
このイメージは、例で説明されているクラスを示しています。 Class1.cpp:
#include "Class1.h"
//ファイル Class1.cpp のセクションの開始
//TODO: 保持する定義を追加します
//ファイル Class1.cpp のセクションの終了


//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
Class1::Class1() :
attribute1(5)
{
    //TODO 自動生成されたメソッド・スタブ
    attribute2 = true;
}

フィードバック