A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵安庆 中级黑马   /  2016-5-13 21:58  /  1394 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
设计一个”狗“类
1> 属性
* 颜色
* 速度(单位是m/s)
* 性别
* 体重(单位是kg)
2>行为
* 吃:每吃一次,体重增加0.5kg,输出吃完后的体重
* 吠(叫):输出所有的属性
* 跑:每吃一次,体重减少0.5kg,输出速度和跑完后的体重
* 比较颜色:跟别的狗比较颜色,如果一样,两个值做减法得零,返回NO(零值),不一样,
做减法得到非零值,返回YES(1)
* 比较速度:跟别的狗比较速度,返回速度差(自己的速度 - 其他狗的速度)
.结合前面的“狗”类,设计一个“人”类
1> 属性
* 姓名
* 狗(养了一条狗)
2> 行为
* 喂狗:每喂一次,狗就会执行“吃”这个行为
* 遛狗:每溜一次,狗就会执行“跑”这个行为

*/
#import <Foundation/Foundation.h>
#pragma mark 狗类的定义
typedef enum{KColorwhite,kColorblack,kColoryellow} color;
typedef enum{gong,mu,yao} sex;
#pragma mark -
@interface Dog:NSObject
{//狗的实例变量
@public
    color _color;
    //狗的体重
    double _weight;
    //狗的性别
    sex _sex;
    //狗的速度
    int _speed;
}
//狗的行为
//体重+0.5
-(void)eat:(NSString *)foodName;
//体重-0.5
-(void)run;
//打印所以信息
-(void)bark;
//比较颜色
-(BOOL)compareColor:(Dog *)dog;
//比较速度
-(int)compareSpeed:(Dog *)dog;
@end
#pragma mark -
#pragma mark 狗类的实现
@implementation Dog

//狗的行为
//体重+0.5
-(void)eat:(NSString *)foodName{
    _weight+=0.5;
   
    NSLog(@"够正在吃%@,体重为%.2f",foodName,_weight);
}
//体重-0.5
-(void)run{
    _weight -=0.5;
   
    NSLog(@"跑后体重为%.2f",_weight);
   
}
//打印所以信息
-(void)bark{
    NSLog(@"颜色:%d,性别:%d,速度:%d,体重:%.2f",_color,_sex,_speed,_weight);
}
//比较颜色
-(BOOL)compareColor:(Dog *)dog{
    //当前狗的 颜色   另一狗的颜色
    if (_color == dog->_color) {
        return YES;
    }else{
        return NO;
    }
}
//比较速度
-(int )compareSpeed:(Dog *)dog{
    //当前狗的速度-另一狗的 速度
    return  _speed-dog->_speed;
}

@end

#pragma mark -
#pragma mark 人定义
@interface Person:NSObject
{  @public
    NSString *_name;
    Dog *_dog;
}
//行为
//喂狗
-(void)feedDog:(NSString *)foodName;
//遛狗
-(void)liuDog;
@end


#pragma mark -
#pragma mark 人实现
@implementation Person
//喂狗
-(void)feedDog:(NSString *)foodName{
    //让狗吃东西
    [_dog eat:foodName];
   
}
//遛狗
-(void)liuDog{
    //让狗跑起来
    [_dog run];
   
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Dog *d1 = [Dog new];
      
        d1->_speed = 20;
        d1->_sex = mu;
        d1->_color = kColorblack;
        d1->_weight = 50;
        
        //创建人的 对象
        Person *p = [Person new];
        //给人一条狗
        p->_dog = d1;
        NSLog(@"%@",p->_dog);
        //人要喂狗
        [p feedDog:@"吃屎的狗"];
        
        NSLog(@"不忘初心,方得始终!");
    }
    return 0;
}










6 个回复

正序浏览
恭喜恭喜,哈哈 。我还有十来天呢
回复 使用道具 举报
今天刚看一天的oc还可以,就是类和对象有点分不清。
回复 使用道具 举报
OC跟C区别好大的说
回复 使用道具 举报
栗海云 发表于 2016-5-13 22:30
好厉害啊 直接看不懂啊

学到的时候,就可以看懂了。
回复 使用道具 举报
好厉害啊 直接看不懂啊
回复 使用道具 举报
666666666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马