C++语言程序设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.1 面向对象的概念

什么是面向对象?简单地说,它和面向过程一样都是软件开发的一种方法。但是它与面向过程不同,面向对象是一种运用对象、类、继承、封装、包含、消息传递、多态性等概念来构造系统的软件开发方法。这里提出了一些新的概念,这些新的概念描述了面向对象的特点。

下面从解释这些概念中给出面向对象的特点,进而对面向对象这种方法有所了解和认识。

(1)对象是软件系统的基本构成单位

分析问题的出发点是对象。对象是对待解决问题(问题域)中的客观事物的抽象表示,它是面向对象程序的基本要素。

(2)对象的属性和服务结合为一个独立的实体

对象的属性是表示客观事物的静态特性,一般用数据来表达;对象的服务是描述客观事物的动态特性,即事物的行为,一般用函数或称方法来表达。对象的属性与服务结合为一个独立的实体,称为封装体,对外屏蔽其内部的部分特性。

(3)类是对某些对象的抽象描述

类是具有相同属性和服务的若干对象的集合。类为该类的所有对象提供一种统一的抽象描述。一个类中包含属性和服务两部分。实际上,类是一种类型,这种类型是自定义的,而对象是某个类的一个实例。

(4)派生类继承基类中的属性和服务

在不同的层次上运用抽象的原则,可以获得基类和它的派生类。派生类继承基类中的属性和服务,通过类间的继承关系可以简化系统的构造过程和文档,实现共享。例如,根据世界上存在的各种各样的汽车,可以将它们的共性抽象为一个汽车类,再将各种各样的轿车的共性抽象为一个轿车类。显然,轿车类应该是汽车基类的派生类,因为轿车具有汽车的共性,另外还具有它自身的特性。我们说,轿车类继承了汽车类中的属性和服务。

(5)复杂对象可由若干简单对象构成

复杂的事物常可以化解为若干简单的事物。同样,一个复杂的对象可以化解为简单对象的集合。例如,描述一架飞机,这是一个较为复杂的对象,但可以将它看成由机翼、机身、发动机和尾翼等部件组成。一架飞机看作一个复杂类的对象,这个复杂类由若干简单类的对象组成。这称为类的包含关系。

(6)对象与对象之间使用消息进行通信

消息是向对象发出的服务请求,消息的发送者是一个要求提供服务的对象,而消息的接收者是一个能够提供服务的对象,通过消息传送实现对象之间的通信。

(7)多态性是面向对象程序设计的重要支柱

多态性是指向不同对象发送同一消息,根据对象的类的不同而完成不同的行为。多态性通过继承的机制构造对象类的结果,由函数和运算符的重载及虚函数实现类的多态性。

以上是对面向对象这一概念的理解。下面通过一个例子形象地说明封装的概念。例如,街头上的早点小吃店,在一间小屋里或小亭子里,四周封闭,通过一个小窗口对外卖货。屋或亭内有油饼、豆浆等食品,另外,还具有制作上述部分食品的服务,如炸油饼、制作豆浆等,以及收钱找钱等服务。可以将小吃店看作一个封装体,这个被封装的“实体”对外服务只通过一个“窗口”,当买早点的人向它发出“买什么早点”、“买多少”的消息后,并将钱付给它,它就将所要的食品递出。把具有这类特点的服务统称为早点服务类,而某家小吃店看成为早点服务类的一个对象。

综上所述,面向对象这种方法具有三大特性:封装性、继承性和多态性。特别是前两大特性是不可缺少的。