ObjectiveC20程序设计类.pptx
《ObjectiveC20程序设计类.pptx》由会员分享,可在线阅读,更多相关《ObjectiveC20程序设计类.pptx(44页珍藏版)》请在咨信网上搜索。
1、第第7章章 类类武汉大学国际软件学院Objective-C 2.0程序设计第第7章章 类类使用点运算符访问属性使用点运算符访问属性7.3具有多个参数的方法具有多个参数的方法7.4合成存取器方法合成存取器方法7.2分离接口和实现文件分离接口和实现文件7.1局部变量局部变量7.5self关键字关键字7.6在方法中分配和返回对象在方法中分配和返回对象7.7武汉大学国际软件学院Objective-C 2.0程序设计3武汉大学国际软件学院Objective-C 2.0程序设计7.1 分离接口和实现文件分离接口和实现文件 现在,是时候将类的声明和定义放在单独的文件中了。如果正使用Xcode,可新建一个称为
2、FractionTest的项目。在文件FractionTest.m中键入以下程序。代码清单7-1 主测试程序:FractionTest.m-#import“Fraction.h”int main(int argc,char*argv)autoreleasepoolFraction*myFraction=Fraction alloc init;/set fraction to 1/3myFraction setNumerator:1;myFraction setDenominator:3;/display the fractionNSLog(”The value of myFraction is
3、:”);myFraction print;return 0;武汉大学国际软件学院Objective-C 2.0程序设计7.1 分离接口和实现文件分离接口和实现文件 注意,该文件未包含Fraction类的定义,然而,它确实导入了一个称为Fraction.h 的文件。通常,类的声明(interface部分)要放在它自己的名为class.h的文件中,而类的定义(implementation部分)通常放在相同名称的文件中,但扩展名为.m。所以把Fraction类的声明放到Fraction.h文件中,把Fraction类的定义放到Fraction.m文件中。要在Xcode中完成该工作,在File菜单中选
4、择New File。在左侧窗口中选择Cocoa。武汉大学国际软件学院Objective-C 2.0程序设计7.1 分离接口和实现文件分离接口和实现文件 点击Next,键入Fraction.m作为文件名。选中Also Create Fraction.h框。该文件所在位置应该与FractionTest.m文件的文件夹相同。武汉大学国际软件学院Objective-C 2.0程序设计7.1 分离接口和实现文件分离接口和实现文件 点击Finish。Xcode在项目中添加了两个文件:Fraction.h和Fraction.m。在此我们不使用Cocoa,所以将Fraction.h中的#import 改为#i
5、mport 武汉大学国际软件学院Objective-C 2.0程序设计7.1 分离接口和实现文件分离接口和实现文件 代码清单7-1 接口文件Fraction.h-/Fraction.h/FractionTest/Created by Steve Kochan on 7/5/08./Copyright 2008 _MyCompanyName_.All rights reserved.#import/The Fraction classinterface Fraction:NSObjectint numerator;int denominator;-(void)print;-(void)setNu
6、merator:(int)n;-(void)setDenominator:(int)d;-(int)numerator;-(int)denominator;-(double)convertToNum;end武汉大学国际软件学院Objective-C 2.0程序设计7.1 分离接口和实现文件分离接口和实现文件 代码清单7-1 实现文件Fraction.m-/Fraction.m/FractionTest/Created by Steve Kochan on 7/5/08./Copyright 2008 _MyCompanyName_.All rights reserved.#import“Fra
7、ction.h”implementation Fraction-(void)printNSLog(”%i/%i”,numerator,denominator);-(void)setNumerator:(int)nnumerator=n;-(void)setDenominator:(int)ddenominator=d;武汉大学国际软件学院Objective-C 2.0程序设计7.1 分离接口和实现文件分离接口和实现文件-(int)numeratorreturn numerator;-(int)denominatorreturn denominator;-(double)convertToNum
8、if(denominator!=0)return(double)numerator/denominator;elsereturn NAN;end武汉大学国际软件学院Objective-C 2.0程序设计7.1 分离接口和实现文件分离接口和实现文件 注意,使用以下语句将接口文件导入到实现文件中:#import“Fraction.h”这样做的目的是,是编译器知道为Fraction类声明的类和方法,同时还能确保这两个文件的一致性。还要提醒一下,一般不能在实现部分重复声明类的实例变量,所以编译器需要从Fraction.h中包含的接口部分获取信息 需要注意的另一件事是:导入的文件要用一对引号括起来,而不
9、是尖括号字符。双引号用于本地文件(指自己创建的文件),本地文件与系统文件相对,并且它们告诉编译器在哪里找到指定的文件。使用双引号,编译器一般会首先在当前目录寻找指定文件,然后再转到其他位置查找。还要注意,测试程序FractionTest.m包括接口文件Fraction.h,而不包括实现文件Fraction.m。现在,该程序分成了三个独立的文件。对于小程序例子而言,这似乎要花费很多工作,但是,着手处理较大的程序并和其他程序员共享类的声明时,这种实用性就会变得十分明显。编译运行该文件,输出为:The value of myFraction is:1/3武汉大学国际软件学院Objective-C 2
10、.0程序设计第第7章章 类类使用点运算符访问属性使用点运算符访问属性7.3具有多个参数的方法具有多个参数的方法7.4分离接口和实现文件分离接口和实现文件7.1局部变量局部变量7.5self关键字关键字7.6在方法中分配和返回对象在方法中分配和返回对象7.7合成存取器方法合成存取器方法7.2武汉大学国际软件学院Objective-C 2.0程序设计7.2 合成存取器方法 从Objective-C 2.0开始,可自动生成设置函数方法和获取函数方法(统称为存取器方法)。我们到目前位置都没有介绍如何实现,原因是知道如何自己编写这些方法非常重要。第一步是在接口部分中使用property指令标志属性。这些
11、属性通常是实例变量。在Fraction类中,两个实例变量numerator和denominator都属于此类属性。下面是新的接口部分,其中添加了新的property指令。interface Fraction:NSObjectint numerator;int denominator;property int numerator,denominator;-(void)print;-(double)convertToNum;end武汉大学国际软件学院Objective-C 2.0程序设计7.2 合成存取器方法 注意,我们没有包括下列设置函数方法和获取函数方法的定义:numerator,denomi
12、nator,setNumerator:和和setDenominator:。:。我们要让Objective-C 2.0编译器为我们自动生成这些方法。只需在实现部分中使用synthesize指令即可:#import“Fraction.h”implementation Fractionsynthesize numerator,denominator;-(void)printNSLog(”%i/%i”,numerator,denominator);-(double)convertToNumif(denominator!=0)return(double)numerator/denominator;els
13、ereturn NAN;end武汉大学国际软件学院Objective-C 2.0程序设计7.2 合成存取器方法 下面这还内容告诉Objective-C编译器,为两个实例变量的每个生成一对设置函数方法和获取函数方法:synthesize numerator,denominator;通常如果有成为X的实例变量,那么在实现部分包括以下会导致编译器自动实现一个获取函数方法X和一个设置函数方法setX:synthesize x;武汉大学国际软件学院Objective-C 2.0程序设计第第7章章 类类合成存取器方法合成存取器方法7.2具有多个参数的方法具有多个参数的方法7.4分离接口和实现文件分离接口和
14、实现文件7.1局部变量局部变量7.5self关键字关键字7.6在方法中分配和返回对象在方法中分配和返回对象7.7使用点运算符访问属性使用点运算符访问属性7.3武汉大学国际软件学院Objective-C 2.0程序设计7.3 使用点运算符访问属性使用点运算符访问属性 Objective-C语言允许你使用非常简便的语法访问属性。要获得myFraction中存储的numerator的值,可使用一下语句:myFraction numerator这会向myFraction对象发送numerator消息,从而返回所需的值。从Objective-C 2.0开始,可以使用点运算符编写以下等价的表达式:myFr
15、action.numerator 一般格式为:instance.property还可以使用类似的语法进行赋值instance.property=value这等价于编写一下表达式:instance setProperty:value武汉大学国际软件学院Objective-C 2.0程序设计第第7章章 类类合成存取器方法合成存取器方法7.2使用点运算符访问属性使用点运算符访问属性7.3分离接口和实现文件分离接口和实现文件7.1局部变量局部变量7.5self关键字关键字7.6在方法中分配和返回对象在方法中分配和返回对象7.7具有多个参数的方法具有多个参数的方法7.4武汉大学国际软件学院Objecti
16、ve-C 2.0程序设计7.4 具有多个参数的方法具有多个参数的方法 如果有一个方法能够只用一条消息既可设置numerator同时又可设置denominator就太好了。通过列出每个连续的参数并用冒号将其连起来,就可以定义一个接受多参数的方法。用冒号链接的参数将成为这个方法名的一部分。例如:方法名addEntryWithName:andEmail:表示接受两个参数的方法,这两个参数可能是姓名和电子邮件地址。方法addEntryWithName:andEmail:andPhone:是接收以下3个参数的方法,一个姓名,一个电子邮件和一个电话号码。同时设置numerator和denominator的
17、方法可以命名为setNumerator:andDenominator:,你可以采取以下形式:myFraction setNumerator:1 andDenominator:3;这种命名方法是首选方式,但是必须为方法指定更易阅读的名称。例如setTo:over:,通过将myFraction设置为1/3,比较这个名称和前面的名称:myFraction setTo:1 over:3;武汉大学国际软件学院Objective-C 2.0程序设计7.4 具有多个参数的方法具有多个参数的方法 代码请7-2 接口文件:Fraction.h-#import/Define the Fraction classi
18、nterface Fraction:NSObjectint numerator;int denominator;property int numerator,denominator;-(void)print;-(void)setTo:(int)n over:(int)d;-(double)convertToNum;end武汉大学国际软件学院Objective-C 2.0程序设计7.4 具有多个参数的方法具有多个参数的方法 代码清单7-2 实现文件:Fraction.m-#import“Fraction.h”implementation Fractionsynthesize numerator,
19、denominator;-(void)printNSLog(”%i/%i”,numerator,denominator);-(double)convertToNumif(denominator!=0)return(double)numerator/denominator;elsereturn 1.0;-(void)setTo:(int)n over:(int)dnumerator=n;denominator=d;end新的setTo:over:方法仅接收两个整型参数,n和d,并把它们赋值给该分数对应的域武汉大学国际软件学院Objective-C 2.0程序设计7.4 具有多个参数的方法具有多个
20、参数的方法 代码请7-2 测试文件:mian.m-#import“Fraction.h”int main(int argc,char*argv)autoreleasepoolFraction*aFraction=Fraction alloc init;aFraction setTo:100 over:200;aFraction print;aFraction setTo:1 over:3;aFraction print;return 0;输出:100/3001/3武汉大学国际软件学院Objective-C 2.0程序设计7.4.1 不带参数名的方法不带参数名的方法 创建方法名时,参数名实际上是
21、可选的。例如,可以如下声明一个方法:-(int)set:(int)n:(int)d;注意,和先前的例子不同,这个方法的第二个参数没有名字。这个方法名为set:,两个冒号表示这个方法有两个参数,虽然没有全部命名。要调用set:方法,可以使用冒号作为参数分隔符:aFraction set:1:3;在编写新方法时,省略参数名不是一种好的编程风格,因为它使程序很难读懂并且很不直观,特别是当使用的方法参数特别重要时更是如此。武汉大学国际软件学院Objective-C 2.0程序设计7.4.2 关于分数的操作关于分数的操作 继续讨论上面提到的Fraction类。首先,编写一个方法,将一个分数与另一个分数相
22、加,将一个方法命名为add:,并且把一个分数作为参数。这个新方法的声明如下:-(void)add:(Fraction*)f;注意参数f的声明:(Fraction*)f这条语句说明add:方法的参数类型是Fraction类,星号是必须的,所以声明:(Fraction)f是不正确的。你将把一个分数作为参数传递给add:方法。所以表达式:aFraction add:bFraction;将Fraction bFraction和Fraction aFraction相加。/add a Fraction to the receiver-(void)add:(Fraction*)f/To add two fr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ObjectiveC20 程序设计
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。