黑马程序员技术交流社区
标题:
关联关系举例
[打印本页]
作者:
neverbloom7
时间:
2015-8-28 23:45
标题:
关联关系举例
#import <Foundation/Foundation.h>
//定义狗的颜色的枚举
typedef enum {kColorWhite,kColorYellow,kColorHua,kColorBlack} Color;
typedef enum {kSexGong,kSexMu,kSexYao} Sex;
#pragma mark 狗类的定义
@interface Dog:NSObject
{
@public
//狗的实例变量
Color _color;
//NSString *_color;
//char *
//strcmp(字符串)
//狗的体重
float _weight;
//狗的性别
Sex _sex;
//狗的速度
int _speed;
}
//狗的行为
-(void)eat:(NSString *)foodName;//体重+0.5
-(void)run; //体重-0.5
-(void)bark; //打印所有的信息
//比较狗毛的颜色
-(BOOL)isCompareColorWithOther:(Dog *)dog;
//比较速度
-(int)CompareSpeedWithOther:(Dog *)dog;
@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
//让狗吃东西
//[null eat:foodName];
[_dog eat:foodName];
}
//遛狗
-(void)liuDog{
//让狗跑起来
[_dog run];
}
@end
#pragma mark 狗类的实现
@implementation Dog
-(void)eat:(NSString *)foodName{
_weight += 0.5f;
NSLog(@"狗正在吃%@,吃完后还打了个隔!",foodName);
}//体重+0.5
-(void)run{
_weight -= 0.5f;
NSLog(@"狗正在以时速 %d 的速度向前疯跑!",_speed);
} //体重-0.5
-(void)bark{
NSLog(@"性别:%d,颜色:%d,速度:%d,当前体重:%.2f",_sex,_color,_speed,_weight);
} //打印所有的信息
//比较狗毛的颜色
-(BOOL)isCompareColorWithOther:(Dog *)dog{
//当前狗的颜色 另外一条狗的颜色
if(_color == dog->_color){
return YES; //颜色相同
}else{
return NO;
}
}
//比较速度
-(int)CompareSpeedWithOther:(Dog *)dog{
return _speed - dog->_speed;
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建两条狗
Dog *d1 = [Dog new];
d1->_speed = 80;
d1->_weight=20;
d1->_sex = kSexYao;
d1->_color = kColorHua;
//创建一个人的对象
Person *p = [Person new];
// p->_name
//给p一个dog
p->_dog = d1;
NSLog(@"%@",p->_dog);
//人要喂狗
[p feedDog:@"骨头"]; //狗会吃东西吗?为什么?
}
return 0;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2