/**
* 设计一个”狗“类
1> 属性
* 颜色
* 速度(单位是m/s)
* 性别
* 体重(单位是kg)
2> 行为
* 吃:每吃一次,体重增加0.5kg,输出吃完后的体重
* 吠(叫):输出所有的属性
* 跑:每吃一次,体重减少0.5kg,输出速度和跑完后的体重
* 比较颜色:跟别的狗比较颜色,如果一样,两个值做减法得零,返回NO(零值),不一样,做减法得到非零值,返回YES(1)
* 比较速度:跟别的狗比较速度,返回速度差(自己的速度 - 其他狗的速度)
*/
#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;
}