UML에서 C++로 변환 프로파일의 스테레오타입

UML에서 C++로 변환 프로파일에는 매개변수, 특성, 문서, 특정 관계, 클래스, 패키지 및 모델에 적용할 수 있는 스테레오타입이 있습니다. 각 스테레오타입에는 정의된 올바른 속성 및 유형 세트가 있습니다.

이 컨텐츠는 버전 7.5.4 이상에 적용됩니다. 다음 표에서는 프로파일의 스테레오타입과 해당되는 관련 특성 및 유형을 나열합니다.

스테레오타입 적용 대상 특성 Type
«cpp_assignment» 오퍼레이션 isInline 기본값이 false인 부울
«cpp_body_comment» 소스 코드에 표시할 주석(예: 기능 및 정적 변수에 대한 주석)    
«cpp_constructor» 오퍼레이션 isExplicit, isInline 기본값이 false인 부울
memberInitializers 이 문자열은 클래스 생성자의 초기화 프로그램 목록을 지정합니다. 목록은 클래스 또는 상위 클래스 속성의 초기값을 지정합니다.
예를 들어, 정수 속성 attribute1과 문자열 속성 name1을 보유하는 클래스 Class1에 대한 생성자 메소드의 초기화 프로그램 목록을 생성하려면 다음 문자열을 지정하십시오.
attribute1(10),name1("Class1")
문자열을 작은따옴표로 묶지 마십시오. 변환은 다음 생성자를 생성합니다.
Class1::Class1() :
attribute1(10),name1("Class1")
{
//TODO Auto-generated method stub
}
«cpp_copy_constructor» 오퍼레이션 isExplicit, isInline 기본값이 false인 부울
memberInitializers 이 문자열은 클래스 생성자의 초기화 프로그램 목록을 지정합니다. 목록은 클래스 또는 상위 클래스 속성의 초기값을 지정합니다.
예를 들어, 정수 속성 attribute1과 문자열 속성 name1을 보유하는 클래스 Class1에 대한 생성자 메소드의 초기화 프로그램 목록을 생성하려면 다음 문자열을 지정하십시오.
attribute1(10),name1("Class1")
문자열을 작은따옴표로 묶지 마십시오. 변환은 다음 생성자를 생성합니다.
Class1::Class1() :
attribute1(10),name1("Class1")
{
//TODO Auto-generated method stub
}
«cpp_dependency» 종속 관계 isForwardReference 기본값이 false인 부울. 값이 true로 설정되면 클라이언트 클래스의 헤더 파일에서 공급자 유형의 전방 선언을 생성함
이 특성을 true로 설정해도 변환이 다음 상황에서 전방 참조를 생성하지 않습니다.
  • 공급자가 typedef, 중첩 유형 또는 열거인 경우
  • 클라이언트 클래스에 공급자 유형의 비참조 또는 비포인터 유형이 있는 경우
isInclusionInHeader 기본값이 false인 부울. 값이 true로 설정되면 변환은 클라이언트 클래스의 헤더 파일에서 #include 지시문을 생성함
«cpp_destructor» 오퍼레이션 isVirtual, isInline 기본값이 false인 부울
«cpp_enum» 열거 isAnonymousEnum 기본값이 false인 부울. 값이 true로 설정되면 변환은 익명의 열거를 생성함
«cpp_external_inclusion» 클래스, 인터페이스 includeType 가져온 클래스가 변환 소스의 일부가 아닌 경우 변환이 include 지시문를 생성하는 방법을 지정하는 값이 있는 열거
relativeToFolderInput 문자열. includeType 특성에서 이 폴더에 상대적인 포함 지시문 생성 값을 지정하는 경우 필수
specificFileNameInput 문자열. includeType 특성에서 다음 파일 이름을 포함하는 포함 지시문 생성 값을 지정하는 경우 필수
«cpp_friend» 종속 관계   헤더 파일에서 #include 지시문을 생성하고 클라이언트 클래스의 동반자로 공급자 클래스를 선언함
«cpp_generalization» 일반화 관계, InterfaceRealization 관계 GeneralizationKind public, protected, private 및 기본값이 있는 열거(0-public, 1-protected, 2-private, 3-기본값)
isVirtual 기본값이 false인 부울. 가상 상속을 표시합니다.
«cpp_internal_inclusion» 클래스, 인터페이스 includeType 가져오는 클래스와 가져온 클래스가 변환 소스의 일부인 경우 변환이 include 지시문를 생성하는 방법을 지정하는 값이 있는 열거
relativeToFolderInput 문자열. includeType 특성에서 이 폴더에 상대적인 포함 지시문 생성 값을 지정하는 경우 필수
specificFileNameInput 문자열. includeType 특성에서 다음 파일 이름을 포함하는 포함 지시문 생성 값을 지정하는 경우 필수
«cpp_namespace» 패키지 NamespaceName 문자열
«cpp_operation» 오퍼레이션 isInline 기본값이 false인 부울. 값이 true로 설정되면 변환은 인라인으로 오퍼레이션을 생성하고 해당되는 헤더 파일에 오퍼레이션 본문이 추가됨
isVirtual 기본값이 false인 부울. 값이 true로 설정되면 변환은 가상 기능으로 오퍼레이션을 생성함
isFriend 기본값이 false인 부울. 값이 true로 설정되면 변환은 동반자 오퍼레이션을 생성함
isGlobal 기본값이 false인 부울. 값이 true로 설정되면 변환은 글로벌 기능을 생성함
«cpp_properties» 클래스, 인터페이스, 열거 bodyFileExtension 지정된 확장이 있는 C++ 본문 파일
headerFileExtension 지정된 확장이 있는 C++ 헤더 파일
예를 들어, 파일 이름 확장자가 .inc인 헤더 파일의 C++ 템플리트 클래스에 대한 코드를 생성하려면 스테레오타입을 클래스에 적용하고 이 특성을 ".inc"로 설정하면 됩니다.
주: .inc 파일 이름 확장자를 C++ 헤더 파일에 연관시켜서 C/C++ 개발 도구(CDT)가 .inc를 올바른 C++ 파일 이름 확장자로 인식하도록 해야 합니다.
«cpp_struct» 클래스    
«cpp_type» 특성, 매개변수 arrayDimensions 이 문자열은 일반적으로 UML 2.0이 지원하지 않는 다차원 배열을 지정하는 데 사용됩니다.

