http://blog.csdn.net/zhang2531/article/details/52052453
面向对象的编程方法是为了解决系统的可维护性、可扩展性、可重用性。系统的需求是变化的,如果需求增加或者修改,就需要全部推到重来是效率低下的;不应该重复造轮子,你写一个单链表,他写一个,这样重复的工作是可以消除掉的。
面向对象与面向过程的区别
前者是纪传体,如史记按人物线索写,后者是编年史,按年代写。BS谈普通类的优点和OOP的伟大之处。面向过程是构造数据加方法(算法+数据=程序),面向对象是把数据和方法封装在一起,对象间传递消息。系统类有各种设备,如果不用多态,需要为每个设备的调用都写出接口,有了多态,设备就被抽象为一种接口,调用时动态分派具体设备的方法。
public继承是用于表明“is-a"的关系,如果是”has-a"的关系,用组合。
1、封装、继承、多态。
五大基本原则
单一职责原则(Single-Responsibility Principle)。“对一个类而言,应该仅有一个引起它变化的原因”。本原则是我们熟悉的“高内聚性原则”的引申,以提高内聚性来减少引起变化的原因。
开放封闭原则(OCP)。“软件的功能应该是可以扩展的,而尽可能的不修改”。修改程序可能会造成原来的程序错误,不能修改,但是可以添加功能。对扩展是开放的,对更改是封闭的。更改封闭是我们对模块进行扩展时,不需要对源代码进行修改或重新编译文件。
里氏替换原则(the Liskov Substitution Principle LSP)。派生类可以替换基类出现在基类能够出现的任何地方;
依赖倒置原则(the Dependency Inversion Principle DIP)。传统的结构化编程中,最上层的模块通常都依赖下面的子模块来实现,即高层依赖底层,DIP就是逆转这种关系。
接口分离原则(the Interface Segregation Principle ISP) 。模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来。