05_复合方案.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
05_复合方案

* * * 05/22/11 * * * * * * 05/22/11 * * 重载NSObject类的description方法 可以根据需要,在自定义类中重写description方法,来获取这个类的更详尽的信息。注意,description方法可以不在类的接口中进行声明。 在自定义的description方法中,需要返回一个字符串,即NSString *。 例如,在实现文件中重写description方法: 则 输出结果为: 继承 类之间的两种重要关系 复合 超类 子类1 子类2 整体 部件1 部件2 集体 个体1 个体2 继承还是复合 脑袋和五官类 汽车拥有一个引擎和四个轮胎 继承在对象间建立了“is a”(是一个)的关系。 三角形是一个形状。 复合建立的则是“has a”(有一个)的关系。 如果能说“X有一个Y”,就可以使用复合 动物类、蚯蚓类、青蛙类 复合 复合 继承 什么是复合 复合/组合:在一个新的对象里使用一些已有的对象,使之成为新对象的一部分,新对象通过调用已有对象的方法达到复用其已有功能的目的。 类中的基本数据及结构型成员不算复合 严格说,只有对象之间的组合才是复合 @interface Unicycle : NSObject Pedal *pedal;//踏板 Tire *tire; //轮子 @end // Unicycle—独轮车 最简单的复合例子 Unicycle Pedal Tire 在Objective-C中,复合是通过包含作为实例变量的对象指针实现的。 在复合中,对象可以引用其他对象,在引用时还可以利用其他对象提供的特性。 实例汽车组装版本一:单一零件类型 1 汽车模型 一辆汽车 有 1台发动机 和 4个轮胎 Car Engine Tire 1 4 * @interface Tire : NSObject @end @implementation Tire - NSString * description return @I am a tire. I last a while ; @end 汽车零件类 @interface Engine : NSObject @end @implementation Engine - NSString * description return @I am an engine. Vrooom! ; @end * @interface Car : NSObject Tire *tires[4]; @property nonatomic, retain Engine *engine; - Tire * tireAtIndex: int index; - void setTire: Tire * tire atIndex: int index; - void print; @end // Car 方法名是setTire:atIndex: 汽车类 用一个Engine对象和四个Tire对象组合出虚拟的Car实例,则该虚拟Car实例应该拥有一个指向Engine对象的指针和四个指向Tire对象的指针。 * - void setTire: Tire * tire atIndex: int index if index 0 || index 3 NSLog @bad index %d in setTire:atIndex:, index ; exit 1 ; tires[index] tire; // setTire:atIndex: - Tire * tireAtIndex: int index if index 0 || index 3 NSLog @bad index %d in tireAtIndex:”, index ; exit 1 ; return tires[index] ; // tireAtIndex: Tire *tire [Tire new]; [car setTire: tire atIndex: 2]; NSLog @tire number two is %@, [car tireAtIndex: 2] ; 防御式编程:在存取方法中使用通用代码来检查实例变量的数组索引,以保证它是有效数值,若是超出了有效范围,那么程序就会输出错误信息并且退出。 汽车类 - void print NSLog @%@, engine ; NSLog @%@, tires[0] ; NSLog @%@, tires[1] ; NSLog @%@, tires[2] ; NSLog @%@, tire

文档评论(0)

bbnnmm885599 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档