UML에서 C++로 변환은 다음 요소에 @generated 태그를 추가합니다.
UML에서 C++로 변환을 재실행할 때 기본적으로 변환은 변환에서 생성되거나 사용자가 작성하는 메소드 본문을 겹쳐쓰지 않습니다. @generated 태그를 제거하는지 여부에 관계없이 변환은 항상 메소드 본문을 보존합니다.
변환이 항상 메소드 본문을 보존하더라도, 메소드에서 @generated 태그를 제거하여 메소드에 대한 구조적 변경사항을 보존해야 합니다. 예를 들어, 메소드 서명을 변경하거나 생성자에 개시자(initializer)를 추가하거나 메소드에 예외를 추가하거나 소스 코드에 주석을 추가하는 경우 메소드에 대한 @generated 태그를 제거해야 합니다.
| UML 모델 요소 | 생성된 코드 | 수정된 코드 | 변환을 재실행한 후 생성된 코드 |
|---|---|---|---|
![]() |
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 Operation1();
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Operation2();
}; //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
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1()
{
//TODO Auto-generated method stub
return 0;
}
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation2()
{
//TODO Auto-generated method stub
return 0;
}
|
Class1.h:#ifndef CLASS1_H
#define CLASS1_H
//Begin section for file Class1.h
#include Class2.h
//End section for file Class1.h
class Class1:public Class2
{
//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 Operation1(int parameter1);
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Operation2();
}; //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
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1(int parameter1)
{
int j = 1;
return j;
}
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation2()
{
int i = 2;
return i;
}
|
Class1.h:#ifndef CLASS1_H
#define CLASS1_H
//Begin section for file Class1.h
#include Class2.h
//End section for file Class1.h
class Class1:public Class2
{
//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 Operation1();
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Operation2();
}; //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
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1()
{
//TODO Auto-generated method stub
return 0;
}
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation2()
{
int i = 2;
return I;
}
|
| 변환 출력 | 사용자 정의 섹션 위치 및 사용 |
|---|---|
| 헤더 파일 및 본문 파일 | 변환은 이 파일 각각의 맨 앞에 하나의 사용자 정의
섹션을 추가합니다. 이 섹션을 사용하여 다음 유형의
명령문을 지정할 수 있습니다.
|
| 클래스, 공용체, 구조체, 열거 | 이 사용자 정의 섹션을 사용하여 UML에서 모델링할 수 없는 속성이나 오퍼레이션 또는 둘 다를 지정할 수 있습니다. 예를 들어, 사용자 정의 섹션에서 int myFunction(int* myOtherFunction) 속성과 같은 함수 포인터 속성을 지정할 수 있습니다. |
@generated 태그와 사용자 정의 섹션이 가능한 문제점을 피하기 위한 융통성을 제공하여도, 생성된 코드 대신 소스 UML 모델에 대한 구조적 변경을 작성해야 합니다. 또한 역변환을 실행하여 새 메소드나 속성을 소스 UML 모델에 추가할 수도 있습니다.
| UML 모델 요소 | 생성된 코드 | 사용자 정의 섹션 외부에 추가되는 속성 | 사용자 정의 섹션에 추가되는 속성 |
|---|---|---|---|
![]() |
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 Operation1();
}; //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
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1()
{
//TODO Auto-generated method stub
return 0;
}
|
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;
bool attribute2;
public:
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Operation1();
}; //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
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1()
{
//TODO Auto-generated method stub
return 0;
}
|
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
bool attribute2;
//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 Operation1();
}; //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
//@generated "UML to C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1()
{
//TODO Auto-generated method stub
return 0;
}
|