OC基礎--對象做參數在方法間傳遞,oc--

來源:互聯網
上載者:User

OC基礎--對象做參數在方法間傳遞,oc--

劇情描述:

    美國大兵抗把漢陽造 拿著5個彈夾(每個彈夾5發子彈) 帶著弟兄們幹架 子彈打完了就求救 

類:

    士兵:

        屬性: 姓名(_name) 身高(_height) 體重(_weight)

        行為: 開槍(fire) 求救(callForHelp) 

    槍:

        屬性: 彈夾(_clip) 彈夾數量(_clipNum) 品牌(_model)

        行為: 換彈夾(changeClip) 發射子彈(shot) 

    彈夾:

        屬性: 子彈數量(_bulletCount)

        行為: 裝子彈(addBullet)

方法說明:

    士兵開槍方法(fire) 

        參數: 槍 和 彈夾

        傳回值: 剩餘彈夾數量

        邏輯: 將彈夾作為參數  調用槍的發射子彈方法(shot) 獲得剩餘彈夾數   

            如果剩餘彈夾數 == 0 則調用自己的求救方法(callForHelp) 

    槍發射子彈方法(shot)

        參數: 彈夾

        傳回值: 彈夾數

        邏輯: 如果彈夾裡的子彈==0 則調用自己的換彈夾的方法獲得新彈夾  否則彈夾子彈減1 

    槍換彈夾方法(changeClip)

        參數: 彈夾

        傳回值: 彈夾數量

        邏輯: 將彈夾數量-1(因為已經用了一個了) 如果還有彈夾 則調用彈夾的裝子彈方法 否則提示子彈打光了 

    彈夾裝子彈方法(addBullet)

        參數: 無

        傳回值: 彈夾對象

        邏輯: 如果彈夾內子彈數量==0 則裝5發子彈  然後將彈夾返回 

對象去哪了:

    士兵開槍接收了槍和彈夾對象  開槍方法中將彈夾對象傳入槍的發射子彈方法  發射子彈方法中又將彈夾對象傳入換彈夾方法  換彈夾方法中調用這個彈夾對象的加子彈方法  獲得一個彈夾對象的傳回值  返回的這個彈夾對象 嘿嘿  不好意思 沒用到

 

彈夾類聲明檔案Clip.h:

/* 彈夾 事物名稱: 彈夾(Clip) 屬性:子彈數量(_bulletCount) 行為:裝子彈(addBullet) */#import <Foundation/Foundation.h>@interface Clip : NSObject{    @public    // 子彈數量    int _bulletCount;}//給彈夾裝子彈- (Clip *) addBullet;@end 

彈夾類實現檔案Clip.m:

#import "Clip.h" @implementation Clip // 給彈夾裝子彈  假設裝一次 彈夾就少一個(代表換彈夾)  返回彈夾對象其實沒被用到- (Clip *)addBullet{    if(_bulletCount == 0){        _bulletCount = 5;        NSLog(@"clip  新兵蛋子  子彈裝好了  你去沖吧  子彈數量:%i", self->_bulletCount);    }    return self;}@end

槍類聲明檔案Gun.h:

/* 槍 事物名稱:槍(Gun) 屬性:大彈夾(_bigClip) , 彈夾數量(_clipNum),  型號(model) 行為:換彈夾(changeClip) 射擊(shot) */#import <Foundation/Foundation.h>#import "Clip.h" @interface Gun : NSObject{    @public    // 彈夾對象    Clip* _bigClip;    // 彈夾數量    int _clipNum;    // 槍的牌子    NSString* _model;}// 換彈夾方法- (int) changeClip:(Clip *) newClip;// 發射子彈方法- (int) shot:(Clip *) clip;@end

槍類實現檔案Gun.m:

#import "Gun.h" @implementation Gun// 換彈夾方法 接收彈夾對象  返回彈夾數量- (int)changeClip:(Clip *)clip{    // 需要換彈夾說明已經用了一個了  彈夾數量 -1    _clipNum -= 1;        // 如果還有彈夾 則調用彈夾加子彈的方法    if (_clipNum > 0) {        _bigClip = [clip addBullet];        NSLog(@"gun  裝彈完畢 子彈數量:%i 繼續幹", clip->_bulletCount);    }    else{        NSLog(@"gun 子彈打光了");    }    return _clipNum;} // 槍發射子彈方法  接收彈夾對象  返回彈夾數量- (int)shot:(Clip *)clip{    // 變數儲存彈夾數量  (可以不用這個變數  直接使用屬性成員)    int clipNum = _clipNum;       // 如果彈夾內沒子彈了  則調用換彈夾方法    if (clip->_bulletCount == 0) {        NSLog(@"gun  友情提示: 大哥 你沒子彈了  俺去給你裝彈  你先拼會刺刀吧  裝好了再通知你  好嗎  就這麼愉快的決定吧");        clipNum = [self changeClip:clip];    }    // 否則 子彈 -1    else{        NSLog(@"gun  子彈 減 1");        clip->_bulletCount -= 1;    }    return clipNum;}@end

