대칭적 연관

대칭적 링크에서는 링크의 두 끝점 모두에 있는 오브젝트가 서로 인식합니다. 따라서 두 가지 역할이 정의됩니다.

다음 그림에 표시된 샘플 오브젝트 모델 다이어그램은 theFurnacetheRooms 사이의 대칭적 연관을 보여줍니다. 이 연관은 하나의 난방로가 방에 제공하는 to-many 링크입니다.

역할은 다음과 같이 구현됩니다.

링크 데이터 멤버

기본적으로 링크에는 단일 인스턴스가 있습니다. 단일 인스턴스에 대한 링크를 스칼라라고 합니다. 스칼라 관계는 해당 이름이 역할과 동일하고 해당 역할이 다른 오브젝트를 지시하는 오브젝트의 구조에 있는 데이터 멤버에 생성됩니다. 예를 들어, Furnace에 대한 유형 포인터의 itsFurnace 멤버가 Furnace에 대한 Room의 링크를 표시하기 위해 Room 구조의 멤버로 생성됩니다.

struct Room {
    /***    User implicit entries    ***/
    struct Furnace * itsFurnace;
};

링크 액세서

링크 액세서는 연관된 오브젝트에 대한 포인터를 리턴합니다. 이름의 형식은 <object>_get_<rolename>()입니다.

예를 들어, itsFurnace 역할에 대해 다음 액세서가 생성됩니다.

struct Furnace * Room_get_itsFurnace(const Room* 
    const me);

다음은 링크 액세서의 구현입니다.

struct Furnace * Room_get_itsFurnace(
    const Room* const me)
{
    return (struct Furnace * )me->itsFurnace;
}

링크 뮤테이터

링크 뮤테이터는 연관된 오브젝트에 대한 포인터를 설정합니다. 링크가 대칭적인 경우 뮤테이터 역시 상호간의 링크를 설정합니다.

링크 뮤테이터에 대해 최대 세 개의 메소드를 생성할 수 있습니다.


피드백