1.匿名对象:就是没有名字对象
1、匿名对象仅用一次
使用场景:
1、当我们只要调用一个对象的某个方法一次的时候可以使用匿名对象
A对象作为B对象的局部变量或是方法形参的,B依赖与A,这时候我们称A与B之间存在一种依赖关系
面向对象设计中:
耦合度:当修改一个对象的时候,对另外一个对象的影响程度
低耦合: 当修改一个对象的对其他对象影响比较小
高内聚:一个对象仅仅做自己相关的事情
面向对象设计原则:单一职责原则
3.关联关系(多文件)
HasA关系:当一个对象拥有另外一个对象的时候,
当A对象为B对象的成员变量的时候,
A对象与B对象之间存在一种关联关系
关联关系是面向对象中最常用一种关系
---------------------------------------------------以下了解
关联关系的耦合度要高于依赖关系
一对一 :单方依赖,双边依赖
一对多关系 : 班级与学生,一个班级可以有多个学生
多对多关系 : 学生与课程,一个学生可以学习多门课程,一个门课程被多个学生学习
1、匿名对象仅用一次
使用场景:
1、当我们只要调用一个对象的某个方法一次的时候可以使用匿名对象
2、匿名对象可以作为函数的实际参数
#import <Foundation/Foundation.h>
#import "CZPerson.h"
#import "CZBook.h"
@interface CZBook : NSObject
@end
@implementation CZBook
@end
@interface CZPerson : NSObject
{
int _age;//年龄
NSString *_name;//名字
}
//写方法 setter
- (void) setAge:(int) age;
//读方法 getter
- (int) age;
- (void) setName:(NSString *) name;
- (NSString *) name;
- (void) readBook:(CZBook *) book;
@end
@implementation CZPerson
//写方法 setter
- (void) setAge:(int) age
{
_age = age;
}
//读方法 getter
- (int) age
{
return _age;
}
- (void) setName:(NSString *) name
{
_name = name;
}
- (NSString *) name
{
return _name;
}
- (void) readBook:(CZBook *) book
{
}
@end
int main(int argc, const char * argv[]) {
[[CZPerson new] setAge:10];
/*
1、首先创建一个匿名人对象
2、调用刚创建出来的人对象的 readBook方法
3、传入一个匿名的CZBook对象
[CZPerson new] 创建一个匿名的人对象
[CZBook new] 创建一个匿名的Book对象
*/
[[CZPerson new] readBook:[CZBook new]];
NSLog(@"%d",[[CZPerson new] age]);
return 0;
}
2.依赖关系:
A对象作为B对象的局部变量或是方法形参的,B依赖与A,这时候我们称A与B之间存在一种依赖关系
面向对象设计中:
耦合度:当修改一个对象的时候,对另外一个对象的影响程度
低耦合: 当修改一个对象的对其他对象影响比较小
高内聚:一个对象仅仅做自己相关的事情
面向对象设计原则:单一职责原则
#import <Foundation/Foundation.h>
@interface CZBeauty : NSObject
{
NSString * _name;//姓名
}
- (void) setName:(NSString *) name;
- (NSString *) name;
/**
* 给土豪打电话
*/
- (void) callTuHaoWithPhone:(CZPhone *) phone;
- (void) sendMessageToDiaoSi;
@end
@implementation CZBeauty
- (void) setName:(NSString *) name
{
_name = name;
}
- (NSString *) name
{
return _name;
}
/**
* 给土豪打电话、
对象作为形式参数
*/
- (void) callTuHaoWithPhone:(CZPhone *) phone
{
NSLog(@"给土豪打电话了");
[phone call:@"土豪的电话号码"];
}
- (void) sendMessageToDiaoSi
{
NSLog(@"给屌丝发送短信了");
// 对象作为另外一个类的局部变量
CZPhone *phone = [CZPhone new];
[phone sendMessage:@"呵呵,要请我看电影吗?"];
}
@end
@interface CZPhone : NSObject
/**
* 发短信
*
* @param message 信息内容
*/
- (void) sendMessage:(NSString *) message;
/**
* 打电话
*/
- (void) call:(NSString *) phoneNum;
@end
@implementation CZPhone
/**
* 发短信
*
* @param message 信息内容
*/
- (void) sendMessage:(NSString *) message
{
NSLog(@"发送一条 %@ 短信",message);
}
/**
* 打电话
*/
- (void) call:(NSString *) phoneNum
{
NSLog(@"给电话号码为 %@ 的人打电话",phoneNum);
}
@end
int main(int argc, const char * argv[]) {
// 创建一个美女
CZBeauty *beauty = [CZBeauty new];
// 创建一个电话
CZPhone *phone = [CZPhone new];
[beauty setName:@"fbb"];
[beauty callTuHaoWithPhone:phone];
[beauty sendMessageToDiaoSi];
return 0;
}
3.关联关系(多文件)
HasA关系:当一个对象拥有另外一个对象的时候,
当A对象为B对象的成员变量的时候,
A对象与B对象之间存在一种关联关系
关联关系是面向对象中最常用一种关系
---------------------------------------------------以下了解
关联关系的耦合度要高于依赖关系
一对一 :单方依赖,双边依赖
一对多关系 : 班级与学生,一个班级可以有多个学生
多对多关系 : 学生与课程,一个学生可以学习多门课程,一个门课程被多个学生学习
#import <Foundation/Foundation.h>
#import "CZBeauty.h"
#import "CZNewBeauty.h"
int main(int argc, const char * argv[]) {
CZBeauty *beauty = [CZBeauty new];
CZIPad *ipad = [CZIPad new];
CZNewBeauty *newBeauty = [CZNewBeauty new];
[newBeauty setIPad:ipad];
[newBeauty lookAtMovie];
[newBeauty listenToMusic];
[newBeauty playGame];
[newBeauty takeSelfPhoto];
return 0;
}
#import <Foundation/Foundation.h>
#import "CZIPad.h"
/*
当我们在一类中总是使用某个对象,作为形式参数,那么我们就把这个参数提取成员变量
*/
@interface CZBeauty : NSObject
//使用iPad看电影
- (void) lookAtMovieWithIPad:(CZIPad *) ipad;
//使用IPad听音乐
- (void) listenToMusicWithIPad:(CZIPad *) ipad;
/**
* 美女玩游戏
*/
- (void) playGameWithIPad:(CZIPad *) ipad;
/**
* 美女自拍
*/
- (void) takeSelfPhotoWithIPad:(CZIPad *) ipad;
@end
#import "CZBeauty.h"
@implementation CZBeauty
//使用iPad看电影
- (void) lookAtMovieWithIPad:(CZIPad *) ipad
{
NSLog(@"美女要看电影了!");
[ipad playMovie];
}
//使用IPad听音乐
- (void) listenToMusicWithIPad:(CZIPad *) ipad
{
NSLog(@"美女要听音乐了!");
[ipad playMusic];
}
/**
* 美女玩游戏
*/
- (void) playGameWithIPad:(CZIPad *) ipad
{
NSLog(@"美女要玩游戏了!");
[ipad playGame];
}
/**
* 美女自拍
*/
- (void) takeSelfPhotoWithIPad:(CZIPad *) ipad
{
NSLog(@"美女要自拍了!");
[ipad takePhoto];
}
@end
#import <Foundation/Foundation.h>
@interface CZIPad : NSObject
//播放电影
- (void) playMovie;
//播放音乐
- (void) playMusic;
//玩游戏
- (void) playGame;
//拍照
- (void) takePhoto;
@end
#import "CZIPad.h"
@implementation CZIPad
//播放电影
- (void) playMovie
{
NSLog(@"iPad播放电影");
}
//播放音乐
- (void) playMusic
{
NSLog(@"iPad播放音乐");
}
//玩游戏
- (void) playGame
{
NSLog(@"iPad玩游戏");
}
//拍照
- (void) takePhoto
{
NSLog(@"iPad自拍");
}
@end
#import <Foundation/Foundation.h>
#import "CZIPad.h"
@interface CZNewBeauty : NSObject
{
// 让美女拥有一个IPad
CZIPad * _iPad;
}
//写方法,买一个IPad
- (void) setIPad:(CZIPad *) iPad;
//看电影
- (void) lookAtMovie;
//听音乐
- (void) listenToMusic;
/**
* 美女玩游戏
*/
- (void) playGame;
/**
* 美女自拍
*/
- (void) takeSelfPhoto;
@end
#import "CZNewBeauty.h"
@implementation CZNewBeauty
//写方法,买一个IPad
- (void) setIPad:(CZIPad *) iPad
{
_iPad = iPad;
}
//看电影
- (void) lookAtMovie
{
NSLog(@"美女看电影");
[_iPad playMovie];
}
//听音乐
- (void) listenToMusic
{
NSLog(@"美女听音乐");
[_iPad playMusic];
}
/**
* 美女玩游戏
*/
- (void) playGame
{
NSLog(@"美女玩游戏");
[_iPad playGame];
}
/**
* 美女自拍
*/
- (void) takeSelfPhoto
{
NSLog(@"美女自拍");
[_iPad takePhoto];
}
@end
学习心得:
通过各自对应的例子,熟练掌握面向对象,为以后的学习打好基础