您的位置:首页 > 其它

OC-对象和方法的练习

2016-05-08 14:57 323 查看
练习题讲解

思考&实现1:

设计一个“狗”类

1)属性:颜色,速度,性别,体重

2)行为

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

吠:输出所有的属性

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

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

减法得非零值,返回YES(1)

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

#import<Foundation/Foundation.h>

//定义狗的颜色的枚举

typedef enum{kColorWhite,kColorYellow,kColorHua,kColorBlack}Color;

typedef enum{kSexGong,kSexMu,kSexYao}Sex;

#pragma mark 狗类的定义

@interface Dog:NSObject

{

   //狗的实例变量

   Color _color;  //狗的颜色  NSString *_color;

   float _weight;  //狗的体重

   Sex _sex;     //性别

   int _speed;   //速度

}

   //狗的行为

-(void)eat:(NSString *)foodName;  //体重+0.5

-(void)run; //体重-0.5

-(void)bark;  //打印所有的信息

//比较狗毛的颜色

-(void) isCompareColorWithOther:(Dog *)dog;

//比较速度

-(void)CompareSpeedWithOther:(Dog *)dog;

@end

#pragma mark 狗类的实现

@implementation DOg

-(void)eat:(NSString *)foodName {

    _weight += 0.5f;

    NSLog(@"狗正在吃%@,吃完后还打了个嗝!",foodName);

}

-(void)run {

     _weight -= 0.5f;

     NSLog(@"狗正在以时速%d的速度向前疯跑!",_speed);

}

-(void)bark {

     NSLog(@"性别:%d,颜色:%d,速度:%d,当前体重:%d",_sex,_color,_speed,_weight);

}

-(void) isCompareColorWithOther:(Dog *)dog {

    if(_color == dog->_color)

    return YES;

    else  return NO;

}

-(void)CompareSpeedWithOther:(Dog *)dog  {

      return _speed - dog->_speed;

}
@end

int main() {

    @autoreleasepool  {

    //创建两条狗

   Dog *d1 = [Dog new];

   d1->_speed = 80;

   d1->_weight = 20;

   d1->_sex = kSexYao;

   d1->_color = kColorHua;

   [d1 bark];

    [d1 eat:@"一块沾有粑粑的玉米"];

    [d1 eat:@"一块沾有粑粑的红薯"];

    [d1 bark];

    

   Dog *d2 = [Dog new];

   d2->_speed = 30;

   d2->_weight = 50;

   d2->_sex = kSexGong;

   d2->_color = kColorBlack;

   [d2 bark];

    [d2 eat:@"一块沾有粑粑的玉米"];

    [d2 eat:@"一块沾有粑粑的红薯"];

    [d2 bark];

    //1 相同    0不同

    Bool isSameColor = [d1 isCompareColorWithOther:d2];

    NSLog(@"isSameColor=%d",isSameColor);

    //比较狗的速度差

    int cha = [d1 CompareSpeedWithOther:d2];

    NSLog(@"速度差:%d",cha);

   }

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: