OC-类的复合
来源:互联网 发布:mysql连接期限 编辑:程序博客网 时间:2024/05/02 01:47
/*类的复合 */
//复合:类拥有指向(引用)其他类的成员变量叫做复合
//OC中的设计模式:管理者,观察者,委托,通知,控制器等
//管理者
//举例:车,引擎,轮胎,车作为管理者
//举例:学校,校长,教师,学生
Teacher.h
#import <Foundation/Foundation.h>@interface Teacher : NSObject{ NSString *_name; NSInteger _age;}- (id)initWithName:(NSString *)name age:(NSInteger)age;@property (retain,nonatomic) NSString *name;@property (assign,nonatomic) NSInteger age;@end
Teacher.m
@implementation Teacher- (NSString *)description{ return [NSString stringWithFormat:@"<%@: %p>name = %@, age = %ld",[self class],self,_name,_age];}- (id)initWithName:(NSString *)name age:(NSInteger)age{ self = [super init]; if (self) { _name = [name retain]; _age = age; } return self;}- (void)dealloc{ [_name release]; [super dealloc];}@end
Student.h
#import <Foundation/Foundation.h>#import "Teacher.h"@interface Student : NSObject{ NSString *_name; NSInteger _age; Teacher *_teacher;}@property (retain,nonatomic) NSString *name;@property (assign,nonatomic) NSInteger age;@property (retain,nonatomic) Teacher *teacher;- (id)initWithName:(NSString *)name age:(NSInteger)age teacher:(Teacher *)teacher;- (NSInteger)ageOfDifference;@end
Student.m
#import "Student.h"@implementation Student- (id)initWithName:(NSString *)name age:(NSInteger)age teacher:(Teacher *)teacher{ self = [super init]; if (self) { _name = [name retain]; _age = age; _teacher = [teacher retain]; } return self;}- (NSInteger)ageOfDifference{ return _age -_teacher.age;}- (NSString *)description{ return [NSString stringWithFormat:@"<%@: %p>name = %@, age = %ld, techer = %@",[self class],self,_name,_age,_teacher];}- (void)dealloc{ [_name release]; [_teacher release]; [super dealloc];}@end
Manage.h
#import <Foundation/Foundation.h>#import "Student.h"#import "Teacher.h"//用一个管理者来管理逻辑@interface Manager : NSObject{ //声明被管理对象的成员变量,方便寻找需要处理的对象 Student *_student; Teacher *_teacher;}@property (retain,nonatomic) Student *student;@property (retain,nonatomic) Teacher *teacher;- (id)initWithStudent:(Student *)student techer:(Teacher *)teacher;- (NSInteger)ageDiffernce;@end
Manage.m
@implementation Manager- (id)initWithStudent:(Student *)student techer:(Teacher *)teacher{ self = [super init]; if (self) { _student = [student retain]; _teacher = [teacher retain]; } return self;}- (NSInteger)ageDiffernce{ return _student.age - _teacher.age;}- (void)dealloc{ [_student release]; [_teacher release]; [super dealloc];}@end
main.m
Teacher *teacher = [[Teacher alloc]initWithName:@"老师" age:20]; Student *student = [[Student alloc]initWithName:@"学生" age:10 teacher:teacher];
//初始化管理者(类的复合,用另一个类处理逻辑) Manager *manager = [[Manager alloc]initWithStudent:student techer:teacher]; NSLog(@"%ld",[manager ageDiffernce]); [student release]; [teacher release];
0 0
- OC-类的复合
- OC—类的复合
- oc-复合的使用
- 小小君的OC--类之间的复合调用
- OC 复合
- 深入理解OC的继承与复合
- OC中的复合
- oC语言 复合
- iOS-OC复合语句
- OC语言--复合与继承
- OC中继承和复合
- OC基础教程3-继承+复合
- OC学习 第四章 复合
- OC中的继承与复合
- 《OC基础教程》读书笔记4-复合
- Objective-C 类的复合
- OC之OC的类
- OC面向对象的三大特征(封装 继承 多态)习题2 复合
- java集合初探之数据
- Chrome浏览器使用Ajax访问本地资源出错
- 手机号码、邮箱验证的正则表达式
- 代理相关记事
- 程序中的栈和数据结构中的栈区别与联系
- OC-类的复合
- Python标准库:内置函数getattr(object, name[, default])
- 很早以前在百度空间写的博客,感兴趣的可以看下,就不搬过来了
- Jxl Excel导入
- The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Cha
- SQL游标使用及实例
- OC中的Block属性
- 红黑树
- maven+spring+springmvc+mybatis+ajax 框架下实现简单的聊天室