面向对象程序设计(英语:Object-oriented programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发的方法。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。[1]
当我们提到面向对象的时候,它不仅指一种程序设计方法。它更多意义上是一种程序开发方式。在这一方面,我们必须了解更多关于面向对象系统分析和面向对象设计(Object Oriented Design,简称OOD)方面的知识。
目录 [隐藏]
1 概述
2 基本理论
2.1 类
2.2 对象
2.3 方法(秩序;条例)
2.4 消息传递机制
2.5 继承性
2.6 封装性
2.7 多态性
2.8 抽象性
3 OOP名词释意
4 面向对象的语言
5 历史
5.1 脚本中的OOP
6 参考文献
7 相关内容
8 外部链接
[编辑]概述
面向对象程序设计的雏形,早在1960年的Simula语言中即可发现,当时的程序设计领域正面临着一种危机:在软硬件环境逐渐复杂的情况下,
软件如何得到良好的维护?面向对象程序设计在某种程度上通过强调可重复性解决了这一问题。20世纪70年代的Smalltalk语言在面向对象方面堪称经典——以至于30年后的今天依然将这一语言视为面向对象语言的基础。
面向对象程序设计可以被视作一种在程序中包含各种独立而又互相调用的单位和对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,或者说是负有责任的角色。
目前已经被证实的是,面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用。 此外,支持者声称面向对象程序设计要比以往的做法更加便于
学习,因为它能够让人们更简单地设计并维护程序,使得程序更加便于分析、设计、理解。反对者在某些领域对此予以否认。
[编辑]基本理论
一项由 Deborah J. Armstrong 进行的长达40年之久的计算机著作调查显示出了一系列面向对象程序设计的基本理论。它们是:
[编辑]类
类(Class)定义了一件事物的抽象特点。通常来说,类定义了事物的属性和它可以做到的(它的行为)。举例来说,“狗”这个类会包含狗的一切基础特征,例如它的孕育、毛皮颜色和吠叫的能力。类可以为程序提供模版和结构。一个类的方法和属性被称为“成员”。 我们来看一段伪代码:
类 狗
开始
私有成员:
孕育:
毛皮颜色:
公有成员:
吠叫():
结束
在这串代码中,我们声明了一个类
,这个类具有一些狗的基本特征。关于公有成员和私有成员,请参见下面的继承性一节。
[编辑]对象
对象(Object)是类的实例。例如,“狗”这个类列举狗的特点,从而使这个类定义了世界上所有的狗。而莱丝这个对象则是一条具体的狗,它的属性也是具体的。狗有皮毛颜色,而莱丝的皮毛颜色是棕白色的。因此,莱丝就是狗这个类的一个实例。一个具体对象属性的值被称作它的“状态”。(系统给对象分配内存空间,而不会给类分配内存空间,这很好理解,类是抽象的系统不可能给抽象的东西分配空间,对象是具体的)
假设我们已经在上面定义了狗这个类,我们就可以用这个类来定义对象:
定义莱丝是狗
莱丝.毛皮颜色:=棕白色
莱丝.吠叫()
我们无法让狗这个类去吠叫,但是我们可以让对象“莱丝”去吠叫,正如狗可以吠叫,但没有具体的狗就无法吠叫。
[编辑]方法(秩序;条例)
方法(Method)是定义一个类可以做的,但不一定会去做的事。作为一条狗,莱丝是会叫的,因此“吠叫()”就是它的一个方法。与此同时,它可能还会有其它方法,例如“坐下()”,或者“吃()”。 对一个具体对象的方法进行调用并不影响其它对象,正如