- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
- NAG2015年会主题演讲.doc
- 语文复习《句式变换》.doc
- 美国文学Allon Poe.doc
- VS2005的DataGridView 表头合并处理.docx
- 英语-北航试卷.doc
- 初中英语一般现在时专练.2.doc
- 2015NA专题归类版.doc
- 孟买紧固件公司.doc
- 外研社英语 必修二 Module 1验收检测.docx
- 雅思图表作文技巧一.doc
- 多点监督与特征融合校准:目标检测算法的创新与突破.docx
- 南宁市门诊HIV_AIDS患者抑郁状况剖析与影响因素探究.docx
- 医疗过失犯罪中客观归责理论的精准适用与深度解析.docx
- 南宁市低碳经济发展研究.docx
- 清解瘀毒胶囊对脑出血大鼠血红蛋白毒性作用及机制探究.docx
- 内蒙古赤峰市元宝山区农村小学教师培训:现状、问题与突破路径.docx
- 泉州开发区国有资产投资经营有限公司发展战略研究:基于区域经济与市场环境的分析.docx
- 能源利用效率与经济增长方式的深度耦合及中国战略抉择.docx
- 分布式信号波达方向 - 时延联合估计算法的深度剖析与创新探索.docx
- 新媒体环境下大学校园精神传播的创新变革.docx
文档评论(0)