第五章複合


一、什麼是複合composition

編程中的複合就好像音樂中多個樂器組合在一起使用

 

Objective-C中,複合是通過包含作爲實例變量的對象指針實現的

 

舉例代碼:Unicycle類中擁有一個指向Pedal對象的指針和一個指向Tire對象的指針

@interface Unicycle : NSObject

{

         Pedal *pedal;

         Tire *tire;

}

@end // Unicycle

我們可以說PedalTire通過複合的方式組成了Unicycle

 

嚴格的講,對象間的組合才叫複合,intfloatenumstruct等基本類型都被認爲是對象的一部分

 

二、存取方法accessor method

存取方法是用來讀取或改變對象特定屬性的方法,即專門爲類中成員變量賦值的方法

 

在對其他對象的屬性進行操作時,應始終使用對象所提供的存取方法,永遠不直接改變其他對象屬性的數值

 

舉例代碼:

@interface Car : NSObject

{

         Engine *engine;

         Tire *tires[4];

}

-(Engine *) engine;                                                 Engine對象的getter

-(void) setEngine:(Engine *) newEngine;          Engine對象的setter

-(Tire *) tireAtIndex :(int) index;                         Tire對象的getter

-(void)      setTire : (Tire *)tire                             Tire對象的setter,需要序號參數

                   atIndex :(int)index;

-(void) print;

@end//Car

 

setter方法通常根據更改的屬性前加上前綴set來命名

getter方法則僅僅根據其返回的屬性的名稱命名

           因爲getCocoa中有特殊的含義,使用get意味着這個方法會通過你當做參數傳入  的指針來返回數值,這意味着使用get開頭的方法傳入的通常都是指針

 

三、複合還是繼承

何時用繼承,何時用複合呢?

繼承在對象間建立了is a關係

複合建立的has a關係

發佈了0 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章