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_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 という名前のクラスに、以下の属性が含まれています。
  • デフォルト値 5 を持つ attribute1 という名前の整数属性。InitializerKind は 0 に設定されています。
  • デフォルト値 true を持つ attribute2 という名前の Boolean 属性。InitializerKind は 1 に設定されています。
«cpp_type» ステレオタイプは、両方の属性に適用されています。UML から C++ への変換構成は、 コンストラクターを生成するように構成されています。 下表に、変換によって生成される C++ コードをリストします。
UML 要素 変換出力
このイメージは、例で説明されているクラスを示しています。
#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;
}

フィードバック