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

来源:互联网 发布:ip网络加速器 编辑:程序博客网 时间:2024/04/30 23:54

/**

 *  设计一个

  1> 属性

  * 颜色

  * 速度(单位是m/s

  * 性别

  * 体重(单位是kg

  

  2> 行为

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

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

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

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

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

 */


#import <Foundation/Foundation.h>

#include <string.h>

typedefenum {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);

    [_dogeat:8];//?

}


-(void)walkWithDog

{

    [_dogrun:7];

}


@end


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

{

    @autoreleasepool

    {

       Dog* dog1 = [Dognew];

       Dog* dog2 = [Dognew];

        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];

        [dog1shout];

//        [dog2 shout];

//        [dog1 run:5];

       //定义人的对象

       Person *p1 = [Personnew];

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

        p1->_dog = dog1;     //imp

        [p1feedDog];

        [p1walkWithDog];

//        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;

}


0 0
原创粉丝点击