(六)黑马程序员——oc基础之封装
2015-10-23 00:46
423 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
例6、设计一个K线类,要求:最高价格和最低价格(可读(get)写(set)),平均价格(只读)。
源代码实现及模块化知识点拓展
模块一:
1.1、声明文件的源代码
.h文件
#import <Foundation/Foundation.h>
@interface kLine :
NSObject
//实例变量
{
float _minPrice;
float _maxPrice;
float _avePrice;
}
//set方法的声明
-(void)setMinPrice:(float)minPrice;
-(void)setMaxPrice:(float)maxPrice;
//get方法的声明
-(float)getMinPrice;
-(float)getMaxPrice;
-(float)getAvePrice;
//输出函数的声明
-(void)print;
@end
1.2、知识点拓展
1.2.1
set方法命名规范:
1)方法名必须以set开头
2)set后面跟上成员变量的名称,首字母大写
3)返回值一定是void
4)一定要接受一个参数,而且参数类型需要和成员变量的类型一致
5)形参名不能喝成员变量名一样
1.2.2
get方法命名规范:
1)一定有返回值,返回值类型需要和成员变量的类型一致
4)不接受任何参数
5)方法名和成员变量名一样
模块二:
2.1、实现文件的源代码
.m文件
#import "kLine.h"
//kLine类的实现
@implementation kLine
//set方法的实现
-(void)setMinPrice:(float)minPrice
{
//设置最低价格
_minPrice = minPrice;
}
-(void)setMaxPrice:(float)maxPrice
{
//设置最高价格
_maxPrice = maxPrice;
//求取平均价格
_avePrice =(_minPrice+_maxPrice)/2;
}
//get方法的实现
-(float)getMinPrice;
{
//获取最低价格
return_minPrice;
}
-(float)getMaxPrice;
{
//获取最高价格
return_maxPrice;
}
-(float)getAvePrice;
{
//获取平均价格
return_avePrice;
}
//输出函数
-(void)print
{
NSLog(@"最低价格:%.2f,最高价格:%.2f,平均价格:%.2f",_minPrice,_maxPrice,_avePrice);
}
@end
2.2、知识点拓展
2.2.1
setter方法(设置器)
set方法为对象提供成员变量的值。在set方法的内部也可以对一些不合理的赋值进行筛选过滤。好处:(1)不让数据暴露在外,保证了数据的安全性(2)对设置数据进行过滤。
2.2.2
getter方法(设置器)
在实际开发中,不一定set和get方法都提供,若内部的成员变量只允许访问,不允许修改,则只有get方法,没有set方法。作用:为调用者返回对象内部的成员值。
[b]模块三:
[/b]
3.1、主函数的源代码
#import <Foundation/Foundation.h>
#import "kLine.h"
int main(int argc,constchar * argv[]) {
@autoreleasepool {
//创建一个实例对象
kLine *p = [kLinenew];
//使用set方法设置kLine类的成员变量的值
[p setMinPrice:13.12];
[p setMaxPrice:109.26];
[p print];
//使用get方法获取成员变量的值
NSLog(@"最低价格:%.2f,最高价格:%.2f,平均价格:%.2f",[pgetMinPrice],[pgetMaxPrice],[pgetAvePrice]);
}
return
0;
}
3.2、知识点拓展
3.2.1
对象方法的调用---->这部分知识点的详细内容,请见我的第5篇博文《黑马程序员--oc基础之类方法与对象方法的使用比较》
3.2.2
二、学习心得
(1)在这篇博文里,主要通过一个例子讲述传统的封装方法(set方法和get方法),我将在后面的博文讲述用@property关键字实现,可以将2种方法进行比较学习。
(2)set方法和get方法归根究底就是一种对象方法,只不过在命名规范上给了一些特殊要求,实现功能上做了些规定而已,所以,我感觉如果对象方法学好了,搞定封装就没问题了。
例6、设计一个K线类,要求:最高价格和最低价格(可读(get)写(set)),平均价格(只读)。
源代码实现及模块化知识点拓展
模块一:
1.1、声明文件的源代码
.h文件
#import <Foundation/Foundation.h>
@interface kLine :
NSObject
//实例变量
{
float _minPrice;
float _maxPrice;
float _avePrice;
}
//set方法的声明
-(void)setMinPrice:(float)minPrice;
-(void)setMaxPrice:(float)maxPrice;
//get方法的声明
-(float)getMinPrice;
-(float)getMaxPrice;
-(float)getAvePrice;
//输出函数的声明
-(void)print;
@end
1.2、知识点拓展
1.2.1
//set方法的声明 -(void)setMinPrice:(float)minPrice; -(void)setMaxPrice:(float)maxPrice;
set方法命名规范:
1)方法名必须以set开头
2)set后面跟上成员变量的名称,首字母大写
3)返回值一定是void
4)一定要接受一个参数,而且参数类型需要和成员变量的类型一致
5)形参名不能喝成员变量名一样
1.2.2
//get方法的声明 -(float)getMinPrice; -(float)getMaxPrice; -(float)getAvePrice;
get方法命名规范:
1)一定有返回值,返回值类型需要和成员变量的类型一致
4)不接受任何参数
5)方法名和成员变量名一样
模块二:
2.1、实现文件的源代码
.m文件
#import "kLine.h"
//kLine类的实现
@implementation kLine
//set方法的实现
-(void)setMinPrice:(float)minPrice
{
//设置最低价格
_minPrice = minPrice;
}
-(void)setMaxPrice:(float)maxPrice
{
//设置最高价格
_maxPrice = maxPrice;
//求取平均价格
_avePrice =(_minPrice+_maxPrice)/2;
}
//get方法的实现
-(float)getMinPrice;
{
//获取最低价格
return_minPrice;
}
-(float)getMaxPrice;
{
//获取最高价格
return_maxPrice;
}
-(float)getAvePrice;
{
//获取平均价格
return_avePrice;
}
//输出函数
-(void)print
{
NSLog(@"最低价格:%.2f,最高价格:%.2f,平均价格:%.2f",_minPrice,_maxPrice,_avePrice);
}
@end
2.2、知识点拓展
2.2.1
<span style="font-size:14px;">//set方法的实现 -(void)setMinPrice:(float)minPrice { _minPrice = minPrice;//设置最低价格 } -(void)setMaxPrice:(float)maxPrice { _maxPrice = maxPrice;//设置最高价格 //求取平均价格 _avePrice =(_minPrice+_maxPrice)/2; }</span>
setter方法(设置器)
set方法为对象提供成员变量的值。在set方法的内部也可以对一些不合理的赋值进行筛选过滤。好处:(1)不让数据暴露在外,保证了数据的安全性(2)对设置数据进行过滤。
2.2.2
<span style="font-size:14px;">//get方法的实现 -(float)getMinPrice; { return_minPrice;//获取最低价格 } -(float)getMaxPrice; { return_maxPrice;//获取最高价格 } -(float)getAvePrice; { return_avePrice;//获取平均价格 }</span>
getter方法(设置器)
在实际开发中,不一定set和get方法都提供,若内部的成员变量只允许访问,不允许修改,则只有get方法,没有set方法。作用:为调用者返回对象内部的成员值。
[b]模块三:
[/b]
3.1、主函数的源代码
#import <Foundation/Foundation.h>
#import "kLine.h"
int main(int argc,constchar * argv[]) {
@autoreleasepool {
//创建一个实例对象
kLine *p = [kLinenew];
//使用set方法设置kLine类的成员变量的值
[p setMinPrice:13.12];
[p setMaxPrice:109.26];
[p print];
//使用get方法获取成员变量的值
NSLog(@"最低价格:%.2f,最高价格:%.2f,平均价格:%.2f",[pgetMinPrice],[pgetMaxPrice],[pgetAvePrice]);
}
return
0;
}
3.2、知识点拓展
3.2.1
//使用set方法设置kLine类的成员变量的值 [p setMinPrice:13.12]; [p setMaxPrice:109.26]; [p print];
对象方法的调用---->这部分知识点的详细内容,请见我的第5篇博文《黑马程序员--oc基础之类方法与对象方法的使用比较》
3.2.2
<span style="font-size:14px;">//使用get方法获取成员变量的值 NSLog(@"最低价格:%.2f,最高价格:%.2f,平均价格:%.2f",[pgetMinPrice],[pgetMaxPrice],[pgetAvePrice]);</span>NSLog函数---->这部分知识点的详细内容,请见我的第5篇博文《黑马程序员--oc基础之类方法与对象方法的使用比较》
二、学习心得
(1)在这篇博文里,主要通过一个例子讲述传统的封装方法(set方法和get方法),我将在后面的博文讲述用@property关键字实现,可以将2种方法进行比较学习。
(2)set方法和get方法归根究底就是一种对象方法,只不过在命名规范上给了一些特殊要求,实现功能上做了些规定而已,所以,我感觉如果对象方法学好了,搞定封装就没问题了。
相关文章推荐
- 全面解析《嵌入式程序员应该知道的16个问题》
- 新手程序媛要怎么做
- 京东面试题,N只熊分苹果
- 程序员的自黑
- 从小学到高中,一个程序猿的独白
- 关于数组面试小题
- 两道面试题:2012年10月9号阿里巴巴笔试
- 单链表常见的面试题,及应用
- Android面试题(一)(笔记)
- 2015北京面试记录
- 黑马程序员——java学习日记八
- C#程序员经常用到的10个实用代码片段
- 黑马程序员——java学习日记七
- verilog面试题
- 如何成为一名合格的程序员
- 面试问题
- 《一个程序员的奋斗史》
- 黑马程序员——java学习日记六
- 干程序员不要输在起跑线上
- [.Net码农]RDL和RDLC使用ReportViewer显示报表时筛选导出项