기본적으로 변환은 소스 C++ 요소와 이름 및 가시성이 같은 UML 요소를 생성합니다. 변환이 C++ 요소를 변환할 수 없는 경우 변환은 요소를 무시합니다. 다음 표는 변환이 C++ 코드 요소를 UML 모델 요소로 변환할 때 생성하는 출력을 나열합니다.
| C++ 요소 | UML 요소 |
|---|---|
| 클래스 |
|
| 열거 |
|
| 네임스페이스 |
|
| 중첩 클래스, 구조체 또는 공용체 |
|
| 구조체 |
|
| Typedef |
|
| 공용체 |
|
변환은 C++ 코드에 있는 프리프로세서 지시문을 변환하지 않습니다. 이 C++ 요소는 UML로 표시할 수 없기 때문입니다. C++ 소스 파일의 사용자 정의 섹션에는 사용자 정의 프리프로세서 지시문을 지정해야 합니다.
소스 C/C++ 개발 도구(CDT) 프로젝트에 소스 CDT 프로젝트에 없는 클래스를 인스턴스화하는 템플리트 인스턴스화가 포함된 경우, 변환은 템플리트 인스턴스화를 UML 기본 유형으로 변환합니다. 변환은 템플리트 인스턴스화에 대한 참조사항을 대상 모델의 UML 기본 유형에 대한 해당 참조사항으로 변환합니다.
| C++ 템플리트 클래스 | UML 요소 |
|---|---|
| 템플리트 클래스 정의 |
|
| typedef 정의에 있는 템플리트 클래스 인스턴스화 |
|
| typedef 정의에 없는 템플리트 클래스 인스턴스화 |
|
class Class1{
int x;
}
변환은
UML 클래스 Class1에 있는 특성 x의 유형과 int C++ 기본 유형
사이의 맵핑을 작성합니다. C++
유형 라이브러리에는 int 기본 유형이 있습니다. 다음 표는 C++ 구성원 변수의 해당 유형이 사용자 정의 유형인 경우 변환이 유형(Type) 특성을 설정하는 방법을 나열합니다.
C++ 구성원 변수의 유형이 사용자 정의 유형인 경우 변환은 UML 유형 특성을 대상 UML 모델에 있는 사용자 정의 유형에 해당되는 UML 요소 값으로 설정합니다. 변환이 사용자 정의 유형에 해당되는 모델에서 UML 요소를 판별할 수 없는 경우 변환은 UML 요소와 같은 이름의 UML 기본 유형을 작성하고 새 UML 기본 유형의 이름과 동일하게 UML 특성의 유형을 설정합니다.
다음 표의 예제는 C++ 구성원 변수의 유형이 다른 CDT 프로젝트에 정의된 유형을 참조할 때 변환이 UML 유형 특성의 값을 설정하는 방법을 나열합니다.
| C++ 코드 샘플 | 유형 특성의 값 |
|---|---|
| CDTProject1 프로젝트에 Class1 클래스가 있습니다. CDTProject2 프로젝트에 Class2 클래스가 있습니다. #include "CDTProject1/Class1"
class Class2{
Class1 x;
};
|
변환은 UML 특성 x의 유형과 C++ 소스 프로젝트 CDTProject1에 있는 클래스 Class1에 해당되는 시각적 요소 사이의 맵핑을 작성합니다. |
다음 표에서는 변환이 특정 구성원 변수에 대해 생성하는 추가 정보를 나열합니다.
| C++ 구성원 변수 | 변환 출력의 추가 특성 |
|---|---|
| const | isStatic 특성이 true임 |
| mutable | 변환은 «cpp_type» 스테레오타입을 특성에 적용하고 스테레오타입의 isMutable 특성이 true로 설정됨 |
| static | isStatic 특성이 true임 |
| volatile | 변환은 «cpp_type» 스테레오타입을 특성에 적용하고 스테레오타입의 isVolatile 특성이 true로 설정됨 |
변환은 클래스, 구조체 또는 공용체의 C++ 구성원 함수를 해당되는 UML 클래스의 UML 오퍼레이션으로 변환합니다. 변경이 생성하는 UML 오퍼레이션의 이름 및 가시성은 C++ 구성원 함수와 같습니다. 다음 표는 변환이 특정 함수 매개변수에 대해 생성하는 추가 정보를 나열합니다.
| C++ 구성원 함수 | 변환 출력의 추가 특성 |
|---|---|
| Assignment | 변환은 «cpp_assignment» 스테레오타입을 적용하고 생성되는 오퍼레이션의 이름 및 가시성은 = 대입 연산자와 같습니다. |
| Const | 변환이 isQuery 특성을 true로 설정합니다. |
| Constructor | 변환이 «cpp_constructor» 스테레오타입을
적용합니다. C++ 코드의
constructor 메소드가 오버로드되는 경우, 변환은 코드의 constructor 메소드마다
대상 모델에서 해당되는 constructor 메소드를
생성합니다. 변환이 코드에서 중복되는 constructor 메소드를 발견하면, 발견되는 첫 번째 메소드에 대해 constructor 메소드를 생성합니다. |
| CopyConstructor | 변환이 «cpp_copy_constructor» 스테레오타입을
적용합니다. C++ 코드의
copy constructor 메소드가 오버로드되는 경우, 변환은 코드의 copy constructor 메소드마다
대상 모델에서 해당되는 copy constructor 메소드를
생성합니다. 변환이 코드에서 중복되는 copy constructor 메소드를 발견하면, 발견되는 첫 번째 메소드에 대해 copy constructor 메소드를 생성합니다. |
| Destructor | 변환이 «cpp_destructor» 스테레오타입을
적용합니다. C++ 코드의
destructor 메소드가 오버로드되는 경우, 변환은 코드의 destructor 메소드마다
대상 모델에서 해당되는 destructor 메소드를
생성합니다. 변환이 코드에서 중복되는 destructor 메소드를 발견하면, 발견되는 첫 번째 메소드에 대해 destructor 메소드를 생성합니다. |
| Friend | 변환이 «cpp_operation» 스테레오타입을 적용하고 isFriend 특성을 true로 설정합니다. |
| Inline | 변환이 «cpp_operation» 스테레오타입을 적용하고 isInline 특성을 true로 설정합니다. |
| Pure virtual | 변환이 isAbstract 특성을 true로 설정합니다. |
| Static | 변환이 isStatic 특성을 true로 설정합니다. |
| Virtual | 변환이 «cpp_operation» 스테레오타입을 적용하고 isVirtual 특성을 true로 설정합니다. |
class one{
int op(int x=5);
}
변환은 생성된 UML 매개변수 x를
오퍼레이션 op에서 5로 설정합니다.| C++ 함수 매개변수 | 변환 출력 |
|---|---|
| 참조 | 변환이 방향 특성을 inout으로 설정합니다. |
| 리턴 | 변환이 방향 특성을 return으로 설정합니다. |
| 일반(참조나 리턴 매개변수가 아님) | 변환이 방향 특성을 in으로 설정합니다. |
C++ 구성원 변수, 구성원 함수 및 매개변수는 유형에 대한 포인터, 참조 유형 및 배열 유형과 같은 유형 수정자를 지정할 수 있습니다. 이 유형 수정자는 UML에서 표시할 수 없습니다. 다음 표에서는 변환이 유형 수정자를 변환하는 방법을 나열합니다.
| 유형 수정자 | 변환 출력 |
|---|---|
| C++ 유형에 대한 포인터 | 변환은 생성되는 UML 매개변수나 특성에
«cpp_type» 스테레오타입을 적용하고 qualifier 속성을 포인터 오퍼레이터로
설정합니다. 다음 C++ 코드를 고려하십시오. class MyClass {
private: char* name;
};
변환은 다음 특성의 name 변수가 있는 UML 클래스 MyClass를 생성합니다. ![]() |
| C++ 유형에 대한 참조 | 변환이 qualifier 속성을
참조 오퍼레이터로 설정합니다. 변환은 소스 코드에서 여러 개의 참조 유형을 변환하는 경우에만 «cpp_type» 스테레오타입을 적용합니다. 변환이 참조 유형의 C++ 매개변수를 변환하는 경우 UML 매개변수의 direction 속성을 inout으로 설정합니다. 다음 C++ 코드를 고려하십시오. class MyClassClone {
private:
MyClassClone clone(MyClassClone& copy);
};
변환은 다음 특성의 리턴 매개변수가 있는 UML 클래스 MyClassClone을 생성합니다. ![]() |
| 배열 | 1차원 배열의 경우 변환은 UML 매개변수 또는 특성의 다중성을 1차원 값과 동일하게 설정합니다. 변환은 소스 코드에서 여러 개의 차원 배열을 변환하는 경우에만 «cpp_type» 스테레오타입을 적용합니다. 다음 예제는 변환이 유형 int x[10]의 속성에 대한 다중성을 설정하는 방법을 보여 줍니다. ![]() 변환은 다중성 특성의 하한 및 상한을 속성의 1차원 값으로 설정합니다. |