黑马程序员技术交流社区

标题: 帮我分析一下这个程序 [打印本页]

作者: feng2706    时间: 2016-3-6 22:57
标题: 帮我分析一下这个程序
/*
子弹类
名称:Bullet
属性:子弹个数,型号(_model)

枪类:
名称:Gun
属性:型号(_size),子弹个数(_bulletCount)
行为:射击

士兵类
名称:Soldier
属性:姓名(_name)    life    level(等级)
行为:开枪

*/

#import <Foundation/Foundation.h>
#pragma mark - 子弹类
//声明了一个子弹类Bullet
@interface Bullet : NSObject
{ @public
//属性:子弹个数,型号(_model)
    int _bullerNum;
    NSString *_model;
}

@end
@implementation Bullet

@end

#pragma mark - 枪类
//枪类:
//名称:Gun
//声明了一个类
@interface Gun : NSObject
{ @public
    NSString *_size;
}
-(void)shoot:(Bullet *)bullet;
@end
//实现这个类
@implementation Gun

-(void)shoot:(Bullet *)bullet{
    if (bullet->_bullerNum > 0) {
        bullet->_bullerNum--;
        NSLog(@"子弹还剩下%d",bullet->_bullerNum);
    }else{
        NSLog(@"没有子弹了!!!!");
    }

}

@end
//行为:射击

#pragma mark - 士兵类
//声明了一个类
@interface Soldier : NSObject
{
    NSString *_name;
    int _life;
    int _level;

//    行为:开枪
}
-(void)kaiGun:(Gun *)gun andBullet:(Bullet *)bullet;
@end
//实现了一个类
@implementation Soldier

-(void)kaiGun:(Gun *)gun andBullet:(Bullet *)bullet{
    [gun shoot:bullet];

}

@end
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Bullet *p = [Bullet new];
        p->_bullerNum = 3;
        Gun *p1 = [Gun new];
        Soldier *p2 = [Soldier new];
        [p2 kaiGun:p1 andBullet:p];
        [p2 kaiGun:p1 andBullet:p];
        [p2 kaiGun:p1 andBullet:p];
        [p2 kaiGun:p1 andBullet:p];
        [p2 kaiGun:p1 andBullet:p];
        
    }
    return 0;
}
怎么是连续调用哦    弄蒙了
作者: 15931110616    时间: 2016-3-6 23:25
子弹是一个对象,作为参数,连续传递了啊. 士兵开枪,士兵没有调用子弹 是枪调用的子弹  就是连续传递啊  .
作者: hanqi    时间: 2016-3-7 14:15
路过,留痕。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2