변환이 생성하는 CORBA(Common Object Request
Broker Architecture) IDL(Interface Definition Language)은
소스 UML 모델 요소 및 해당되는 특성에 따라 결정됩니다.
모델
모델은 CORBA 요소에 직접 맵핑하지 않습니다.
소스 모델에 컴포넌트가 없는 경우 변환은 CORBA 요소를
생성하지 않습니다.
컴포넌트
변환은 컴포넌트에서 단일
CORBA IDL 파일을 생성합니다. IDL 파일에는 컴포넌트가 소유하는
CORBA 요소가 포함됩니다.
기본 유형
변환은 기본 유형에서
CORBA 기본 유형이나 CORBA 원시 유형을 생성합니다. CORBA 유형 모델
라이브러리에는 CORBA 기본 유형에 해당되는 UML 기본 유형이
포함됩니다. 또는 CORBA 기본 유형과 이름이 같은
기본 유형을 소스 모델에서 작성할 수도 있습니다.
다음 목록은 CORBA 기본 유형 라이브러리에 있는 유형을
표시합니다.
- any
- boolean
- char
- double
- fixed
- float
- long
- long double
- long long
- Object
- octet
- short
- string
- TypeCode
- unsigned long
- unsigned long long
- unsigned short
- ValueBase
- void
- wchar
- wstring
이전 목록에 없는 소스 모델의 기본 유형은
CORBA 원시 유형을 나타냅니다.
CORBA 원시 유형의 경우 변환은 IDL 파일에서 원시
정의를 생성합니다.
패키지
변환은 컴포넌트 패키지에서 CORBA
모듈을 생성합니다. 변환은 컴포넌트에 없는 패키지를
무시합니다.
인터페이스
변환은 소스 모델의 인터페이스에서
CORBA 인터페이스를 생성합니다. 인터페이스의 일반화는
CORBA 인터페이스의 상속에 해당됩니다.
다음 표는 소스 모델 요소의 UML 특성과
변환에서 생성되는 해당 CORBA 요소를 나열합니다.
| UML 특성 |
변환 출력 |
| 이름 |
부적절한 문자가 제거되고 지정된 이름을 갖는 IDL의 새 CORBA
인터페이스 |
| 가시성, public |
일반 인터페이스 |
| 가시성, private |
로컬 인터페이스 |
| Abstract |
Abstract CORBA 인터페이스 |
| 리프 |
무시됨 |
속성 및 연관
변환은 속성 및 연관에서
CORBA 속성을 생성합니다. 다음 표는 소스 모델 요소의 UML 특성과
변환에서 생성되는 해당 CORBA 요소를 나열합니다.
| UML 특성 |
변환 출력 |
| 이름 |
동일한 이름의 CORBA 속성 |
| 유형(연관 특성) |
이 연관의 공급자로서 유형을 갖는 CORBA 속성 |
| 유형(속성 특성) |
지정된 기본 유형의 CORBA 속성 |
| "Is Static" 및 "default" 값 |
CORBA 상수 |
| 읽기 전용 |
읽기 전용 CORBA 속성 |
| 순서 지정 |
IDL 순서 |
| «CORBAUnion» 스테레오타입이 적용된 클래스의 속성에 적용되는
«switch» 스테레오타입 |
IDL 공용체의 switch문 switch문의
각 케이스는 «switch» 스테레오타입이 적용된 UML 속성에 해당됩니다.
|
오퍼레이션
변환은 «CORBAValue»
스테레오타입이 적용된 클래스나 인터페이스에 선언된 오퍼레이션에서
IDL 오퍼레이션을 생성합니다. 다음 표는 소스 모델 요소의 UML 특성과
변환에서 생성되는 해당 CORBA 요소를 나열합니다.
| UML 특성 |
변환 출력 |
| 이름 |
지정된 이름의 새 CORBA 오퍼레이션 |
| 리턴 유형 |
CORBA 오퍼레이션의 리턴 유형 |
| 다른 모든 특성 |
무시됨 |
| «CORBAOneway» 스테레오타입이 있는 오퍼레이션 |
단방향 IDL 오퍼레이션 |
| «CORBAValue» 클래스의 오퍼레이션에 대한 «create» 스테레오타입 |
CORBA 값 초기화 프로그램 오퍼레이션에 맵핑됨 |
| 오퍼레이션에 적용되는 «CORBAOperation» 스테레오타입의
context 특성 |
오퍼레이션 호출의 일부인 ID에 맵핑되는 문자열 값
세트 변환은 Interface1 인터페이스가 있는 UML 모델에서
다음 코드 단편을 생성합니다. 이 인터페이스에는 해당되는 context 특성에 "sys_time" 및
"sys_location" 값이 있는 Operation1 오퍼레이션이 들어 있습니다.
module Module1 {
interface Interface1 {
long Operation1() context ("sys_time", "sys_location");
};
};
|
매개변수
UML 매개변수에서, 변환은
IDL 오퍼레이션을 생성합니다. 다음 표는 소스 모델 요소의 UML 특성과
변환에서 생성되는 해당 CORBA 요소를 나열합니다.
| UML 특성 |
변환 출력 |
| 이름 |
지정된 이름의 새 매개변수 |
| 방향(in, out, inout) |
IDL의 해당 매개변수 |
| 유형 |
지정된 유형의 매개변수 |
| 가시성 |
무시됨 |
열거
변환은 UML 열거에서
CORBA 열거를 생성합니다. 열거에는
열거 리터럴만 포함될 수 있습니다.
«CORBAUnion» 스테레오타입이 있는 클래스
변환은
«CORBAUnion» 스테레오타입이 적용된 클래스에서 CORBA
공용체(구성된 값)을 생성합니다.
다음 항목을 포함하는
UML 모델을 가정하는 다음 예제를 고려하십시오.
- 컴포넌트 ComponentIDL1
- ComponentIDL1 컴포넌트에는 Module1 UML 패키지가 있음
- Module1 모듈에는 Union1 클래스가 있음
- Union1 클래스에는 «CORBAUnion» 스테레오타입이 적용되고
switchType 특성이 long으로 설정됨
- 클래스에는 각각 long, string 및
char 유형의 세 속성이 있고 각 속성에 «switch» 스테레오타입이
적용됨
- 첫 번째 및 두 번째 속성에는 각각 1 및 2로
설정된 case 특성이 있고 세 번째 속성에는 true로 설정된
isDefault 특성이 있음
변환은 다음 코드 단편에 표시된 것처럼
Module1 모듈의 ComponentIDL1.idl 파일에서 다음 공용체를 생성합니다.
module Module1 {
union Union1 switch(long) {
case 1: long u1;
case 2: string u2;
default: char u3;
};
};
«CORBAValue» 스테레오타입이 있는 클래스
변환은
«CORBAValue» 스테레오타입이 적용된 클래스에서 CORBA
값 유형을 생성합니다. «CORBAValue» 스테레오타입에는
specification 특성이 있습니다. specification 특성은
값이
none,
custom 또는
boxed인 열거입니다.
기본값은
none입니다.
CORBA 값 유형은 선택적 상태가 있는
엔티티와 인터페이스 특성과 구분되는 초기화 프로그램 메소드입니다.
«CORBAState» 스테레오타입의 속성은 CORBA 값 유형의
상태 구성원을 나타냅니다. «create» 스테레오타입은 CORBA 값 유형의
초기화 프로그램 메소드를 나타냅니다.
다음 표는 소스 모델 요소의 UML 특성과
변환에서 생성되는 해당 CORBA 요소를 나열합니다.
| UML 특성 |
변환 출력 |
| 스테레오타입 |
«CORBAValue» |
| 이름 |
지정된 이름의 새 값 유형 |
| 가시성 |
무시됨 |
| Abstract |
Abstract 값 유형 |
| 가시성이 public 또는 private인 «CORBAState»가 있는 속성 |
가시성이 public 또는 private인 CORBA 값 유형의
CORBA 상태 구성원 |
| «create» 스테레오타입이 있는 오퍼레이션 |
abstract가 아닌 값 유형의 CORBA 팩토리 메소드 |
| «CORBAtruncatable» 스테레오타입이 적용되는 일반화 관계.
관계는 «CORBAValue» 스테레오타입이 적용된 두 클래스 사이의 관계여야 함 |
두 클래스 사이의 truncatable 상속을 표시함 |
정적 속성
CORBA 상수 선언은 IDL 파일,
모듈, 인터페이스 또는 값 유형의 범위에 표시될 수 있습니다.
소스 모델에서, 인터페이스 또는 클래스의 static 속성은
인터페이스 또는 값 유형의 범위에 있는 CORBA 상수를
나타낼 수 있습니다.
CORBA 모듈 또는 IDL 파일 범위에 있는
CORBA 상수는 «CORBAConstants» 스테레오타입이 있는 클래스의
속성이어야 합니다. 클래스는 모듈 범위 상수의 경우 패키지에,
또는 IDL 범위 상수의 경우 컴포넌트에 있어야 합니다.
변환은 클래스 이름을 무시합니다. «CORBAConstants» 스테레오타입이 있는
클래스의 각 속성은 상수 선언을 나타냅니다.
«CORBAStruct» 스테레오타입이 있는 클래스
변환은
«CORBAStruct» 스테레오타입이 적용된 클래스에서 CORBA
구조체를 생성합니다. 클래스는 속성만 보유하고 오퍼레이션은
보유하지 않아야 합니다. 클래스의 속성 또는 연관은
구조체의 구성원을 나타냅니다.
«CORBAException» 스테레오타입이 있는 클래스
변환은
«CORBAException» 스테레오타입이 적용된 클래스에서 CORBA
예외를 생성합니다. 클래스는 속성을 포함할 수 있습니다.
«CORBATypedef» 스테레오타입이 있는 클래스
변환은
«CORBATypedef» 스테레오타입을 사용하여 새 이름을 기존 CORBA
유형에 지정합니다. «CORBATypedef» 스테레오타입이 있는 클래스는 CORBA
typedef에 해당됩니다. 클래스에서 기존 CORBA 유형으로의
대체 관계는 CORBA typedef를 나타냅니다.
«CORBATruncatable» 스테레오타입과의 일반화
관계
변환은 truncatable 값 유형 상속에 대한
코드를 생성합니다.
다음 항목을 포함하는
UML 모델을 가정하는 다음 예제를 고려하십시오.
- 컴포넌트 ComponentIDL1
- ComponentIDL1 컴포넌트에는 Module1 UML 패키지가 있음
- Module1 모듈에는 두 개의 클래스인 Class1 및 Class2가 있음
- Class1에서 Class2로의 일반화 관계가 존재하고
«CORBATruncatable» 스테레오타입이 관계에 적용됨
변환은 다음 코드 단편에 표시된 것처럼
Module1 모듈의 ComponentIDL1.idl 파일에서 다음 코드를 생성합니다.
module Module1 {
valuetype Class2 {
};
valuetype Class1 : truncatable Class2 {
};
};