一个对象就是变量和相关的方法的集合,其中变量表明对?的状态,方法表明对象所 具有的行为,下图表示了一个对象的特征:
从图中可以看出,一个对象的变量构成这个对象的核心,包 在它外面的方法使这个 对象和其它对象分离开来。例如:我们可以把汽车抽象为一个 象,用变量来表示它当前的 状态,如速度、油量、型号、所处的位置等,它的行为则可以有 ?速、刹车、换挡等。我 们操纵汽车时,不用去考虑汽车内部各个零件如何运作的细节, ?只需根据汽车可能的行 为使用相应的方法即可。实际上,面向对象的程序设计实现了 对象的封装,使我们不必 关心对象的行为是如何实现的这样一些细节。通过对对象的? 装,实现了模块化和信息隐 藏,有利于程序的可移植性和安全性,同时也利于对复杂对象的 ?理。
对象之间必须要进行交互来实现复杂的行为。例如,要使? 车加速,必须发给它一个 消息,告诉它进行何种动作(这里是加速)以及实现这种动作所? 的参数(这里是需要达到的 速度等)。下图表示了对象A与对象B间的消息传递过程。
从图中可以看出,一个消息包含三个方面的内容:
● 消息的接收者
● 接收对象应采用的方法
● 方法所需要的参数。
同时,接收消息的对象在执行相应的方法后,可能会给发送 息的对象返回一些信息 (如上例中,汽车的仪表上会出现已经达到的速度等)。 由于任何一个对象的所有行为都可以用方法来描述,通过? 息机制就可以完全实现对 象之间的交互,同时,处于不同处理过程甚至不同主机的对象间 ?可以通过消息实现交互 。
上面所说的对象是一个具体的事物,例如每辆汽车都是一? 不同的对象。但是多个对 象常常具有一些共性,如所有的汽车都有轮子、方向盘、常具 一些共性,如所有的汽车 都有轮子、方向盘、刹车装置等。于是我们抽象出一类对象? 共性,这就是类。类中定义 一类对象共有的变量和方法。把一个类实例化即生成该类的? 个对象。比如我们可以定 义一个汽车类来描述所有汽车的共性。通过类的定义人们可? 实现代码的复用。我们不 用去描述每一个对象(如某辆汽车),而是通过创建类(如汽车类) ?一个实例来创建该类的一 个对象,这大大减化了软件的设计。