黑马程序员技术交流社区

标题: 关联关系举例 [打印本页]

作者: 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