对象的交换
这里,我们要介绍两个概念:消息方法.
现实世界中的对象不是孤立存在的实体,它们之间存在着各种各样的联系,正是它们之间的互相作用,联系和连接,才构成了世间各种不同的系统.同样,在面向对象程序设计中,对象之间也需要联系,我们称为对象的交换.面向对象程序设计技术必须提供一种机制,允许一个对象与另一个对象的交互.这种机制叫消息传递.
在面向对象程序设计中的消息传递,实际是对现实世界中的信息传递的直接模拟.以实际生活为例,我们每一个人可以为他人服务,也可以要求他人为自己服务.当我们需要别人为自己服务时,必须告诉他们我们需要的是什么服务,也就是说,要向其它对象提出请求,其他对象接到请求后,才会提供相应的服务.
在面向对象程序设计中,一个对象向另一个对象发出的请求被称为"消息".消息是以个对象要求另一个对象执行某个功能操作的规格说明,通过消息传递才能完成对象之间的相互请求或相互协作.例如,我们有一个银行账户对象和易个顾客对象,顾客对象可以请求银行账户对象的服务,如"存入300元","取出200元"等,当银行账户对象接到请求后,确定应执行的相应的操作并执行.
在此,我们有必要介绍一下方法的概念.方法是面向对象程序设计中的一个术语.我们知道,属于一个类的对象具有相同的行为,当某个行为作用在对象时,我们就称对象执行了一个方法.方法定义了一系列的计算步骤.所以,我们可以说一个对象请求另一个对象执行一个特定的方法,或者说一个对象发送一个消息给另一个对象,引起那个对象方法的执行.从这个意义上看,对象的行为是负责响应消息并进行操作.
一般情况下,我们称发送消息的对象为发送者或者请求者,接收消息的对象为接收者或目标对象.对象中的联系只能通过消息传递来进行.接受者只有在接收到消息时,才能被激活,被激活的对象会根据消息的要求完成相应的功能.
消息具有三个性质:
1. 同一个对象可以接收不同形式的多个消息,做出不同的相应;
2. 相同形式的消息可以传递给不同的对象,所做出的响应可以是不同的;
3. 接收对象对消息的响应并不是必须的,对象可以响应消息,也可以不响应.
实际上,对象之间的消息传递机制对应于面向过程程序设计的过程调用.消息传递并非正的传递信息,它的实质就是方法的调用.只不过方法的调用受到消息的控制,而过程调用是直接的.
消息的内容一般应包括接受者的名字,请求的方法,一个或多个参数.
由发送者向接收者发送一条消息,就是要求调用特定的方法.所调用的方法可能引起对象状态的改变,还可能会生成更多的消息,而导致调用其他对象中的方法.
在面向对象程序设计中,消息分为两类:公有消息和私有消息.假设有一批消息同属于一个对象,其中一部分消息是由其他对象直接向它发送的,称为公有消息;另一部分消息是它向自己发送的,称为私有消息.
公有消息与私有消息的确定,与消息要求调用的方法有关.如果被调用的方法在对象所属的类中是在public下说明的,则为公有;是在private下面说明的吗,即为私有.当然,私有消息只能发送调用属于它自己的方法
例如,一个银行账户对象的类定义是BankAccount,一个顾客对象可以发送一个公有消息WithDraw给银行账户对象,要求取款,这个消息是公有消息.
|