oc简单程序实现--人喂狗和遛狗

/**

 *  设计一个

  1> 属性

  * 颜色

  * 速度(单位是m/s

  * 性别

  * 体重(单位是kg

  

  2> 行为

  * 吃:每吃一次,体重增加0.5kg,输出吃完后的体重

  * 吠(叫):输出所有的属性

  * 跑:每吃一次,体重减少0.5kg,输出速度和跑完后的体重

  * 比较颜色:跟别的狗比较颜色,如果一样,两个值做减法得零,返回NO(零值),不一样,做减法得到非零值,返回YES1

  * 比较速度:跟别的狗比较速度,返回速度差(自己的速度 - 其他狗的速度)

 */


#import <Foundation/Foundation.h>

#include <string.h>

typedef enum {gong,mu,yao} gender;


#pragma mark dog声明

@interface Dog : NSObject

{

    @public

    NSString* _color;

    float _speed;

    gender _gender;

    float _weight;

}

-(void)eat:(int)eatTimes ;

-(void)shout;

-(void)run:(int)runTimes;

-(int)cmpColor:  (Dog*)dog;

-(float)subSpeed:(Dog*)dog;


@end


#pragma mark -

#pragma mark dog实现

@implementation Dog


-(void)eat:(int)eatTimes

{

    _weight += 0.5 * eatTimes;

    NSLog(@"吃完%d次后体重为%.2fkg",eatTimes,_weight);

}


-(void)shout

{

    NSLog(@"这条狗的颜色为%@,速度为%.2f,性别为%d,体重为%.2f",_color,_speed,_gender,_weight);

}


-(void)run:(int)runTimes

{

    _weight -= 0.5 * runTimes;

    NSLog(@"这条狗的速度是%.2fm/s,跑了%d次后体重为%.2fkg",_speed,runTimes,_weight);

}

-(int)cmpColor:  (Dog*)dog

{

    if(_color == dog->_color)//字符串做比较的函数是?

    {

        return 1;

    }else

    {

        return 0;

    }

    

}

-(float)subSpeed:(Dog*)dog

{

    return _speed - dog->_speed;

    

}


@end


#pragma mark 人的声明

@interface Person : NSObject

{

@public

    NSString* _name;

    Dog* _dog;//重点

}

-(void)feedDog;//必须防在Dog声明之后,因为要调用它

-(void)walkWithDog;

@end

#pragma mark 人的实现

@implementation Person


-(void)feedDog

{

    NSLog(@"%@喂狗如下",_name);

    [_dog eat:8];//?

}


-(void)walkWithDog

{

    [_dog run:7];

}


@end


int main(int argc, const char * argv[])

{

    @autoreleasepool

    {

        Dog* dog1 = [Dog new];

        Dog* dog2 = [Dog new];

        dog1->_color = @"black";

        dog1->_gender = 1;

        dog1->_speed = 7.1f;

        dog1->_weight = 10.2f;

        dog2->_color = @"black";

        dog2->_gender = 0;

        dog2->_speed = 5.0f;

        dog2->_weight = 7.8f;

//        [dog1 eat:2];

        [dog1 shout];

//        [dog2 shout];

//        [dog1 run:5];

        //定义人的对象

        Person *p1 = [Person new];

        p1->_name = @"二郎神";

        p1->_dog = dog1;      //imp

        [p1 feedDog];

        [p1 walkWithDog];

//        int cmpColor = [dog1 cmpColor:dog2];//可以与方法名 一样?

//        

//        NSLog(@"两条狗颜色比较结果为:%d",cmpColor);

//        

//        //dog1 dog2 类型都符合,写谁无所谓,实参是谁,决定了传输谁的信息

//        float subSpeed1 = [dog1 subSpeed:dog2];

//        NSLog(@"1和狗2的速度之差为%.2f",subSpeed1);

        NSLog(@"Be Better!");

    }

    return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值