오브젝트와 연관되는 각 오퍼레이션은 C에서 글로벌 함수로 구현되므로, 오퍼레이션이 작동하는 오브젝트에 대한 포인터 양식으로 컨텍스트와 함께 제공해야 합니다. C++에서 이 컨텍스트는 내재된 this 포인터 양식으로 첫 번째 인수로서 제공됩니다. 그러나 C에서는 this 포인터를 사용할 수 없습니다. 따라서 C로 된 IBM® Rational® Rhapsody®에서는 오퍼레이션에 대한 첫 번째 인수가 일반적으로 오퍼레이션과 연관되는 오브젝트에 대한 포인터입니다. 이 컨텍스트 포인터를 보통 me라고 합니다. 예를 들면, 다음과 같습니다.
/*## operation close() */ void Valve_close(Valve* const me);
단 하나의 싱글톤 오브젝트 인스턴스가 있으므로 싱글톤 오퍼레이션에 대해 컨텍스트 포인터가 필요하지 않습니다. 자세한 정보는 싱글톤 오브젝트의 내용을 참조하십시오.
C_CG::Operation::Me 및 C_CG::Operation::MeDeclType 특성을 사용하여 첫 번째 인수에 대해 생성되는 이름을 변경할 수 있습니다. Me 특성은 첫 번째 인수에 사용되는 문자열(예: "me")을 지정합니다. MeDeclType 특성은 첫 번째 인수에 대한 전체 유형 선언을 지정합니다. 해당 기본값은 다음과 같습니다.
$objectName* const
objectName 변수는 오브젝트 유형의 이름으로 바뀝니다. a :i 스위치를 objectName 변수에 추가하면 대문자만 남도록 이름은 잘립니다. 예를 들어, 이름이 HomeHeatingSystem인 오브젝트에 대해 $objectName:i를 사용하면 이름은 HHS가 됩니다.
C에는 함수에 대한 일반 네임스페이스가 있으므로, Rational Rhapsody는 네임스페이스 경합을 해결하기 위해 이름 지정 규칙을 사용합니다. 사용되는 규칙은 각 (public) 오퍼레이션에 오퍼레이션이 작동하는 오브젝트의 이름으로 접두부를 붙이는 것입니다. (private 오퍼레이션에 대한 다른 이름 지정 규칙에 대해서는 오퍼레이션의 가시성의 내용을 참조하십시오.)
예를 들어, Valve 오브젝트에는 두 개의 public 오퍼레이션인 open() 및 close()가 있습니다. 이 오퍼레이션은 다음과 같이 구현됩니다.
void Valve_open(struct Valve_t * const me); void Valve_close(struct Valve_t * const me);