面向对象的思考

什么是面向对象

1、维基百科说,面向对象程序设计是是种具有对象概念的编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、属性、代码与方法。对象则指的是类(class)的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象[1][2]

2、我的理解是:对处理的事物或问题,抽象出包含其特征,行为和关系的模型,这些模型称之为接口或类;并使用继承、封装、多态、实现、组合等方式来运用接口或类创建对象实例。

3、面向对象程序设计(oop : Object Oriented Programming)就是使用这些对象实例做程序设计和研发的过程。其目的是为了开发出可维护、可读、可扩展、可复用的代码。还有OOD(面向对象的设计),OOA(面向对象的分析)

面向对象的特性

1、封装
  隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
2、继承
  提高代码复用性;继承是多态的前提。
3、多态
  指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。消除类型之间的耦合关系,提高了程序的拓展性。

面向对象的原则

1、单一职责原则SRP(Single Responsibility Principle):高内聚,低耦合。抽象出的类应该只有一个职责,避免相同的职责分散到不同的类中。

2、开放封闭原则OCP(Open-Close Principle):开放扩展类的能力,封闭修改类的行为。使用抽象编程,而不要使用具体编程,因为抽象相对稳定。让类依赖于固定的抽象类和接口,所以修改是封闭的;而使用继承和多态,可以继承抽象类或者实现接口,通过重写其方法来改变固有行为,实现方法的拓展,所以就是开放的。

3、里式替换原则LSP(the Liskov Substitution Principle LSP):子类必须能够替换其父类。其目的是对继承操作的约束。要求子类可以扩展父类的功能,但不能改变其原有功能。如果非要重写父类的方法,较好的做法是:原来的父类与子类继承一个更通俗的基类,原有的继承关系去掉,采用依赖、聚合,组合等关系替代。

4、依赖倒置原则DIP(the Dependency Inversion Principle DIP):高层模块不应该依赖于低层模块,他们都应该依赖于抽象;抽象不应该依赖于具体实现,具体实现应该依赖于抽象。应该让底层模块定义抽象接口并且实现,让高层模块调用抽象接口,而不是直接调用实现类。

5、接口分离原则ISP(the Interface Segregation Principle ISP):高内聚,建立单一接口,接口中的方法尽量少。模块间要通过抽象接口隔离开,面向接口编程。

你可能感兴趣的:(面向对象的思考)