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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mazhichao 中级黑马   /  2015-7-2 16:48  /  608 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、关联关系
                关联关系,HasA关系,当一个对象拥有另一个的时候,如当B对象为S对象的成员变量的时候,B对象雨A对象之间存在一种关联关系
        Person                        //A
        {
                Dog * dog;        //B
        }       
                关联关系是面向对象中最常用一种关系
                关联关系的耦合度要高于依赖关系
                一对一:一夫一妻制
                一对多关系:班级与学生,一个班级可以有多个学生
                多对多关系:学生与课程        ,一个学生可以学习多门课程,一门课程可以被多个学生选修
        例子:用“美女用iPad听音乐”实现关联关系
        Person.h文件
        #import<Foundation/Foundation.h>
        #import”IPad.h”
        //申明美女类
        @interface Person:NSObject
        {
                NSString *_name;
                //美女拥有一个iPad
                IPad *_iPad;
        }
        -(void) setName:(NSString *)name;                //set成员变量
        -(void) SetIPad:(IPad*)ipad;                        //set成员对象
        -(void)listenMusic;                                        //声明方法
        @end
        Person.m文件
        #import”Person”
        //实现类
        @implementation Person
        -(void)setName:(NSString *)name
        {
                _name = name;
        }
        -(void) setIPad:(IPad*)ipad
        {
                _iPad = iPad;        //这个地方在内存管理中是有问题的,暂时还没有学到,暂时先这样写
        }
        -(void) listenMusic
        {
                [_ipad playMusic];
        }
        @ends

        iPad.h文件
        #import <Foundation/Foundation.h>
        @interface IPad:NSObject
        {
                NSString *_name;
        }
        -(void) setName:(NSString*)name;
        -(void)playMusic;
        @end
        iPad.m文件
        #import”IPad.h”
        @implementation IPad
        -(void)setName:(NSString *)name
        {
                _name = name;
        }
        -(void)playMusic
        {
                NSLog(@“美女在用%@听歌”,_name);
        }
        @end
       
        测试用例
        #import<Foundation/Foundation.h>
        #import”Person.h”
        int main(int argc,const char *argv[])
        {
                @autoreleasepool{
                        IPad *ipad5 = [IPad new];//创建一个iPad的对象
                        [ipad5 setName:@“iPad5”];
                        //人拥有ipad类
                        Person * p = [Person new];
                        [p setName:@“美女” ];
                        [p setIPad:ipad5];                //将iPad5传递给人
                        [p listenMusic];
                }
        }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马