一。對象:
vfp既支持面向過程的結構化程序設計方法,也支持面向對象的由事件驅動的程序設計方法。傳統的面向過程的結構化設計方法,是一種面向數據處理過程來編制程序代碼的方法,由這種方法編制的程序被稱作結構化程序。結構程序是一種線性結構程序,啟動后從頭到尾順序執行,直至完成。采用結構化方法編制程序,主要有兩個缺點:一是程序設計人員需用大量時間去設計輸入和輸出界面,而設計出來的界面雙很取得和視窗操作系統一樣漂亮的界面;三是這種程序在執行過程中一直獨占計算機的各種資源,難于實現多任務操作。前面課程,我們舉出的例程,大部分是面向過程的結構化程序。
而面向對象的由事件驅動程序設計思想,是將數據處理由面向過程,轉為面向對象,并采用事件驅動程序的執行過程。這種新的程序設計方法的優點是:簡化程序界面設計和實現多任務操作,從而提高計算機的使用和軟件開發的效率。面向對象的設計方法是程序設計技術的一次變革,是當今軟件開發的主流技術,大家應該盡快學習并掌握這門技術。要全面理解和掌握這門技術,首先應從類與對象開始。
面向對象的設計方法是按照人們習慣的思維方式建立模型,模擬客觀世界。客觀是由一系列的具有動作的對象構成的,一個復雜的對象還可能包含若干個簡單的對象,每個對象都具有一定的性質,并且執行一些操作和對應的動作。例如,日常生活中的氣球這個對象,可以看到的性質有氣球的形狀和顏色,可以有上升和下降的動作,另外氣球對充氣及放氣的響應是形狀變大和縮小。對象所具有的性質稱為對象的屬性;對象所執行的一些操作被稱為對象的方法;對象所對應的動作稱為對象的事件。對象之間通過消息進行聯系。
vfp應用程序的界面一般是由表單,菜單和各種控件等對象構成,各個對象之間的聯系完全取決于用戶所做的操作。即程序的運行沒有固定的順序。vfp采用事件驅動方式,通過編寫"事件"的程序代碼,為對象規定了被某個"事件"激活時對應的動作以及所要進行處理的具體內容,由各個對象編寫的事件代碼集合在一起,就構成了應用程序。
Visual FoxPro基礎教程完整版回頭看第一章的第一個示例,如圖1
程序界面由1個表單,2個標簽,2個文本框和1個命令按鈕組成,這些都是對象。用鼠標單擊"計算"按鈕,就產生了該命令按鈕的click事件,它的click事件中的程序被執行。具體的代碼如下:
r=thisform.text1.value
thisform.text2.value=3.14159*r*r
thisform.refresh事件中的代碼一般是由若干個語句組成的一段程序,這里僅需計算圓的面積并將結果在文本框中顯示出來,所以僅用3條代碼即可。語句中的value是文本框的一個屬性,通過該屬性可得到用戶在文本框中輸入的值。將值賦給該屬性,就能在該文本框中顯示出這個值。
二。類(class)、基類(bassclass)及子類:
1.類:工廠里使用一種模具可以生產許多同種類的產品,類就是生成對象的模具,使用一個類也就可以快速在應用程序中創建同種類的許多對象。類是對象外觀和行為的模板,對象是類的一個實例。類是一個抽象的概念,對象是一個具體的東西。例如,"汽車"可看作是一個類,它包含了汽車這個類的共同特征(比如:型號、發動機排量、外觀尺寸、顏色等).對對于"奔馳"是汽車這個類的一個具體實例。
2.基類:vfp中,為了實現常用功能,系統提供了一些類,稱為基類,子類是用戶在已有的類的基礎上進行修改并加入新的特性而形成的類。子類所依托的類稱為父類。
系統提供的基類工具欄如圖2所示,
當我們新建或修改一個表單時,會打開"表單設計器",該工具欄會自動打開,該工具欄上的每一個按鈕對應一個系統基類,見下表,我們單擊該工具欄上的某個按鈕,在表單上畫出一個控件,實際上就是依據該基類創建了一個對象。
名稱 | 基類名 | 是否容器 |
表單 | form | 是 |
標簽 | label | 不是 |
文本框 | textbox | 不是 |
編輯框 | editbox | 不是 |
命令按鈕 | commandbutton | 不是 |
命令按鈕組 | commandgroup | 是 |
單選按鈕組 | optiongroup | 是 |
檢查框 | check1 | 不是 |
列表框 | listbox | 不是 |
復選框 | combobox | 不是 |
微調按鈕 | spinner | 不是 |
表格 | grid | 是 |
圖像 | image | 不是 |
定時器 | timer | 不是 |
頁框 | pageframe | 是 |
線條 | line | 不是 |
形狀 | shape | 不是 |
容器 | container | 是 |
3.基類的分類:vfp的基類可分為容器類和控件類兩大類。
(1).容器類:容器類是可以包含其他害的基類,將容器類加入表單后,無論在設計還是在運行時,既可以將容器類的對象作為一個整體進行操作,也可以分別對其中所包含的對象進行處理。
(2).控件類:控件類是可以包含在容器類的類。控件類的封裝比容器類更加嚴密,但也因此喪失了一些靈活性。控件類不能作為其他對象的父對象。