OC 类的封装 set方法和get方法
2015-04-13 17:20
323 查看
封装的目的是为了实现程序代码设计上的高内聚,低耦合性。类似我们生活中,看电视使用的“接口”-- 遥控器, 可以对电视机进行操作。至于电视机的内部构造原理,我们是不需要知道的。电视机的生产商也不希望我们知道。 哪个人切换频道时要到电视机上把两根线“短路”一下呢,这个技巧掌握不好,可能人和电视机一起就挂掉了!!!而我们又确实要对电视机进行相关操作来修改电视机运行状态和数据。所以电视机的生产厂商给我提供了遥控器这个设备 ------ 把用户所需要的操作功能都“封装”在里边,这样用户就可方便、快捷、安全的使用电视机了。
程序设计中的封装概念和上边举例是一样的。程序设计就是用数据来表示不同的意义,最后由计算机计算得到正确结果,以供人们使用。 例如各大型工厂都会有一个员工工资查询、发放和统计的系统, 如果会计不小心把某个人的工资敲成了负数,而这套软件系统又没有相关的数据核查,不知道下个月发工资时,哪个员工该笑还是该哭呢
所以OC语言中,可以设置只能通过set方法和get方法访问成员变量,而不允许外部直接对其进行访问,通过set方法可以严格核查外部传入参数是否合法,同样set方法和get方法都对成员变量实现了隐藏即封装。 增强和程序的鲁棒性。
set 方法 get 方法 小练习
程序设计中的封装概念和上边举例是一样的。程序设计就是用数据来表示不同的意义,最后由计算机计算得到正确结果,以供人们使用。 例如各大型工厂都会有一个员工工资查询、发放和统计的系统, 如果会计不小心把某个人的工资敲成了负数,而这套软件系统又没有相关的数据核查,不知道下个月发工资时,哪个员工该笑还是该哭呢
所以OC语言中,可以设置只能通过set方法和get方法访问成员变量,而不允许外部直接对其进行访问,通过set方法可以严格核查外部传入参数是否合法,同样set方法和get方法都对成员变量实现了隐藏即封装。 增强和程序的鲁棒性。
#import <Foundation/Foundation.h> @interface Student : NSObject { int age; } /* set方法 作用: 提供外界访问成员变量的方法 命名规范 1 方法名必须以set开头 2 set后边跟上成员变量的名称,而且成员变量的首字母必须大写 3 形参的名称不能和成员变量的名称一样 4 set方法返回值必须为void - (void)setAge: (int)newAge; */ /* get方法 作用:返回内部的成员变量 命名规范 1 返回值类型和成员变量类型一致 2 方法名和成员变量名相同 3 不需要接收任何参数 */ @end @implementation Student - (void)setAge: (int)newAge { // 对外界传入的参数进行过滤ß if(newAge >= 1 && newAge <= 200) { age = newAge; return; } age = 1; } - (int)age { return age; } @end int main() { Student *lili = [Student new]; [lili setAge:25]; NSLog(@"lili的年龄是%i", [lili age]); return 0; }
set 方法 get 方法 小练习
#import <Foundation/Foundation.h> // set方法 和 get方法练习 // 声明一个Score类 @interface Score : NSObject { int _cScore; //c语言分数 int _ocScore; // oc语言分数 int _totalScore; // 总分数 int _averageScore; // 平均分数 } // _cScore 的set 方法 (只写 因为没有设置_cScore 的get 方法) - (void)setCScore: (int)cScore; // _ocScore 的set 方法 (只写 因为没有设置_ocScore 的get 方法) - (void)setOcScore: (int)ocScore; // _totalScore的get 方法 (只读 因为没有设置_totalScore的set 方法) - (int)totalScore; // _averageScore的get 方法 (只读) - (int)averageScore; @end @implementation Score - (void)setCScore: (int)cScore { _cScore = cScore; // 在set方法里计算部分和平均分,达到“监听”效果 // 计算总分 _totalScore = _cScore + _ocScore; //计算平均分 _averageScore = _totalScore / 2; } - (void)setOcScore: (int)ocScore { _ocScore = ocScore; // 在set方法里计算部分和平均分,达到“监听”效果 // 计算总分 _totalScore = _cScore + _ocScore; //计算平均分 _averageScore = _totalScore / 2; } - (int)totalScore { return _totalScore; } - (int)averageScore { return _averageScore; } @end int main() { Score * chengji = [Score new]; [chengji setCScore: 95]; [chengji setOcScore: 97]; NSLog(@"totoalScore = %i", [chengji totalScore]); NSLog(@"averageScore = %i", [chengji averageScore]); return 0; }
相关文章推荐
- 黑马程序员——OC语言------set和get方法(封装)、类方法、self关键字
- 【Objective-C】04-OC对象成员变量的封装规范:get方法和set方法
- OC基础—————类型的可见度,封装,自定义方法, set 和 get
- 通过封装编写Book类。要求:类具有私有属性书名title、页数pageNum、类型type(默认为计算机类),并为这三个属性分别编写set和get方法。其中,页数不能少于200页,否则输出错误信息,
- 重构Oc的get,set方法
- 封装、魔法方法 __set(),__get(),__isset(),__unset()
- 黑马程序员----OC学习之成员变量的get,set方法多种实现
- 黑马程序员-面向对象的三大特性1-封装-set,get方法,弱语法
- oc中传统的get和set方法
- 黑马程序员-OC学习笔记-点方法、成员变量作用域以及set方法和get方法@property的综合题
- OC语言学习 (三) 成员变量get/set方法和“.”语法,@proterty和@synthesize关键字
- 黑马程序员——OC学习之成员变量的get,set方法多种实现
- 为什么要用set,get方法封装字段
- oc中成员变量的set/get方法 以及 属性点语法的使用
- OC get set 方法理解 get set方法不能同时重写
- java之数据域封装set、get方法
- OC 10 苹果内部如何实现set和get方法 copy 多态
- OC类的封装(set和get方法)
- 小白学开发(iOS)OC_get/set 方法重写(2015-07-28)
- oc-16-set,get方法