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];
}
} |
|