面向对象编程

封装(encapsulation)是将部分数据对应用程序的其余部分隐藏起来,并且

限制程序代码其余部分访问该数据的能力

封装是将类的实现隐藏起来,好让它容易适用与改变。封装让类以黑盒的方式提供给它的用户。

封装遵循开闭原则体现在两个方面:

      对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。
  对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。 

 开放-封闭原则(OCP)

 1、软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改。也就是对扩展开放,对更改关

2、开闭原则的意思就是说,你设计的时候,时刻要考虑,尽量让这个类是足够好,写好了就不要去修改了,如果新需求来了,我们增加一些类就可以了,原来的代码能不动则不动。

3、无论模块是多么的封闭,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对那些变化封闭做出选择,他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。

4.面对需求, 对程序的改动是通过增加新代码进行的,而不是更改现有的代码。

5.对于可拓展的部分分离出来,形成一个接口,在系统中最有可能拓展的因素就是业务功能的增加或变更对于业务流程应该将其作为可扩展的部分来实现,当有新的功能增加时,不需重新梳理 已经形成的业务接口,

如何实现耦合度和灵活性兼有的双重机制呢?
  答案就是抽象。将业务功能抽象为接口,当业务员依赖于固定的抽象时,对于修改就是封闭的;而通过继承和多态机制,从抽象体派生出新的扩展实现,就是对扩展的开放。

 

封装的意义是保护程序代码里的信息免于被不正确的使用。

例:public class Airplane{
    public int speed; 注:speed 变量是public,而不是private,现在应用程序的所有部分都能直接访问speed
    public Airplane(){
    }
    public void setSpeed(int speed){
        this.speed=speed;
    }
    public int getSpeed(){
        return speed;
       }
}

问:封装完全与让你的所有变量成为private么

封装将数据与应用程序的行为分离开来。使用成员变量,而不想让应用程序的其他部分

直接操控你的数据,可以通过让数据变成private分离开。假如数据需要被更新,

可以提供方法处理,如Airplane类中使用getSpeed()与setSpeed().

可以掌控每一个部分如何被应用程序的其他部分使用。

posted on 2015-04-26 11:31  叶子的分享  阅读(193)  评论(0编辑  收藏  举报