ソース・モデル要素間の派生関係を作成するように変換を構成すると、 変換によって生成されたソース・コードでは、変換された各要素に固有 ID が追加されます。
| モデル要素 | 変更点 | 変換を再実行する場合の、前に生成されたコードへの影響 |
|---|---|---|
| 属性 | 名前変更または移動 | 属性の @generated タグを削除すると、属性は変更されません。
生成された場合、その getter メソッドおよび setter メソッドも変更されません。
属性の @generated タグを削除しないと、次のアクションが発生します。
|
| クラスまたはインターフェース | 名前変更 | クラスまたはインターフェースの
@generated タグを削除すると、クラスのファイル名は変更されません。
@generated タグを削除しないと、次のアクションが発生します。
|
| トップレベルのクラスまたはインターフェース | 移動 | トップレベルのクラスまたはインターフェースの
@generated タグを削除した場合、クラスのファイルは変更されません。
@generated タグを削除しないと、次のアクションが発生します。
|
| 操作 | 戻り値の型またはシグニチャーの名前変更、移動、または変更 | 操作の @generated タグを削除すると、操作は変更されません。
@generated タグを削除しないと、次のアクションが発生します。
|
| パッケージ | 名前変更または移動 | オリジナルの生成済みフォルダーのファイルは、新規フォルダーに移動されます。
変換構成で廃止ファイルの削除オプションを選択している場合は、 |
| «cpp_namespace» が適用されているパッケージ | NamespaceName プロパティーの名前変更 | すべての生成ソース・ファイルで、名前空間の名前が変更されます。 オリジナルの名前空間を参照するコード変更は、リファクタリングされません。 |
| パッケージの名前変更 | コードはリファクタリングされ、名前変更されたパッケージに移動されます (パッケージが固有 ID を持たないため)。 |
次の例は、変換を再実行したときに、 固有 ID および @generated タグが存在するかどうかによって異なる、コードへの変更を表しています。
この例の UML ソース・モデルには、次のクラスが含まれるものとします。