士兵類聲明檔案Soldier.h:

/* 士兵 事物名稱: 士兵(Soldier) 屬性:姓名(name), 身高(height), 體重(weight) 行為:打槍(fire), 打電話(callPhone) */#import <Foundation/Foundation.h>#import "Gun.h" @interface Soldier : NSObject{    @public    NSString* _name;    double _height;    double _weight;}- (int) fireWithGun:(Gun*) gun andClip:(Clip *) clip;- (void) callForHelp;@end

士兵類實現檔案Soldier.m:

#import "Soldier.h" @implementation Soldier // 士兵開槍  接收槍和彈夾兩個對象  返回彈夾剩餘數- (int)fireWithGun:(Gun *)gun andClip:(Clip *)clip{    NSLog(@"soldier  兒子們 孫子們 王八羔子們  都跟我一起上  沖啊  殺雞雞~~~");       // 將彈夾對象傳入 調用槍射擊的方法    int remainClipNum = [gun shot: clip];        // 如果沒彈夾了  調用求救方法    if(0 == remainClipNum){        [self callForHelp];    }    return remainClipNum;} - (void)callForHelp{    NSLog(@"soldier  拐洞拐  我沒子彈了 還中彈了  中了好多呢 你是不知道  嚇死寶寶了  快來9我吧 等   你哦 麼麼噠");}@end

Main.m:

#import <Foundation/Foundation.h>#import "Soldier.h" int main(int argc, const char * argv[]) {    // 士兵對象    Soldier * soldier = [Soldier new];    soldier->_height = 2.12;    soldier->_weight = 80;    soldier->_name = @"美國大兵";    
// 彈夾對象 Clip * clip = [Clip new]; clip->_bulletCount = 5; // 槍對象 Gun * gun = [Gun new]; gun->_bigClip = clip; gun->_model = @"漢陽造"; gun->_clipNum = 5; // 士兵開始幹架 // 儲存剩餘彈夾數量 如果數量==0 則跳出迴圈 int remainClip = 0; while (1) { // 調用士兵開槍方法 獲得剩餘彈夾數 remainClip = [soldier fireWithGun:gun andClip:clip]; if (!remainClip) { break;
} } return 0;}

輸出結果:

/*輸出結果:    應該是迴圈五次後提示子彈打光了 然後求救  每次迴圈中發射五顆子彈      2015-08-27 23:18:37.182 對象做參數傳遞[892:34503] soldier  兒子們 孫子們 王八羔子們  都跟我一起上  沖啊  殺雞雞~~~  2015-08-27 23:18:37.184 對象做參數傳遞[892:34503] gun  子彈 減 1  2015-08-27 23:18:37.184 對象做參數傳遞[892:34503] soldier  兒子們 孫子們 王八羔子們  都跟我一起上  沖啊  殺雞雞~~~  2015-08-27 23:18:37.184 對象做參數傳遞[892:34503] gun  子彈 減 1  2015-08-27 23:18:37.184 對象做參數傳遞[892:34503] soldier  兒子們 孫子們 王八羔子們  都跟我一起上  沖啊  殺雞雞~~~  2015-08-27 23:18:37.185 對象做參數傳遞[892:34503] gun  子彈 減 1  2015-08-27 23:18:37.185 對象做參數傳遞[892:34503] soldier  兒子們 孫子們 王八羔子們  都跟我一起上  沖啊  殺雞雞~~~  2015-08-27 23:18:37.185 對象做參數傳遞[892:34503] gun  子彈 減 1  2015-08-27 23:18:37.185 對象做參數傳遞[892:34503] soldier  兒子們 孫子們 王八羔子們  都跟我一起上  沖啊  殺雞雞~~~  2015-08-27 23:18:37.185 對象做參數傳遞[892:34503] gun  子彈 減 1  2015-08-27 23:18:37.186 對象做參數傳遞[892:34503] soldier  兒子們 孫子們 王八羔子們  都跟我一起上  沖啊  殺雞雞~~~  2015-08-27 23:18:37.186 對象做參數傳遞[892:34503] gun  友情提示: 大哥 你沒子彈了  俺去給你裝彈  你先拼會刺刀吧  裝好了再通知你  好嗎  就這麼愉快的決定吧                           ……………                …………….                …………….                …………….  2015-08-27 23:18:37.217 對象做參數傳遞[892:34503] gun 子彈打光了  2015-08-27 23:18:37.217 對象做參數傳遞[892:34503] soldier  拐洞拐  我沒子彈了 還中彈了  中了好多呢 你是不知道  嚇死寶寶了  快來9我吧 等你哦 麼麼噠*/

 

 

 

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.