面向对象程序设计(OOP)的具体定义很难下,也很容易因此而引起争论,在   Object-Oriented   Frequently  Asked   Questions   (OO   FAQ)   中就有好几种不同的定义。这里就按照   Grady   Booch   [1994]   的定义:“面向对象程序设计是程序结构的一种实现方法,在这种方法下,程序由互相协作的对象组成,这些对象是某个类的实例,而这些类又是通过继承关系组成的类的分级结构的成员。”
面向对象的设计(object   oriented   design)都包含以下几个要素:  
   
-   对象(Object):包含一定的数据结构和状态的实体。  
 
-   操作(Operation):作用于对象的行为,如访问和处理对象的状态。  
 
-   封装(Encapsulation):定义对象和操作,只提供抽象的接口,并隐藏它们的具体实现。  
 
          Ada   83   已经支持上述3个特性,因此被称为基于对象(oriented-based)的语言;但面向对象程序设计经过十年的发展,   Ada95   基于上述要素又增添了以下两个   Ada83   不支持的要素:    
-   继承(Inheritance):通过继承现有类型的性质,创建新的数据类型,而不影响原有数据类型。  
 
-   多态性(Polymorphism):判定数据类型集合中各类型的区别,使程序可以按照它们的共同特性来书写。  
 
          对新特性的需求是由三份报告[Dod   1990]指出的,具体见   Ada   Rantinale   的   Part  Two-   4   Object   Oriented   Programming--   4.1   Background   and   Concepts,可以更好的理解继承和多态性。     
          OOP 的继承从理论上讲是模仿人的思考方法,将对象分类,如:car,bus   这两个数据类型是从数据类型vehicle   继承而来的,它们作为   vehicle   的一类,自然继承了   vehicle   的特性,同时具有自身独有的特性;而   wheel   却不是   vehicle   的一类,只是   vehicle   的一个组成部份,因此不是从   vehicle   继承而来。同样,vehicle   有一些操作,如   start,reverse,   car和bus也继承下来,如果必要,也可加上自己独有的操作,如   drive_at_200mph。但在实际程序中,人们往往忽视了面向对象的内涵,甚止于   C++   这些语言玩了好几年,也只是用上了面向对象的语法,而没有形成面向对象的思考方法。