面向对象的基本概念

Author: 胡家宝 Date: 1997-01-01

  编程爱好者在见到目前流行的语言介绍时,如Visual BASIC、Visual C++、Borland C++,就会遇到“面向对象”这一概念,这些语言也被称之为面向对象的程序设计语言OOP(Object-Oriented Programer)。使用这些语言进行程序设计的基础是以对象或对象类的设计而展开,采用这种方式进行的程序设计称之为面向对象的程序设计。因此,掌握和理解面向对象的基本概念,对于学习和使用面向对象的程序设计语言,有十分重要的意义。
#2  一、什么叫“对象”(OBJECT)
  对象是现实世界中实体集合的抽象。如各种房子实体可以抽象为房屋这一对象,各类飞机可以抽象为飞机这一对象。
  抽象的概念也是对象。
  对象可以用以下几个方面进行说明:对象标识符,即对象的名字;对象属性,即某一对象的性质;对象状态,即对象在事件完成后所处的状态;对象过程,即对象的活动的描述;对象活动进程,即对象的活动的时间关系。
  牛津字典对对象进行了定义:对象是一组信息及其在上面的操作的描述。此中的“信息”是用数据表达,“操作”是用处理描述的。如椭圆这一对象是用长、短半轴数据表达和画椭圆处理描述的;堆栈这一对象是用堆栈段、堆栈指针数据表达和进栈、出栈处理描述的。
#2  二、“对象类”(OBJECT CLASS)如何理解
#3  1.对象类
  对象类是对象的集合的一种抽象,它描述的是一类对象的共同的性质和行为。一个对象类的性质是用数据表达,行为用处理描述。在一个对象类中用数据表达的性质和用处理描述的行为可以是公有的(Public)和私有的(Private)。
  对象类之间的关系是层次关系,如图一所示的昆虫的层次关系。
  图中描述了昆虫类、有翅昆虫类和无翅昆虫类的层次关系。相对而言,上层的对象类称为父类,下层的对象类称为子类。对象类之间的层次关系用有向线段连接。图中有翅昆虫类中的蛾、蝇、蝴蝶是该类中的对象。对象中的一个具体的实体称为该对象中的一个实例(Instance),如蛾对象中的具体的蛾1、蛾2……蛾K等。
  对象类是在对象的概念上抽象的结果,因此它是从深度上发展了对象的概念。
#3  2.封装(Encapsulation)
  把某个对象类的共同的性质和行为“组装起来”称为对象类的封装,或称为信息隐蔽。封装的含义是某个对象类的共同的性质和行为,对该类中的某一对象来讲是信息隐蔽的,这个对象只能见到封装界面上的信息,即接口。对象类的封装同芯片的封装很相似,其内部的电路是不可见的。
  对象类封装的好处是对象类中的性质和行为发生变化时,仅修改该对象类中的封装的信息,十分有利于系统的稳定性。
#3  3.继承(Inheritance)
  对象类之间的层次关系的内涵即为继承。子类与父类的继承关系主要有如下内容:子类继承父类的数据和行为;子类可以添加它自己的数据和行为;子类可以截取父类的数据和行为,这些是继承的核心内容。
  对象类的继承表达了对象类的层次关系中这样的事实:高层对象类定义了对象类的共性部分;低层对象类继承了高层对象类的共性部分,并且增添了自己的个性部分。
#3  4.多态性(Polymorphism)
  多态性是指对象可以有多种状态。在面向对象的程序设计中,指不同的处理可以用相同的名字,以产生不同的结果。如画圆和画椭圆是两个不同的处理,可以在程序设计中用相同的处理名字,产生不同的结果,即一个是圆另一个是椭圆。
#2  三、面向对象(Object-Oriented)
  面向对象是以对象作为思维的出发点,以对象作为基础考虑和解决问题。因此,面向对象是一种思维方式,是一种认识方法学,人们正是通过对各种各样的对象的认识来认识客观现实世界的。