一、什麼是對象
學好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、應用程序等待下一次事件
對初學者而言,理解面向對象編程對於以後進行程序設計是至關重要的,所以讀完這篇文章後請你認真回憶一下這幾個概念是否清楚——對象、事件、方法和事件過程。如果你還有什麼不明白的話,可以來信給我,我會盡力解答。->