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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求解各位大神...!!!


//
//  main.m
//  人与狗
//
//  Created by Jun-Yip on 15/11/26.
//  Copyright © 2015年 Jun-Yip. All rights reserved.
//
/*
1.设计一个”狗“类
1> 属性
* 颜色
* 速度(单位是m/s)
* 性别
* 体重(单位是kg)

2> 行为
* 吃:每吃一次,体重增加0.5kg,输出吃完后的体重
* 吠(叫):输出所有的属性
* 跑:每跑一次,体重减少0.5kg,输出速度和跑完后的体重
* 比较颜色:跟别的狗比较颜色,如果一样,返回YES,不一样,返回NO
* 比较速度:跟别的狗比较速度,返回速度差(自己的速度 - 其他狗的速度)

2.结合前面的“狗”类,设计一个“人”类
1> 属性
* 姓名
* 狗(养了一条狗)

2> 行为
* 喂狗:每喂一次,狗就会执行“吃”这个行为
* 遛狗:每溜一次,狗就会执行“跑”这个行为
*/

#import <Foundation/Foundation.h>
//定义狗的颜色的枚举
typedef enum { kColorWhite,kColorBlack,kColorYellow} Color;
//定义狗的性别的枚举
typedef enum { kSexGong,kSexMu,kSexYao} Sex;

#pragma mark 狗类的定义
@interface Dog:NSObject

{   @public;
   
    Color _color;
   
    int _speed;
   
    Sex _sex;
   
    float _weight;

}

-(void)eat:(NSString *)foodName andnum:(int)eatNum;
-(void)bark;
-(void)run:(int)runNum;
-(BOOL)isSameColorWithOther:(Dog *)otherDog;
-(int)ChaSpeedWithOther:(Dog *)dog;

@end

#pragma mark 人类的定义
@interface Person : NSObject
{
    @public
   
    Person *_name;
   
    Dog *_dog;
   
}
-(void)weiDog;
-(void)liuDog:(int)runNum;
@end

#pragma mark 人的行为
@implementation Person

-(void)weiDog{
   
    [_dog eat];
   
}

-(void)liuDog:(int)runNum{
   
    [_dog run:runNum];
   
}

@end

#pragma mark
#pragma mark 狗的行为
@implementation Dog

-(void)eat:(NSString *)foodName andnum:(int)eatNum {
   
    //    int eatWeight = 0.5 *
    NSLog(@"狗正在吃着第%d次%@,它现在的体重是%.2fkg",eatNum,foodName,_weight-0.5*eatNum);
   
}

-(void)bark{
   
    NSLog(@"color = %d\tspeed = %dm/s\tsex = %d\tweight = %.2fkg",_color,_speed,_sex,_weight);
   
}

-(void)run:(int)runNum{
   
    NSLog(@"狗狗第%d次正在以%dm/s的速度疯狂的奔跑,它现在的体重是:%.2fkg",runNum,_speed,_weight-0.5*runNum);
   
}

-(BOOL)isSameColorWithOther:(Dog *)otherDog{
   
    if (_color == otherDog->_color) {
        
        return YES;
        
    } else {
        
        return NO;
        
    }
   
}

-(int)ChaSpeedWithOther:(Dog *)otherdog{
   
    return (unsigned int) (otherdog ->_speed -_speed);
   
}

@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        Dog *dog = [Dog new];
        
        dog -> _color = kColorWhite;
        
        dog -> _speed = 60;
        
        dog -> _sex = kSexYao;
        
        dog -> _weight = 50;
        
        [dog eat:@"粑粑" andnum:5];
        
        [dog run:3 ];
        
        Dog *dog2 = [Dog new];
        
        dog2 -> _color = kColorYellow;
        
        dog2 -> _speed = 80;
        
        [dog bark];
        
        NSLog(@"--------------------------------------------");
        
        BOOL isSameColor = [dog isSameColorWithOther:dog2];
        
        NSLog(@"两只狗的颜色相同,这个说法为:%d",isSameColor);
        
        int cha = [dog ChaSpeedWithOther:dog2];
        
        NSLog(@"两只狗的速度差为%d",cha);
        
        NSLog(@"--------------------------------------------");

        
        Person *per = [Person new];
        
        per ->_dog = dog;
        
        NSLog(@"%@",per->_dog);
        
        [per weiDog:@"骨头" andnum:1];
        
        [per liuDog:1];
        
   
    }
    return 0;
}

3 个回复

倒序浏览
没看懂- -
回复 使用道具 举报
错误在于人的行为调用狗的行为这里, 人得行为调用狗的行为的时候需要对调用的狗的行为进行传参,你没有在人得行为的地方传参,所以报错了
回复 使用道具 举报
Yip-Jun 来自手机 中级黑马 2015-11-28 22:07:46
板凳
gsclemon 发表于 2015-11-28 21:47
错误在于人的行为调用狗的行为这里, 人得行为调用狗的行为的时候需要对调用的狗的行为进行传参,你没有在人 ...

谢 我测试下!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马