對多鏈結

IBM® Rational® Rhapsody® 使用各種儲存器以實作鏈結至多個物件或對多鏈結,是取決於鏈結的對應關係及排序。

對多鏈結的類型如下:

針對每一個鏈結類型而產生適當的存取元及轉換元作業,是取決於用來實作的儲存器而定。可透過角色內容來修改實作關係的預設值。

依序鏈結

依預設,會將指向多個物件的依序鏈結實作為 RiCList。將 CG::Relation::Ordered 內容設定為 Checked,可將對多鏈結設定排序。 此排序包括的關係有已知對應關係(有限依序關係)與未知對應關係(無界限的依序關係)。

未排序的鏈結

依預設,會將指向多個物件的未排序鏈結實作為 RiCCollection。將 Ordered 內容設定為 Cleared,可將對多鏈結設定未排序。 此鏈結包括的關係有已知對應關係(有限未排序關係)與未知對應關係(無界限未排序關係)。

內嵌的鏈結

當子物件的對應關係是 1(內嵌的純量關係)時,將子物件鏈結實作為內嵌的資料成員,或當子物件的對應關係是大於 1 的數值(內嵌的固定關係)時,將子物件鏈結實作為陣列。

例如,HomeHeatingSystem 物件有一個名為 itsFurnace 的子物件,以及三個名為 itsRoom 的子物件,全部都內嵌作為元件。在此情況下,對於 HomeHeatingSystemtheFurnace 與其有一個內嵌的純量關係,而 theRooms 與其有一個內嵌的固定關係。 這些關係可實作如下:

struct HomeHeatingSystem {
    /***   User implicit entries   ***/
    struct Furnace theFurnace;
    struct Room theRooms[3];
};

您可以針對純量關係將 CG::Relation::Implementation 內容設定為 Scalar,或針對固定關係設定為 Fixed,以達到相同的效果。 這些關係類型實作僅適用於下列兩種狀況:

固定鏈結

依預設,會將具有固定對應關係的對多鏈結實作為 RiCCollection

限定的鏈結

依預設,會將其中有指定限定元的對多鏈結實作為 RiCMap

隨機存取鏈結

隨機存取鏈結是個已加強的關係,提供權限可對儲存器中的項目進行隨機存取。 您可以將角色的 C_CG::Relation::GetAt 內容設定 Checked,以授與對多鏈結隨機存取的權限。同時必須將 C_CG::Relation::GetAtGenerate 內容設定為 Checked。這個設定會產生角色的存取元,針對儲存器使用適當的 getAt() 方法。將 $index 關鍵字作為參數傳遞至 getAt() 方法,以存取儲存器內的特定元素。$index 的預設值是 inti

例如,有限依序關係的 GetAt 內容值如下:

RiCList_getAt(&$me$cname, $index)

theRoomsGetAt 內容設定為 Checked,會導致在 HomeHeatingSystem 產生下列存取元,以存取特定的 Room

struct Room * HomeHeatingSystem_getTheRooms(
    const HomeHeatingSystem* const me, int i) {
    return RiCList_getAt(&me->theRooms, i);
}

回饋