변환은 UML 오퍼레이션을 해당 클래스의 메소드로 생성하고 다음 UML 특성을 사용합니다.
특성 |
C++ |
Name |
메소드의 이름(이름 유효성 검증이 적용됨) |
Visibility |
메소드의 가시성을 결정합니다. |
IsAbstract |
메소드를 순수 가상 메소드로 생성합니다. |
IsQuery |
메소드를 const로 생성합니다. ("const"를 오퍼레이션의 접미부에 추가합니다.) |
IsStatic |
인스턴스 범위 대신 클래스로 메소드를 생성합니다. (정적 키워드를 오퍼레이션의 접미부에 추가합니다.) |
UML 오퍼레이션 리턴 매개변수의 유형은 생성된 C++ 메소드의 유형이 됩니다. 리턴 매개변수가 존재하지 않는 경우, 메소드의 리턴 유형이 무효한 것으로 가정됩니다(표준 오퍼레이션은 제외). 리턴 매개변수가 없거나 하나 이상의 리턴 매개변수가 있는 오퍼레이션에 대해서는 경고가 표시됩니다.
cpp_operation 스테레오타입을 UML 오퍼레이션에 적용하여 여러 C++ 특정 특성을 지정할 수 있습니다.
· isInline: 변환은 오퍼레이션을 인라인으로 생성합니다. (오퍼레이션 본문을 헤더에 추가합니다.)
· isVirtual: 오퍼레이션을 가상 함수로 선언합니다.
· isFriend: 동반자 오퍼레이션을 생성합니다.
C++에서는 정적 규정자를 가상 또는 동반자 규정자와 결합할 수 없습니다. 코드 생성 목적인 경우 변환은 정적 규정자를 선호합니다.
변환은 UML 매개변수를 C++ 오퍼레이션의 인수로 변환합니다. 변환은 "return" 유형의 매개변수를 생성하지 않고, 매개변수를 오퍼레이션 리턴 유형의 표시기로 사용합니다. 변환은 매개변수의 유형을 인수의 유형으로 변환합니다.
변환은 "out" 또는 "in/out" 방향을 가지는 매개변수를 참조로 변환합니다. (이는 "&" 규정자를 유형 스펙에 추가함을 의미합니다.)
변환은 매개변수의 기본값을 사용하여 C++ 오퍼레이션 인수의 기본값을 지정합니다.
선택적으로, cpp_type 스테레오타입을 UML 매개변수에 적용할 수 있습니다. 이 스테레오타입은 문자열을 생성된 유형에 대한 규정자로 입력하는 데 사용할 수 있는 규정자 속성을 가집니다.
다음 예제는 특정 조건이 결과 코드에 영향을 주는 방법을 보여줍니다.
· 오퍼레이션 유형이 지정된 경우(예: Class1) 및 규정자를 지정하지 않거나 스테레오타입을 적용하지 않은 경우, 속성에 대해 생성된 코드는 "Class1 <ArgumentName>"입니다.
· 오퍼레이션 유형이 지정되지 않은 경우 cpp_type 스테레오타입을 적용하고 규정자 문자열을 "int "로 설정하면 생성된 코드는 "int <ArgumentName>"입니다.
· 오퍼레이션 유형이 지정된 경우(Class1), cpp_type 스테레오타입을 적용하고 규정자 문자열을 " * const "로 설정하면 생성된 코드는 "Class1 * const <ArgumentName>"입니다.
변환은 매개변수에 사용되는 UML 클래스를 포함 목록에 추가합니다.
변환은 모델 서버가 제공하는 순서대로 매개변수를 생성합니다.