| Class1.h | Class1.cpp |
|---|---|
//@uml.annotationsderived_abstraction="platform:/resource/Bug-Fixes/GUIDs.emx#_0NWVMJy6EdueYKrofslx4A"
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
class Class1
{
//Class1 のセクションの開始
//TODO: 保持する属性を追加します
//Class1 のセクションの終了
private:
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
//@uml.annotationsderived_abstraction="platform:/resource/Bug-Fixes/GUIDs.emx#_0NWVMJy6EdueYKrofslw3S"
int attribute1;
public:
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
//@uml.annotationsderived_abstraction="platform:/resource/Bug-Fixes/GUIDs.emx#_0NWVMJy6EdueYKrofsly5D"
int Operation1(int Parameter1);
}; //クラス Class1 の終了
|
#include "Class1.h"
//ファイル Class1.cpp のセクションの開始
//TODO: 保持する定義を追加します
//ファイル Class1.cpp のセクションの終了
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1(int Parameter1)
{
//TODO 自動生成されたメソッド・スタブ
return 0;
}
|
int Class1::Operation1(int Parameter1)
{
return Parameter1;
}
| 固有 ID を持つコード |
|---|
| @generated タグを削除しない場合 |
このコードは次の変更を表しています。
Class1.h: //@uml.annotationsderived_abstraction="platform:/resource/Bug-Fixes/GUIDs.emx#_0NWVMJy6EdueYKrofslx4A"
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
class Class1
{
//Class1 のセクションの開始
//TODO: 保持する属性を追加します
//Class1 のセクションの終了
private:
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
//@uml.annotationsderived_abstraction="platform:/resource/Bug-Fixes/GUIDs.emx#_0NWVMJy6EdueYKrofslw3S"
int attribute1;
public:
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
//@uml.annotationsderived_abstraction="platform:/resource/Bug-Fixes/GUIDs.emx#_0NWVMJy6EdueYKrofsly5D"
int Operation2(int Parameter1);
}; //クラス Class1 の終了
Class1.cpp:
#include "Class1.h"
//ファイル Class1.cpp のセクションの開始
//TODO: 保持する定義を追加します
//ファイル Class1.cpp のセクションの終了
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation2(int Parameter1)
{
return Parameter1;
}
|
| Class1.h または Class1.cpp から @generated タグを削除した場合 |
| 変換では固有 ID を使用して、Operation1 がモデルにおいて Operation2 に名前変更
されたかどうかを判別しますが、メソッドの @generated タグを削除したため、変換は
Operation1 への変更を保持します。そのため、Operation1 は Class1.h または Class1.cpp
で変更されず、変換によって、Operation2 というメソッドは生成されません。 Class1.h:
//@uml.annotationsderived_abstraction="platform:/resource/Bug-Fixes/GUIDs.emx#_0NWVMJy6EdueYKrofslx4A"
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
class Class1
{
//Class1 のセクションの開始
//TODO: 保持する属性を追加します
//Class1 のセクションの終了
private:
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
//@uml.annotationsderived_abstraction="platform:/resource/Bug-Fixes/GUIDs.emx#_0NWVMJy6EdueYKrofslw3S"
int attribute1;
public:
//@uml.annotationsderived_abstraction="platform:/resource/Bug-Fixes/GUIDs.emx#_0NWVMJy6EdueYKrofsly5D"
int Operation1(int Parameter1);
}; //クラス Class1 の終了
Class1.cpp:
#include "Class1.h"
//ファイル Class1.cpp のセクションの開始
//TODO: 保持する定義を追加します
//ファイル Class1.cpp のセクションの終了
int Class1::Operation1(int Parameter1)
{
return Parameter1;
}
|
以下の表は 派生関係を生成するように構成されていない変換を再実行したときに、変換によって生成されるコードを示しています。 固有 ID がない場合、変換では完全修飾名およびメソッド・シグニチャーを使用して、モデル要素をソース・コード要素にリンクします。 また、リファクタリングはサポートされません。
| 固有 ID を持たないコード |
|---|
| @generated タグを削除しない場合 |
このコードは次の変更を表しています。
Class1.h:
#ifndef CLASS1_H
#define CLASS1_H
//ファイル Class1.h のセクションの開始
//TODO: 保持する定義を追加します
//ファイル Class1.h のセクションの終了
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
class Class1
{
//Class1 のセクションの開始
//TODO: 保持する属性を追加します
//Class1 のセクションの終了
private:
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int attribute1;
public:
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Operation2(int Parameter1);
}; //クラス Class1 の終了
Class1.cpp:
//ファイル Class1.cpp のセクションの開始
//TODO: 保持する定義を追加します
//ファイル Class1.cpp のセクションの終了
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation2(int Parameter1)
{
//TODO 自動生成されたメソッド・スタブ
return 0;
}
|
| Class1.h または Class1.cpp から @generated タグを削除した場合 |
| 固有 ID がないので、変換は、
Operation2 が新規メソッドであると判別します。 このコードは次の変更を表しています。
Class1.h:
#ifndef CLASS1_H
#define CLASS1_H
//ファイル Class1.h のセクションの開始
//TODO: 保持する定義を追加します
//ファイル Class1.h のセクションの終了
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
class Class1
{
//Class1 のセクションの開始
//TODO: 保持する属性を追加します
//Class1 のセクションの終了
private:
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int attribute1;
public:
int Operation1(int Parameter1);
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Operation2(int Parameter1);
}; //クラス Class1 の終了
#endif
Class1.cpp:
#include "Class1.h"
//ファイル Class1.cpp のセクションの開始
//TODO: 保持する定義を追加します
//ファイル Class1.cpp のセクションの終了
int Class1::Operation1(int Parameter1)
{
return Parameter1;
}
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation2(int Parameter1)
{
//TODO 自動生成されたメソッド・スタブ
return 0;
}
|