程序员面试必考题---面向对象与面向过程的区别
【问题】面向对象和面向过程的区别是什么?
【解答要点】:
在面向对象程序设计方法(OOP)出现之前,软件界广泛流行的是面向过程的设计方式,这种方法中最重要的是对事件的处理过程。处理的对象多以变量的形式存在,且与处理过程之间不存在约束关系。开发中,以过程为中心,多采用自顶向下逐步求精的设计模式。程序中使用的众多变量名、函数名互不约束,令程序员不堪重负。由于使用面向过程方法设计的程序把处理的主体与处理的方法分开,因此各种成分错综复杂地放在一起,难以理解,易出错,并且难于调试。
而面向对象的开发方式中,以数据为中心,将数据及对数据的操作放在一起,形成一种相互约束相互依存的关系,即对象。使用类来刻画有类似属性的不同对象,使用继承来简化开发过程,使用接口来规范对数据的操作,使用多态达到操作的灵活性。
两种开发模式在数据处理方式、程序流程控制方式、函数调用方式等方面都不相同。
面向对象技术主要包含这样几个概念:对象、抽象数据类型、类、类型层次(子类)、继承性、多态性。
面向对象技术把问题看成是相互作用的事物的集合,用属性来描述事物,而把对它的操作定义为方法。在面向对象中,事物称为对象,属性称为数据,对象就是数据加方法。可以将现实生活中的对象经过抽象,映射为程序中的对象。对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(Class)。
面向对象中采用了三大技术:封装、继承和多态。将数据及对数据的操作捆绑在一起成为类,这就是封装技术。程序员只有一种基本的结构,即类。将一个已有类中的数据和方法保留,并加上自己特殊的数据和方法,从而构成一个新类,这是OOP中的继承。原来的类是父类,新类是子类,子类派生于父类,或说子类继承于父类。在一个类或多个类中,可以让多个方法使用同一个名字,也可以在有继承关系的类之间灵活选择要执行的动作,从而使对象具有多态性。
《横扫offer---程序员招聘真题详解700题》,开点工作室著,清华大学出版社出版,天猫、京东等各大网上书店及实体书店均有销售。