一、什么是对象
学好VB的诀窍之一就是要以“对象”的眼光去看待整个程序设计。“对象”是面向对象程序设计的核心,明确这个概念对理解面向对象程序设计来说至关重要。那么,对象是什么?在程序中怎么没有看到对象呢?
其实对象在VB的程序设计中的地位,就像空气一样无处不在。以上一篇文章中的应用程序为例,程序中使用的按钮就是对象,应用程序本身也是一个对象。
对象的概念并不神秘,它的来源就在生活之中。在现实生活中,其实我们随时随地都在和对象打交道——我们骑的车、看的书以及我们自己,在一个VB程序员眼中无一例外都是对象。
如果把问题抽象一下,会发现这些现实生活中的对象有两个共同的特点:第一,它们都有自己的状态,例如一个球有自己的质地、颜色、大小;第二、它们都具有自己的行为,比如一个球可以滚动、停止或旋转。在面向对象的程序设计中,对象的概念就是对现实世界中对象的模型化,它是代码和数据的组合,同样具有自己的状态和行为。只不过在这里对象的状态用数据来表示,称为对象的属性;而对象的行为用对象中的代码来实现,称为对象的方法。不同的对象有不同的方法,当然也不排除有部分重叠。
以上篇文章为例,你的第一应用程序中有如下的对象:窗体(Form),标签(Labels),文本框(Textboxes)。
在你的第一个应用程序中,你对fTxt和cTxt这两个文本框进行编码,使你在按下回车键后,能完成摄氏和华氏的互换。这个互换我们称之为过程,也就是在这里说的行为。这个行为是通过按回车引发(当然你也可以换成其它键,只要在程序代码中将keyascii的数字换一下就行了),这个按键动作我们称之为事件,它是能被对象所识别的动作,一个对象可以有很多事件,例如鼠标单击或双击、对象失去焦点或得到焦点等。而实现这个过程的代码我们称之为方法,方法决定了对象可以进行的动作,它的内容是不见的。
概而言之,编VB程序就是首先根据你的需要放置对象,设置对象的属性,然后为你所想要的对象事件编制过程,通过过程完成你预期的目的。因此可以这样说,VB程序是由“事件驱动”的,“事件驱动”的意思是说只有在事件发生时,程序才会运行。在没有事件的时候,整个程序是处于停滞状态的,这一点和DOS程序有极大的差别。在VB设计程序中,在程序中流动的不是数据而是事件。如果说属性决定了对象的外观,方法决定了对象的行为,那么事件就决定了对象之间联系的手段。
二、VB的对象如何识别事件
用户不必关心所使用的对象需要响应的事件类型,因为VB的每一个窗体和控件都有一个预定义的事件集,它们能够自动识别属于事件集中的事件。对象所识别的事件类型多种多样,但多数类型为大多数控件所共有。例如一个命令按钮和窗体都有可以对Click,Dblick(双击)这样的事件做出响应。而某些事件只可能发生在某些对象上。
相同事件发生在不同对象上所得到的反应是不一样的,造成这种差异是“事件过程”的缘故。每个对象对每个可以识别的事件都有一个“事件过程”,当事件过程不同时,对事件所表现出来的反应自然也会不同。例如在你的第一个应用程序中,在fTxt中按回车是将华氏转换成摄氏,而在cTxt中按回车则将摄氏转换成华氏。
三、事件驱动的真实工作过程
在VB程序设计中,最基本的设计机制就是改变对象的属性、使用对象的方法和为对象事件编写事件过程。虽然对象可以自动识别事件,但是如果没有必要的话,用户不必为所有的事件都编写事件过程,Windows系统会以默认的方式来处理事件。当用户觉得在程序中不需要对一个事件进行额外的处理时可以不去理会它。使用VB编程的妙处就在于,只有当用户要以某种特定的方式响应某个事件时,才需要编写针对这个事件的事件过程。
下面列出了事件驱动应用程序中的典型事件序列:
1、启动应用程序,装载和显示窗体,产生Form_Load和Form_Show事件
2、窗体或窗体上的控件接收事件,事件可由用户引发(例如键盘或鼠标操作),可由系统引发(例如定时器事件),也可由代码间接引发(例如当代码装载其他窗体时产生的Load事件)
3、如果在相应的事件过程中存在代码,就执行代码
4、应用程序等待下一次事件
对初学者而言,理解面向对象编程对于以后进行程序设计是至关重要的,所以读完这篇文章后请你认真回忆一下这几个概念是否清楚——对象、事件、方法和事件过程。如果你还有什么不明白的话,可以来信给我,我会尽力解答。