対称関連

対称的なリンクを使用すると、リンクの両端のオブジェクトが互いを認識できます。 そうして、2 つの役割が定義されます。

下図に示すように、サンプルのオブジェクト・モデル図は、theFurnacetheRooms の間の対称関連を示します。 この関連は to-many リンクで、この場合は 1 つの暖房が 3 つの部屋にサービスを提供します。

ロールは、次のように実装されます。

リンク・データ・メンバー

デフォルトで、リンクには、単一インスタンスがあります。 単一インスタンスへのリンクは、スカラーと呼ばれます。スカラー関係は、その名前がロールと同じで、そのタイプが他のオブジェクトへのポインターであるオブジェクトの構造内のデータ・メンバーに生成されます。 例えば、Furnace を指すポインターのタイプの itsFurnace メンバーが、Room 構造のメンバーとして生成されて、 RoomFurnace に対するリンクを表します。

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;
}

リンク・ミューテーター

リンク・ミューテーターは、関連オブジェクトへのポインターを設定します。 リンクが対称的である場合、ミューテーターもまた相互リンクを設定します。

リンク・ミューテーターには、最高 3 つまでのメソッドが生成されます。


フィードバック