예를 들어, 특성 [10][20] 또는 비리턴 유형 매개변수 [][10]에 대해 배열을 지정하려면 이 문자열을 사용합니다.

InitializerKind 이 열거에는 생성자 및 지정 값이 있습니다(0-생성자).

InitializerKind 특성이 0으로 설정되면 변환은 생성자 초기화 프로그램을 생성합니다.

InitializerKind 특성이 1로 설정되면 변환은 생성자에서 대입문을 생성합니다.

UML에서 C++로 변환이 «cpp_type» 스테레오타입이 적용된 요소를 변환하는 방법에 대한 예제를 참조하십시오.

isAuto, isMutable, isRegister, isVolatile 기본값이 false인 부울
qualifier 이 문자열에는 UML에서 모델링할 수 없고 변수 이름 이전과 유형 다음에 표시되는 C++ 유형의 일부를 포함합니다(예: ** 및 &).
예를 들어, const int **a[12][33]은 다음 항목으로 표시될 수 있습니다.
  • a UML 특성
  • true로 설정된 isReadOnly 스테레오타입 특성
    주: isReadOnly 특성은 const 키워드를 생성함
  • 적용된 «cpp_type» 스테레오타입
  • **로 설정된 규정자 스테레오타입 특성
  • [12][33]으로 설정된 arrayDimensions 스테레오타입 특성
속성 isGlobal 기본값이 false인 부울. 값이 true로 설정되면 변환은 글로벌 변수를 생성함
«cpp_typedef» 클래스 arrayDimensions 문자열
ImplementationType 이 문자열은 typedef가 참조하는 유형을 지정합니다. 기본 유형이나 사용자 정의 유형이 될 수 있습니다.

사용자 정의 유형은 완전한 유형이거나 그렇지 않을 수 있습니다. 유형 이름이 완전하지 않은 경우 typedef의 범위는 사용자 정의 유형에 적용됩니다.

qualifier 이 문자열은 포인터 유형, 상수 등을 지정합니다.
예를 들어, 변환은 다음 설명의 UML 요소에 대해 const int **Typedef1[12][13]을 생성합니다.
  • «cpp_typedef»로 스테레오타입이 지정된 클래스 Typedef1
  • ImplementationType int
  • arrayDimensions[12][13]
  • qualifier const **
«cpp_union» 클래스 isAnonymousUnion 기본값이 false인 부울

UML에서 C++로 변환이 «cpp_type» 스테레오타입이 적용된 요소를 변환하는 방법에 대한 예제

이 예제에서, UML 클래스 Class1에는 다음 속성이 있습니다.
  • 기본값이 5인 정수 속성 attribute1. InitializerKind 특성은 0으로 설정됨
  • 기본값이 true인 부울 속성 attribute2. InitializerKind 특성은 1으로 설정됨
«cpp_type» 스테레오타입이 두 속성 모두에 적용됩니다. UML에서 C++로 변환 구성은 생성자를 생성하도록 구성되며 추적성 옵션은 사용할 수 없습니다. 다음 표는 변환이 생성하는 C++ 코드를 나열합니다.
UML 요소 변환 출력
이 이미지는 예제에서 설명된 클래스를 보여 줍니다. 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)"
Class1::Class1() : 
attribute1(5)
{
    //TODO Auto-generated method stub
    attribute2 = true;
}

피드백