黑马程序员--对象作为参数连续传递

//
//  main.m
//  10-士兵开枪枪射击子弹

//演示对象作为方法的传递参数
//
//  Created by smartlei on 15/5/24.
//  Copyright (c) 2015年 smartlei. All rights reserved.
//
/*
 枪类:
 名称:Gun
 属性:型号(_size)
 方法:射出子弹
 
 人类:
 名称:Sodier
 属性:姓名
 方法:拿枪射击的动作
 
 子弹类:
 名称:Bullet
 属性:子弹型号 (_size) 弹夹内子弹数量(_bulletCount)
 方法:没有方法
 */
#import <Foundation/Foundation.h>
#pragma mark -
#pragma mark 子弹类声明
@interface Bullet:NSObject
{
@public
    NSString *_size;//子弹的型号
    int _bulletCount;//子弹数量
}
@end


#pragma mark -
#pragma mark 子弹类声明

@implementation Bullet



@end

#pragma mark -
#pragma mark 枪类声明
@interface Gun:NSObject
{
    @public
      NSString *_size;//枪的型号
}
-(void)shoot:(Bullet *)bullet;
@end

#pragma mark -
#pragma mark 枪类实现
@implementation Gun


-(void)shoot:(Bullet *)bullet//传入子弹对象
{
    if(bullet->_bulletCount>0)
    {
        bullet->_bulletCount--;
        NSLog(@"枪%@正在射击...,剩余子弹%d,",_size,bullet->_bulletCount);
    
    }
    else
       NSLog(@"枪%@已经没有子弹了,请换弹夹",_size);
}
@end

#pragma mark -
#pragma mark 士兵类实现
@interface Soldier:NSObject

-(void)fireByGun:(Gun *)gun andBullet:(Bullet *)bullet;
@end
#pragma mark -
#pragma mark 士兵类实现
@implementation Soldier
{
    @public
    NSString *_name;
    int life;
    int level;
}

//士兵开火传入对象参数        枪名字       弹夹
-(void)fireByGun:(Gun *)gun andBullet:(Bullet *)bullet
{
    [gun shoot:bullet];//枪
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //创建一个枪对象
        Soldier *s=[Soldier new];
        s->_name=@"smartlei";
        s->life=98;
        s->level=2;
        
        //创建一个对象
        Gun *g=[Gun new];
        g->_size=@"AK-47";
        
       
        //创建一个子弹
        Bullet *myBullet=[Bullet new];
        myBullet->_size=@"5mm子弹";
        myBullet->_bulletCount=3;
        
        [s fireByGun:g andBullet:myBullet];
        [s fireByGun:g andBullet:myBullet];
        [s fireByGun:g andBullet:myBullet];
        [s fireByGun:g andBullet:myBullet];
        
    }
    return 0;
}

输出:

2015-05-24 17:47:01.797 10-士兵开枪枪射击子弹[2692:141043] AK-47正在射击...,剩余子弹2,

2015-05-24 17:47:01.798 10-士兵开枪枪射击子弹[2692:141043] AK-47正在射击...,剩余子弹1,

2015-05-24 17:47:01.798 10-士兵开枪枪射击子弹[2692:141043] AK-47正在射击...,剩余子弹0,

2015-05-24 17:47:01.798 10-士兵开枪枪射击子弹[2692:141043] AK-47已经没有子弹了,请换弹夹



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值