封装的理解及应用

来源:互联网 发布:海康ddns域名注册 编辑:程序博客网 时间:2024/09/21 09:06

封装:

1.什么是封装:

封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式


2.封装的好处:

将变化隔离。(不管里面怎么变,使用者不需要知道)

便于使用。(使用者只需按照一定的方法使用就可以了)

提高重用性。(任何人都可以对已封装好的功能进行操作)

提高安全性。(由于暴露给使用者的只是一些外在的操作环节,而不是里面本质的东西,所以就提高了对他的维护性,也就是安全性)


3.封装的原则:

将不需要对外提供的内容都隐藏起来。

把属性都隐藏,提供公共方法对其访问。


4.setter方法的实现

  set方法的书写规范:

4.1set方法一定是一个对象方法

4.2set方法一定不能有返回值

4.3 set方法必须以set开头

4.4set之后跟的是实例变量去掉下划线,并且首字母大写

4.5set方法一定有参数,而且参数的类型和实例变量的类型一致

4.6set方法的形参名 一般是去掉下环线的实例变量名

4.7形参名不能和实例变量名同名

4.8set方法实现中,一定要用形参给实例变量赋值


成员变量:int _age; setter方法

-(void)setAge:(int)age{

    _age= age;

}


调用

[person setAge:10];


get方法书写规范:

1)get方法一定是一个对象方法

2)get方法一定有返回值,返回值的类型和实例变量的类型要一致

3)get方法的方法名 是去掉下环线的实例变量名

4)get方法一定没有参数

5)get方法的实现中,一定是返回实例变量值


成员变量:int _age; get方法

-(int)age{

    return_age;

}


setter (设置/赋值)   设置属性不需要返回值   setter之后 对象的属性的值就被赋值了

get   (获取/取值    获取对象属性的值(返回实例变量的值  get之后   就可以拿到对象属性的值


//组合模式了解就可以了

组合模式:把具有相同基类类型的对象组合到树形结构中,以表示部分-整体的层次结构,使得用户对单个对象和组合对象的使用具有一致性。


依赖关系:

A对象作为B对象的局部变量或是方法形参的,B依赖与A,这时候我们称AB之间存在一种依赖关系


人坐车回家   人依赖于车

[person goHome:car];


关联关系:

当一个对象拥有另外一个对象的时候,B对象为A对象的成员变量的时候,B对象与A对象之间存在一种关联关系

关联关系是面向对象中最常用一种关

@interface Person : NSObject

{

    Dog *_dog;  //关联关系

   }



封装的代码应用:

#pragma mark main函数

#import

#import"KLine.h"

intmain(intargc, constchar* argv[]) {

   @autoreleasepool {

       

       KLine*kline = [KLinenew];

       

       [kline setMinPrice:100f];//银行设置赋值的

       

       floatminPrice = [kline minPrice];//铁路取出来的

       

       

       

       [kline setMaxPrice:50.4f];

       

       

       NSLog(@"\navPrice= %.2f",[kline avPrice]);

       

       

    }

    return0;

 

}

#pragma markKline的声明Kline.h

#import


@interface KLine: NSObject

{


 //定义实例变量

    float_minPrice;

    float_maxPrice;

    float_avPrice;

}


 //行为

//float _minPrice;

-(void)setMinPrice:(float)minPrice;

-(float)minPrice;


//float _maxPrice;

-(void)setMaxPrice:(float)maxPrice;

-(float)maxPrice;


//float _avPrice;

-(float)avPrice;

 

@end


#pragma markKline的实现Kline.m

#import"KLine.h"


@implementation KLine

//float _minPrice;

-(void)setMinPrice:(float)minPrice{


    _minPrice= minPrice;

   _avPrice =(_minPrice+_maxPrice)/2;


}

-(float)minPrice{


   return_minPrice;


}


//float _maxPrice;

-(void)setMaxPrice:(float)maxPrice{


    _maxPrice= maxPrice;

   _avPrice =(_minPrice+_maxPrice)/2;


}

-(float)maxPrice{


   return_maxPrice;

}


//float _avPrice;

-(float)avPrice{

//    _avPrice = (_minPrice +_maxPrice)/2;

   return_avPrice;

}

@end





0 0
原创粉丝点击