AnimSerializeOperation 특성으로 외부 함수 지정

AnimSerializeOperation 특성은 해당 유형의 모든 속성과 인수를 애니메이션화하는 데 사용되는 외부 함수의 이름을 지정합니다.

이 태스크 정보

AnimUnserializeOperation 특성으로 외부 함수 지정과 비교하십시오.

IBM® Rational® Rhapsody®는 단순 유형 및 1차원 배열의 값을 문제점 없이 애니메이션(표시)할 수 있습니다. 애니메이션 세션에서 해당 속성의 현재 값을 표시하려면 인스턴스의 기능 창을 여십시오.

그러나 날짜와 같은 보다 복잡한 유형을 애니메이션화하려면 유형이 문자열(char *)로 변환되어야 Rational Rhapsody가 유형을 표시할 수 있습니다. 이 변환은 표시하려는 유형의 하나의 인수를 사용하고 char *를 리턴하는 글로벌 함수인 인스트루먼테이션 함수를 작성하여 수행됩니다. 인스트루먼테이션 함수 자체의 애니메이션을 사용하지 않아야 합니다(함수에 AnimateAnimateArguments 특성 사용).

예를 들어, tDate 유형을 다음과 같이 정의할 수 있습니다.

typedef struct date {
   int day;
   int month;
   int year; } %s;

int 유형의 속성 개수와 tDate 유형의 속성 날짜를 갖는 오브젝트가 존재할 수 있습니다. 오브젝트에는 다음 본문이 있는 초기자(initializer)가 있습니다.

me->date.month = 5;
me->date.day = 12;
me->date.year = 2000;

날짜 속성을 애니메이션화하려면 날짜의 AnimSerializeOperation 특성을 tDate 유형을 char *로 변환하는 함수의 이름으로 설정해야 합니다. 예를 들어, 특성을 showDate 함수로 설정할 수 있습니다. 이 함수 이름은 소괄호 없이 입력해야 합니다. tDate 유형의 속성을 사용하고 char *를 리턴해야 합니다. showDate 함수의 AnimateAnimateArguments 속성은 선택 취소로 설정되어야 합니다.

showDate 함수 구현은 다음과 같습니다.

showDate(tDate aDate) {
    char* buff;
    buff = (char*) malloc(sizeof(char) * 20);
    sprintf(buff,"%d %d %d",
        aDate.month,aDate.day,aDate.year);
    return buff;
}

애니메이션으로 이 모델을 실행하는 경우, 이 오브젝트의 인스턴스가 브라우저의 날짜 속성에 5 12 2000 값을 표시합니다.

showDate 함수가 속성이 속하는 클래스와 동일한 클래스에 정의되고 함수가 정적이 아닌 경우, AnimSerializeOperation 특성 값은 다음과 같습니다.

myReal->showDate

이 값은 함수가 OMAnimated<classname> 클래스에 있는 serializeAttributes 함수에서 호출되었음을 보여줍니다.

주: showDate 함수는 malloc/alloc/calloc 함수(C) 또는 new 연산자(C++)와 함께 리턴되는 문자열에 대한 메모리를 할당해야 합니다. 그렇지 않으면 시스템이 종료됩니다.

이 특성의 기본값은 비어 있는 문자열입니다.


피드백