
2.2.2 面向对象的基本概念
系统开发是一个问题求解的过程,开发软件系统的目的就是解决某个(或某一组)特定的问题领域中的问题。所谓问题领域,就是指软件系统所模拟的真实世界中的系统,如银行的自动存取款系统、学校的学籍管理系统、制造企业的生产管理系统等。
1.对象
对象是指要研究的任何事物。从一辆车到一个车库,从一条信息到一个数据库,甚至航天飞机或空间站都可看作对象。对象不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象是由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成的一个独立封装体。从程序设计者的角度看,对象是一个程序模块;从用户的角度看,对象为他们提供相应的功能。对对象的操作通常称为方法。一个对象请求另一个对象为其服务的方式是发送消息。
2.类
类是对象的模板,即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象;对象则是类的具体化,是类的实例,类的层次图如图2-2所示。

类

图2-2 类的层次图
3.消息
消息是对象之间进行通信的一种规格说明,其一般由3个部分组成,即接收消息的对象、消息名及传递的数据。
4.封装
封装是一种信息隐蔽技术,它体现为类的说明,是对象的重要特性。封装是将数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块功能,使用户只能见到对象的外部特性(对象能接收哪些消息,具有哪些处理能力),而无法知道对象的内部特性(保存内部状态的私有数据和实现加工能力的算法)。封装的目的在于把对象的设计者和对象的使用者分开,使用者不必知晓行为实现的细节,只需用设计者提供的消息来访问该对象。

封装、继承性和多态性
5.继承性
继承性是子类自动共享父类数据和方法的机制,它由类的派生功能体现。一个类可直接继承其他类的全部描述,还可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一个父类)和多重继承(一个子类有多个父类)。类的对象是各自封闭的,如果没有继承性机制,则类的对象中的数据、方法就会出现大量重复。继承不仅支持系统的可重用性,还促进系统的可扩充性。
6.多态性
多态性对象可根据所接收的消息做出动作。同一消息被不同的对象接收时可产生完全不同的行动,这种现象称为多态性。利用多态性,用户可发送一个通用消息,而将所有的实现细节都留给接收消息的对象自行决定,如此,同一消息即可调用不同的方法。例如,Print消息被发送给一张图或表时调用的打印方法与将同样的Print消息发送给一份正文文件而调用的打印方法完全不同。多态性的实现会受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在面向对象编程语言(Object-Oriented Programming Language,OOPL)中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。