소스 모델 요소 사이에 파생된 관계를 작성하도록 변환을 구성하는 경우 변환은 생성된 소스 코드에 있는 변환 요소마다 고유 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
{
//Begin section for Class1
//TODO: Add attributes that you want preserved
//End section for 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);
}; //end class Class1
|
#include "Class1.h"
//Begin section for file Class1.cpp
//TODO: Add definitions that you want preserved
//End section for file Class1.cpp
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1(int Parameter1)
{
//TODO Auto-generated method stub
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
{
//Begin section for Class1
//TODO: Add attributes that you want preserved
//End section for 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);
}; //end class Class1
Class1.cpp:
#include "Class1.h"
//Begin section for file Class1.cpp
//TODO: Add definitions that you want preserved
//End section for file 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
{
//Begin section for Class1
//TODO: Add attributes that you want preserved
//End section for 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);
}; //end class Class1
Class1.cpp:
#include "Class1.h"
//Begin section for file Class1.cpp
//TODO: Add definitions that you want preserved
//End section for file Class1.cpp
int Class1::Operation1(int Parameter1)
{
return Parameter1;
}
|
다음 표는 파생된 관계를 생성하도록 구성되지 않은 변환을 재실행할 때 변환이 생성하는 코드를 보여 줍니다. 고유 ID가 없는 경우 변환은 완전한 이름 및 메소드 서명을 사용하여 모델 요소를 소스 코드 요소에 링크합니다. 리팩토링도 지원되지 않습니다.
| 고유 ID가 없는 코드 |
|---|
| @generated 태그가 삭제되지 않음 |
코드는 다음 변경사항을 보여 줍니다.
Class1.h:
#ifndef CLASS1_H
#define CLASS1_H
//Begin section for file Class1.h
//TODO: Add definitions that you want preserved
//End section for file Class1.h
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
class Class1
{
//Begin section for Class1
//TODO: Add attributes that you want preserved
//End section for 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);
}; //end class Class1
Class1.cpp:
//Begin section for file Class1.cpp
//TODO: Add definitions that you want preserved
//End section for file Class1.cpp
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation2(int Parameter1)
{
//TODO Auto-generated method stub
return 0;
}
|
| Class1.h 또는 Class1.cpp에서 @generated 태그가 삭제됨 |
| 고유 ID가 없는 경우 변환은 Operation2가 새 메소드임을
판별합니다. 코드는 다음 변경사항을 보여 줍니다.
Class1.h:
#ifndef CLASS1_H
#define CLASS1_H
//Begin section for file Class1.h
//TODO: Add definitions that you want preserved
//End section for file Class1.h
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
class Class1
{
//Begin section for Class1
//TODO: Add attributes that you want preserved
//End section for 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);
}; //end class Class1
#endif
Class1.cpp:
#include "Class1.h"
//Begin section for file Class1.cpp
//TODO: Add definitions that you want preserved
//End section for file 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 Auto-generated method stub
return 0;
}
|