每一個子物件都將 HomeHeatingSystem 辨識為其母項,HomeHeatingSystem 可以依名稱存取其每一個子物件。此 HomeHeatingSystem 視圖稱為物件結構視圖,因為它會顯示物件的內部結構。視系統本質而定,子物件可以鏈結或不鏈結彼此。
母項物件會利用組合,以值來保留子物件,而不是以指標。母項物件負責在子物件之後的起始設定及清除。如需相關資訊,請參閱起始設定子物件。
依預設,子物件會指定單一實例,且實作為母項物件結構的成員。 成員的名稱及類型與子物件的名稱及類型相同。換言之,子物件會以值內嵌於母項物件中,而不是作為物件的指標。
當指定子物件的對應關係為 1 以外的數字,子物件會依預設實作為陣列。例如,theFurnace 及 theRooms 會實作為 HomeHeatingSystem 結構的成員。 物件 theFurnace 實作為類型 Furnace 的單一實例,而 theRooms 實作為有三個 Rooms 的陣列:
typedef struct HomeHeatingSystem HomeHeatingSystem;
struct HomeHeatingSystem {
RiCReactive ric_reactive;
/*** User implicit entries ***/
struct Furnace theFurnace;
struct Room theRooms[3];
};
如果事先不知道子物件的對應關係,則會將它實作為鏈結的清單。例如,當您指定 theRooms 的對應關係為 *,而不是 3,它會實作為 RiCList 如下:
struct HomeHeatingSystem {
RiCReactive ric_reactive;
/*** User implicit entries ***/
struct Furnace theFurnace;
RiCList theRooms;
};
您也可以使用其他類型的動態儲存器(如集合)來實作子物件。您可使用 CG::Relation::Implementation 內容來指定如何實作具體關係。 例如,將 theRooms 的 Implementation 內容設定為 UnboundedUnordered,會將 theRooms 實作為 RiCCollection,而不是作為 RiCList 或陣列。
位於主旨 RiCContainers 下面的內容,會針對各種用於實作關係的儲存器,來決定產生函數的方式。請參閱「特性」視窗的適當內容標籤上,針對這些內容所提供的定義。