UML から C++ への変換

UML から C++ への変換により、UML モデル要素が C++ コードに変換されます。

有効な変換ソース

UML から C++ への変換では、以下の UML ソース・オブジェクトを C++ コードに変換できます。
  • モデル
  • パッケージ
  • クラス
  • 列挙型
  • インターフェース
  • コンポーネント

変換構成を作成または編集することにより、またはモデル内でモデル要素を直接選択することにより、C++ コードに変換するモデル要素を指定できます。 選択されたモデル要素が、変換のソースとしての機能を果たします。 この変換では、コンテナーおよびそのモデル要素を両方選択した場合、または同一のモデル要素を 2 回選択した場合にエラー・メッセージが生成されます。

コンポーネントを使用して、C++ コードに変換するモデルの要素を編成できます。 コンポーネントを選択し、コンポーネントにパッケージおよびクラスへの使用関係がある場合は、UML から C++ への変換により関連するパッケージおよびクラスが、C++ コードに変換されます。

注: 後方変換を使用可能に設定する場合は、変換ソースとしてモデルを指定する必要があります。 C++ から UML への変換 (後方変換) では、C++ ソース・オブジェクトを UML オブジェクトに変換し、指定した UML モデルにそれらのオブジェクトを保管します。

変換ソースで有効な名前

UML ソースの各要素の名前は、小文字、大文字、または下線 (_) で開始できます。 後続の文字には、小文字、大文字、または数値を使用できます。 オペレーション名内でコロン (:) を使用し、フレンド関数の完全修飾名を指定できます。 変換では、数値または無効文字で開始される名前に対して、下線 (_) を前につけます。 変換では、該当する名前空間における名前が固有であるか検査します。 その名前が固有でない場合は、変換により、接尾部に _<番号> をつけた重複名が割り当てられます。

生成されたコードの読みやすさを改善し、UML モデルと生成されたコード間の差異を最小限にするには、ソースの UML モデルにある無効な名前を訂正してから変換を適用する必要があります。

有効な変換対象

有効な変換ターゲットは、少なくとも 1 つのソース・フォルダーを含む C++ プロジェクトです。 新規にターゲット・コンテナーを作成する場合は、スタンダード Make C++ プロジェクト (ユーザーが makefile を作成するか、または既存の makefile を利用する) の作成、あるいは、管理 Make プロジェクト (makefile は自動作成される) の作成かの、いずれかを選択することができます。

UML モデル要素の変換

以下の表には、UML から C++ への変換により、どのように UML モデル要素が C++ コードに変換されるかがリストされています。

UML モデル要素 C++ コード要素
関連関係 クラス属性
クラス クラス (.h ファイルおよび .cpp ファイル)
依存関係 取り込み
列挙 Enum (.h ファイル)
汎化関係 クラス継承
操作 操作
パッケージ フォルダー
パラメーター 操作引数
プロパティー クラス属性
テンプレート・バインド関係 インスタンス化されたクラス (.h ファイル)
テンプレート・クラス UML テンプレート・クラスと同じ名前を持つヘッダー・ファイル (.h ファイル)

メソッド本文コードもこのヘッダー・ファイル内に生成されます

テンプレート・パラメーター パラメーター化されたクラス用のパラメーター

変換出力での固有 ID の生成

変換のソースとターゲットの間の派生関係を作成するように変換を構成できます。 この機能を使用すると、UML モデル要素と生成されるソース・コードの間で追跡可能性が実現します。 変換の実行時、変換は、生成されるヘッダー・ファイル (複数の場合があります) で、@generated タグをサポートする各変換済み要素のソース・コード・コメントに固有 ID を追加します。 また、変換は必要に応じてコードをリファクタリングし、モデルへの変更を反映させます。。 これらの ID を使用することで、UML から C++ への変換、および C++ から UML への変換 (有効になっている場合) で、モデル要素またはコード要素を移動または名前変更できます。それらの要素を削除してから追加する必要はありません。 この機能により、変換では、要素の名前だけを使用するよりも、ソース要素およびターゲット要素を正確にマージできるようになります。

固有 ID は、以下のヘッダー・ファイルで示されているとおり、@uml.annotationsderived_abstraction から始まります。
#ifndef CLASS1_H
#define CLASS1_H
//ファイル Class1.h のセクションの開始
//TODO: 保持する定義を追加します
//ファイル Class1.h のセクションの終了

//@uml.annotationsderived_abstraction="platform:/resource/MyProj/Blank%20Model.emx#_c8rj0FJQEdyKkf6pJAs7Ow"
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
class Class1
{

    //Class1 のセクションの開始
    //TODO: 保持する属性を追加します
    //Class1 のセクションの終了
    public:

        //@uml.annotationsderived_abstraction="platform:/resource/MyProj/Blank%20Model.emx#_c8rj0FJQEdyKkf6pJAs7Ow?DEFCONSTRUCTOR"
        //@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
        Class1();

};  //クラス Class1 の終了

#endif

C++ 標準操作

標準操作は、コンストラクター、コピー・コンストラクター、仮想および非仮想のデストラクター、代入演算子、および getter および setter の各メソッドです。 UML から C++ への変換で生成される標準操作を指定できます。 また、標準操作の 1 つであるステレオタイプをモデル内のクラスの操作に追加することもできます。UML から C++ への変換は、生成された標準操作に UML 操作の可視性を適用しますが、UML 操作の名前および パラメーターを無視します。 UML から C++ への変換では、UML モデルに追加したクラス、構造体、および共用体に対して標準操作を生成します。

変換では、デフォルトでコンストラクターおよびコピー・コンストラクターを生成します。 特定のステレオタイプがある操作を UML モデルに追加することにより、変換による標準操作の生成をより細かく制御できます。 あるクラス内に操作を作成し、それに標準操作ステレオタイプのいずれかを割り当てると、変換ではその指定した標準操作を生成します。

変換出力のロケーション

変換では、変換のターゲットとして指定した C++ プロジェクトおよび C++ フォルダー内に C++ コード・ファイルを生成します。

チーム・サポートとの統合

変換には、ファイルの自動チェックアウトや新規ファイルの追加を 可能にする CVS、Rational® ClearCase®、 および Rational ClearCase LT バージョン管理システムとの 統合機能が用意されています。 構成管理システムを使用するには、チーム機能を有効にする必要があります。

関連タスク
UML モデルから C++ コードへの変換
UML から C++ への変換構成の作成または編集
UML から C++ への変換用のソースとターゲットの指定
チーム機能の使用可能化
UML から C++ への変換の設定
UML から C++ への変換の実行
関連資料
UML から C++ への変換による UML モデル要素の変換処理

フィードバック