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{ }@endint 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);}@endint 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
学习心得:
通过各自相应的样例,熟练掌握面向对象,为以后的学习打好基础