《objective-c基礎教程》學習筆記(八)—— 拆分介面和實現

來源:互聯網
上載者:User

標籤:des   style   blog   http   io   ar   color   sp   for   

  在之前的項目中,我們編程都是直接寫在一個main.m檔案中。類的main()函數,@interface和@implementation部分都塞進一個檔案。這種結構對於小程式和簡便應用來說還可以。但是專案檔一多,規模一上去。這樣就很不好,既不美觀,代碼也不好管理。

  那麼,接下來這篇博文,我們就接著上一節的例子。將他定義和實現的代碼分開,每個對象一個類。在Objective-c中,定義的檔案寫在h檔案中,實現的代碼寫在m檔案中。於是,我們先建立一個Command Tools項目。

選擇專案檔要儲存的地方

然後在建立的項目中依次建立三個類對象Car,Engine,Tire。每個類建好,都會產生兩個檔案(.h:寫定義方法,.m:寫實現方法)。

然後在Engine.m中寫實現方法:

1 #import "Engine.h"2 3 @implementation Engine4 -(NSString *)description5 {6     return (@"I am an engine. Vrooom!");7 }8 @end

Tire.m中寫實現方法:

1 #import "Tire.h"2 3 @implementation Tire4 -(NSString *) description5 {6     return (@"I am a tire. I last a while");7 }8 @end

接下來修改Car.h檔案,寫Car類的定義方法:

 1 #import <Foundation/Foundation.h> 2 #import "Engine.h" 3 #import "Tire.h" 4  5 @interface Car : NSObject 6 { 7     Engine *engine; 8     Tire *tires[4]; //四個輪子,定義一個四個數的數組。 9 }10 -(Engine *) engine;11 -(void) setEngine:(Engine *) newEngine;12 -(Tire *) tireAtIndex:(int) index;13 -(void) setTire:(Tire *) tire atIndex:(int) index;14 -(void) drive;15 @end // Car

注意:要先在最上面引用“Engine.h”和“Tire.h”。否則,代碼就不能編譯通過。

然後是修改Car類的實現方法:

 1 #import "Car.h" 2  3 @implementation Car 4 -(void) setEngine:(Engine *) newEngine 5 { 6     engine = newEngine; 7 } 8  9 -(Engine *) engine10 {11     return (engine);12 }13 14 -(void) setTire:(Tire *) tire15         atIndex:(int) index16 {17     if(index<0 || index>3)18     {19         NSLog(@"bad index(%d) in setTire:atIndex",20               index);21         exit(1);22     }23     tires[index] = tire;24 }25 26 -(Tire *) tireAtIndex:(int) index27 {28     if(index<0 || index>3)29     {30         NSLog(@"bad index(%d)in tireAtIndex:",31               index);32         exit(1);33     }34     return (tires[index]);35 }36 37 -(void) drive{38     NSLog(@"%@",engine);39     NSLog(@"%@",tires[0]);40     NSLog(@"%@",tires[1]);41     NSLog(@"%@",tires[2]);42     NSLog(@"%@",tires[3]);43 }44 @end

最後,只要在main主函數的檔案中,引用三個類檔案的定義檔案就可以了,實現的代碼不用變:

 1 #import <Foundation/Foundation.h> 2 #import "Engine.h" 3 #import "Tire.h" 4 #import "Car.h" 5  6 int main(int argc, const char * argv[]) 7 { 8     Car *car = [Car new]; 9     Engine *engine = [Engine new];10     [car setEngine:engine];11     for(int i=0;i<4;i++)12     {13         Tire *tire = [Tire new];14         [car setTire:tire atIndex:i];15     }16     17     [car drive];18     return 0;19 }

專案檔的基本結構,以及啟動並執行結果

  由於本篇博文只是簡單的將代碼結構重新的整理了下,至於功能代碼則和上一篇中介紹的完全相同,這邊就不再細說了。如果朋友們感興趣或者有看不懂的,可以查看上一篇博文,或者給我留言。好了,時間不早了,洗洗早點睡吧。

 

《objective-c基礎教程》學習筆記(八)—— 拆分介面和實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.