Objective-C 封装.docxVIP

  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文档。上传文档
查看更多
Objective-C 封装

Objective-C 如何实现封装《iPhone 手机应用程序设计入门》封装(Encapsulation)主要的用意是依照题意,设计出数据与方法,并将其组合成一所谓的 自定义类别类型,其好处是数据已不是次等公民,可以和方法平起平坐,而且数据也受到保 护,因为只有类别下定义的方法才可以直接使用。 一般的程序语言,如 C 程序语言,大都是以函数(function)为主导,数据是次等的,但是 如果数据是错误,不管函数编写多么的好,还是会产生所谓的无用输入,无用输出(Garbage In Garbage Out,GIGO)。而且由于每个人的编写风格不同,有人喜欢使用全局变量,有人定 义变量时,所使用的名称都是短小的,而且也没有加注释的习惯,造成在维护上需要付出相 当多的资源。 有鉴于此,面向对象程序设计定义一个规则,将数据(data)和方法(method)都视为一等 公民,也就是重要性相同,并利用类别(class),将数据和方法加以封装(encapsulation), 这有如感冒药,里面的药受到胶囊的保护,不易受外界的破坏。此处所说的方法,相当于一 般程序语言的函数。有些作者将数据与方法分别以数据成员(data member)和成员函数 (member function)称之。Objective-C 将数据和方法封装成类别表示,至于类别要有哪些数据和方法,完全视题目而定。 在面向对象的术语中,称类别为萃取式数据类型(Abstract Data Type,ADT),我不想将它译 为抽象数据类型,因为本来就很抽象了,越翻越抽象。其实以另一种名称来说可能较为清楚 易懂,那就是用户自定义的数据类型(user-defined data type),其根据题意定出它需要哪些 数据及其方法,所以可以说类别相当于一般程序语言所谈的数据类型。 而对象(object)是什么呢?简单的说就是属于某一类别的变量。若我们已定义水果的类别, 则可说香蕉、梨子、李子、苹果等等皆是属于水果的对象。或是已定义汽车的类别,则保时 捷、宝马、法拉利可说是汽车的对象。您可以将对象看成一般程序式程序语言的变量,而类 别就是一般程序式程序语言的数据类型。对象也可以视为类别的实体(instance)。 封装主要的功能是将数据隐藏起来,只有此类别所属的方法,亦即实体方法(instance method),才能直接存取数据,所以也可以说是在保护数据,不会被外界任意的存取,所以 就大大的降低数据的误用,且很容易的知道错误在哪里,从而省下很多的维护成本。 面向对象程序设计中的方法可分为两种,一为上述的实体方法,二为类别方法(class method)。 主要的差异在于实体方法需要有一对象去引发,而类别方法可以由类别名称触发之。一、如何将数据与方法封装起来我们以范例来加以说明,从输入两个整数,计算其总和,之后将其输出。为了比较起见,首 先以一般的程序设计方式,亦即不是以封装的方式来编写,如范例程序 class99 所示: 范例程序 class99//class99 #import Foundation/Foundation.hint main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int num1, num2, total=0; //input num1 = 100; num2 = 200;}//process total = num1 + num2;//output NSLog(@num1=%d, num2=%d, num1, num2); NSLog(@total=%d, total);[pool drain]; return 0;输出结果num1=100, num2=200 total = 300若将上一范例程序以封装的方式来编写的话,则程序将如下所示:范例程序 class100 //class100#import Foundation/Foundation.h@interface myClass : NSObject {int num1, num2;}-(void) setData; -(int) sum; -(void) output;@end@implementation myClass-(void) setData {num1=100; num2=200;}-(int) sum {return (num1+num2);}-(void) output {}NSLog(@num1=%d, num2=%d, num1, num2);@endint main (int argc, const char * argv[]) { NSA

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档