專升本輔導第7章面向對象程序設計-PPT精選_第1頁
專升本輔導第7章面向對象程序設計-PPT精選_第2頁
專升本輔導第7章面向對象程序設計-PPT精選_第3頁
專升本輔導第7章面向對象程序設計-PPT精選_第4頁
專升本輔導第7章面向對象程序設計-PPT精選_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第7章 面向對象程序設計7.1 對象7.2 類7/24/2022Visual FoxPro 6.0在支持傳統(tǒng)的面向過程編程方法的基礎上,全面引入面向對象的程序設計方法。使得用戶通過面向對象的方法,可以設計出更加美觀的應用程序界面,開發(fā)出真正的關系數據庫應用程序。面向對象程序設計根本性地改變了早期FoxPro應用程序面向過程的開發(fā)方式,將重點放在了對象之間的聯系上,而不是具體實現的細節(jié)。面向對象程序設計通過代碼重用和繼承的方式,使用戶在設計程序時不再做大量的重復勞動,且將對象的細節(jié)隱藏起來,讓用戶將注意力集中在對象與系統(tǒng)其他部分的聯系上,這是面向過程的程序設計方法所不能做到的。7/24/2022

2、7.1 對象7.1.1 對象的屬性7.1.2 事件7.1.3 方法程序7.1.4 數據環(huán)境7.1.5 對象的引用 7/24/2022客觀世界里的任何實體都可以被看作是對象。對象可以是具體的物,也可以指某些概念。任何對象都具有自己的特征和行為。在面向對象程序設計中,所有事物都可以被抽象為對象,例如表單上的命令銨鈕是對象,表單本身也是一個對象。在VFP中,又將對象分為控件對象和容器對象兩種。對象建立以后,其操作就可以通過與對象有關的屬性、事件和方法來描述。7/24/20227.1.1 對象的屬性對象的屬性即對象的特征、性質,例如當描述一個命令按鈕時,可以用它所在位置、尺寸大小、顏色及它上面顯示的文

3、字的字體、字號等特征來形容,這些特征都可用屬性來表示。在VFP中,不同對象的屬性是不相同的,但有些屬性(如名稱、標題等屬性)是很多對象都具有的。7/24/20221對象的屬性窗口表單設計器打開后,只要選擇【顯示】菜單中的【屬性】命令或選擇“表單”快捷菜單中的【屬性】命令,即可打開如圖7.1所示的“屬性”窗口。該窗口能顯示當前對象的屬性、事件和方法程序,并允許用戶更改屬性、定義事件代碼和修改方法程序。屬性窗口自上至下依次包括對象組合框、選項卡、屬性設置框、屬性列表和屬性說明5個部分,各部分功能如下:7/24/2022(1)對象組合框:包括當前表單、表單集及全部控件的列表,用戶可在列表中選擇表單或

4、控件,這和在表單窗口選擇對象的效果是一致的。多個控件之間在這里是分多級顯示,以體現它們之間的父與子的關系。 7/24/2022(2)選項卡:共有5個,分別用來顯示對象的屬性、事件、方法程序等選項,選項按字母順序排列。各選項卡的作用如下: “全部”選項卡:列出全部屬性、事件和方法程序。 “數據”選項卡:列出顯示或操縱數據的屬性。 “方法程序”選項卡:列出方法程序與事件。方法程序與事件都是對象的程序,區(qū)別在于,帶Event后綴的選項是事件,否則就是方法程序。 “布局”選項卡:列出位置、大小等屬性。 “其他”選項卡:列出類信息和用戶自定義屬性。 7/24/2022除“全部”選項卡外的4個選項卡都是分

5、類選項卡,用戶既可在全部選項卡中查找所要的選項,也可在分類選項卡中查找選項。 7/24/2022(3)屬性設置框:可以是文本框或組合框,用于更改或設置對象的屬性值。在屬性設置框左側有3個按鈕的功能如下:確認按鈕:在屬性設置文本框中輸入屬性值后,單擊此按鈕可確認對屬性的更改,與按回車鍵等效。取消按鈕:當屬性設置文本框輸入屬性值,但還沒有確認時,單擊此按鈕可取消剛才的輸入值,并恢復以前的值。函數按鈕fx:單擊此按鈕可打開表達式生成器,用來設置一個表達式,該表達式的值將作為屬性值。對于用表達式設置的屬性,在屬性值之前將自動插入一個等號。 7/24/2022(4)屬性列表:屬性列表的每一行包含兩列內容

6、,即名字列和值列。用戶選擇某屬性后即可更改屬性值。更改過的屬性仍可恢復默認值,只要選擇該屬性后右單擊該屬性,在彈出的快捷菜單中選擇【重置為默認值】命令即可。需要注意的是,在屬性值列表中,以斜體字顯示的選項表表示只讀,用戶不能修改,用戶修改過的選項將以黑體顯示。7/24/2022(5)屬性說明信息:在屬性列表中選擇某屬性、事件或方法程序后,屬性窗口的底部即簡要地顯示它的意義。 7/24/20222常用的對象屬性不同的對象所具有的屬性也是不相同的,這也可從屬性的定義中體現出來,但是一些對象會有一些共性,表7.1列出了一些對象共有而且常用的屬性。 7/24/2022屬性說 明應用于Caption設置

7、對象的標題表單、標簽、命令按鈕等Name設置對象的名字(在程序中引用)任何對象Value設置控件當前狀態(tài)(取值)文本框、列表框等ForeColor設置對象中的前景色(文本和圖形顏色)表單、標簽、文本框、命令按鈕等BackColor設置對象內部的背景色表單、標簽、文本框、列表框等BackStyle設置對象背景是否透明標簽、文本框、圖像等AutoSize控件是否根據正文自動調整大小標簽框、單選按鈕組、復選框等Height指定對象在屏幕上的高度標簽框、文本框等Width指定對象在屏幕上的寬度標簽框、文本框等Top指定相對父對象最頂端所在的位置標簽框、文本框等Left指定相對父對象的左邊界標簽框、文本

8、框等FontName指定對象顯示文本的字體標簽框、文本框等FontSize指定對象顯示文本的字號標簽框、文本框等FontBold設置對象顯示文本是否粗體標簽框、文本框等Alignment控件正文水平對齊方式標簽框、文本框、復選框等AlwaysOnTop是否處于其他窗口之上表單AutoCenter是否在VFP主窗口內自動居中表單Closable標題欄中關閉按鈕是否有效表單Controlbox是否取消標題欄所有按鈕表單、工具欄MaxButton是否有最大化按鈕表單MinButton是否有最小化按鈕表單Movable運行時表單能否移動表單WindowState設置運行時是最大化或最小化表單Windo

9、wType用于控制表單是非模式表單還是模式表單表單AutoCloseTables表單釋放時是否關閉表或視圖,默認為.T.表單AutoOpenTables表單加載時是否關閉表或視圖,默認為.T.表單ShowTips當鼠標放在控件上時確定是否顯示工具提示表單、工具欄ShowWindow指定表單是一個頂層表單還是一個子表單表單Enabled指定控件是否可用表單、命令按鈕等Visible指定控件是否可見表單、命令按鈕等7/24/20227.1.2 事件事件是指可能會發(fā)生在對象上的事情,也即對對象所作的操作(或者系統(tǒng)對某個對象的操作)。如按鈕被單擊,對象被拖動、被改變大小、被雙擊等。一個對象可以有多個事

10、件,但是每個事件都是由系統(tǒng)預先規(guī)定的。一個事件對應于一個程序,即事件過程。7/24/20221事件觸發(fā)方式事件一旦被觸發(fā),系統(tǒng)馬上要去執(zhí)行與該事件對應的過程。等事件過程執(zhí)行結束后,系統(tǒng)又處于等待某事件發(fā)生的狀態(tài)。即事件包括事件過程和事件觸發(fā)方式兩個方面。事件過程的代碼應該事先編寫好。從表7.2列出的VFP系統(tǒng)常見的事件可看出事件的觸發(fā)方式分三種:(1)用戶觸發(fā):如單擊命令按鈕等。(2)系統(tǒng)觸發(fā):如計時器事件,將會自動按設定的時間間隔發(fā)生。(3)代碼觸發(fā):用代碼來調用事件過程。7/24/2022常用事件 事 件發(fā)生時機事 件發(fā)生時機Click單擊鼠標左鍵時GotFocus對象獲得焦點時DblCl

11、ick雙擊鼠標左鍵時Activate對象激活時DragDrop鼠標拖放時Init創(chuàng)建對象時RightClick單擊鼠標右鍵時Load表單被裝入內存時MouseUp釋放鼠標時Unload釋放對象時MouseDown按下鼠標鍵時InteractiveChange改變控件的值時KeyPress按下并釋放某鍵盤時Resize調整對象大小時DownClick單擊控件的上下箭頭時Timer在設置的時間間隔內發(fā)生Destroy釋放一個對象時Valid當一個控件失去聚焦時7/24/20222為事件編寫代碼事件代碼需在代碼編輯窗口中編寫,打開某對象代碼編輯窗口的方法有多種:(1)雙擊該對象。(2)選擇對象快捷菜

12、單中的【代碼】命令。(3)選中對象,選擇【顯示】菜單的【代碼】命令。以上方法均可彈出圖7.2所示的代碼編輯窗口。7/24/20227.1.3 方法程序方法程序又稱方法,是指對象所固有完成某種任務的功能,它是VFP為對象內定的通用過程,用戶可以在需要的時候調用,由于方法的代碼由VFP定義,所以對用戶是不可見的。方法程序與事件有相似之處,都是為了完成某個任務,但同一個事件可完成不同任務取決于用戶所編寫的代碼,而方法則是固定的,任何時候調用都是完成同一個任務。所以其中的代碼也不需要再編寫。表7.3列出了常用的方法。7/24/2022方法程序功 能Cls清除表單中的圖形和文本Clear清除組合框和列表

13、框控件中的內容Show把表單或表單集的Visible屬性設置為.T.,并使表單成為活動對象Hide通過把Visible屬性設置為.F.,隱藏表單、表單集或工具欄Move用于移動一個對象SetFocus為一個控件指定焦點,使其成為活動對象Box在表單對象上畫一個矩形Circle在表單對象上畫一個圓或橢圓Line在表單對象上繪制一條線Print在表單對象上打印一個字符串AddItem給組合框或列表框控件增加一個新數據項Refresh重畫表單或控件,并刷新所有的值Release從內存中釋放表單集或表單Quit結束一個VFP實例7/24/20227.1.4 數據環(huán)境1數據環(huán)境的概念數據環(huán)境是指在打開或

14、修改一個表單或報表時需要使用的數據源,包括打開的全部表、視圖和關系。數據環(huán)境及其中的表與視圖都是對象。數據環(huán)境一旦建立,當打開或運行表單時,其中的表或視圖即自動打開,與數據環(huán)境是否顯示無關;而在關閉或釋放表單時,表或視圖也能隨之關閉。7/24/20222數據環(huán)境設計器的使用數據環(huán)境設計器可用來可視化的創(chuàng)建或修改數據環(huán)境,可以從表單的快捷菜單中選擇【數據環(huán)境】命令,或者選擇【顯示】菜單的【數據環(huán)境】命令均可打開如圖7.3所示的“數據環(huán)境”設計器,在彈出的對話框中添加要使用的表或視圖。 7/24/20223數據環(huán)境菜單當數據環(huán)境設計器處于打開狀態(tài)時,會出現數據環(huán)境菜單,菜單中提供的幾個命令具有查看

15、和修改數據環(huán)境的功能,各命令選項功能如下:添加:用于向數據環(huán)境添加表或視圖。移去:移去選擇的表或視圖。瀏覽:瀏覽選擇的表或視圖。執(zhí)行表單:運行表單。7/24/20227.1.5 對象的引用在面向對象的程序設計中常常要引用對象,或引用對象的屬性、事件與調用方法程序。在引用對象時要遵循一定的規(guī)則,主要包括以下4個方面:(1)在程序代碼中一般用以下關鍵字開頭:ThisFormSet &表示當前表單集ThisForm &表示當前表單This &表示當前對象7/24/2022(2)引用格式一般在引用關鍵字后跟一個點號,表示從屬關系,再寫出被引用對象或者對象的屬性、事件或方法程序。例如:ThisForm.

16、Label1.Caption=標簽標題 ThisForm.cls7/24/2022(3)允許多級引用在應用程序中,多個對象之間有多級的從屬關系,引用時可提供對象的完整容器層次來引用(稱絕對引用),也可從當前層次來引用(稱相對引用)。以下是常用的引用格式:ThisFormSet.屬性名|事件|方法程序|對象名ThisForm. 屬性名|事件|方法程序|對象名This. 屬性名|事件|方法程序|對象名對象名. 屬性名|事件|方法程序7/24/2022(4)父調用父調用即控件引用包含它的容器控件。例如:This.Parent.BackColor=RGB(192,0,0)&將本對象的父對象的背景色設置

17、為暗紅色7/24/20227.2 類7.2.1 類的概念7.2.2 自定義類7.2.3 創(chuàng)建工具欄 7/24/20227.2.1 類的概念類是一組具有相同特性的對象的抽象的定義。它將屬性和方法統(tǒng)一起來,把具有相似特征和行為的對象形成一個結構。7/24/20221類與對象類和對象的關系密切,但并不相同。類包含了有關對象的特征和行為信息,它是對象的藍圖和框架。類是定義了對象特征以及對象外觀和行為的模板。比如,在表單控件工具欄中,每個按鈕都代表一個類,用其中某個按鈕在表單上創(chuàng)建的一個控件就是一個對象。類與對象存在如下關系:(1)類是對象的定義。類規(guī)定并提供了對象具有的屬性、事件和方法程序。(2)對象

18、通過類而產生。(3)對象是類的一個實例。7/24/20222基類與子類(1)基類基類是VFP系統(tǒng)預先定義的類,在如圖7.4所示的“新建類”對話框的“派生于”下拉列表框中,包含了全部基類,初始的表單控件工具欄中包含的類也是基類。7/24/2022(2)子類子類是指以某個類的定義為基礎創(chuàng)建的新類,子類所基于的類稱為父類。比如若要從基類創(chuàng)建出新類時,那么基類就是父類,新建類即為子類。子類將繼承父類的全部特征,包括對父類的所做的修改。7/24/2022(3)用戶自定義類用戶可以從基類派生出子類,即用戶自定義類;VFP還允許從用戶定義類派生出子類,也就是說用戶自定義類可以是子類,也可以是父類。用戶可以為

19、用戶自定義類設置屬性、編寫代碼與方法程序,也可創(chuàng)建新的屬性和方法程序。用戶還可以將自己定義的類添加到表單控件工具欄中。 7/24/2022(4)容器類和控件類VFP提供了兩大基類:容器類和控件類。容器類可以容納別的對象。如表單類中可以放命令按鈕、復選框按鈕、文本框控件等,因此表單可以看成一個容器類。控件類是可以包含在容器類中并由用戶派生的VFP基類。7/24/2022(5)類庫類庫可用來存儲以可視方式設計的類,其文件擴展名為.vcx。一個類庫通??扇菁{多個子類,這些子類允許由不同的基類派生。 7/24/20223類的特征類有如下特征,這些特征對提高代碼的可重用性和易維護性有很好用處。(1)封裝

20、性封裝的目的就是信息隱藏,把對象的內部代碼隱藏起來。用戶只需知道該對象具有什么功能以及如何使用該對象,而不必了解這些功能是如何實現的。封裝特性使得對代碼的修改和維護變得比以前更容易了,同時還可以很方便地利用提供的基本類庫來實現強大的功能。(2)繼承性繼承是面向對象程序設計技術中的一個重要的技術。它用來描述類之間的共同屬性,減少了相似類之間的重復說明;它體現了一般化及特殊化的原則。在面向對象程序設計中,繼承用以說明子類延用父類特征的能力。如果父類特征發(fā)生改變,則子類將繼承這些新特征。(3)多態(tài)性多態(tài)性是指不同的對象接收到相同的消息時,可以作出完全不同的解釋,進而生產完全不同的行為。利用多態(tài)性,應

21、用程序可以發(fā)送一般形式的消息,而將所有實現的細節(jié)留給接收消息的對象來解決。7/24/20227.2.2 自定義類VFP最強大的功能之一就是支持創(chuàng)建在應用程序中重復使用的類,用戶定義的類可添加到表單控件工具欄中。用戶自定義的類通常有以下功能:封裝通用功能:為通用功能創(chuàng)建自定義類,可以將它們的實例添加到表單中。例如表單關閉按鈕類、幫助按鈕類等。賦予應用程序統(tǒng)一的外觀和風格:比如創(chuàng)建了獨特外觀的文本框類,便可在應用程序所有需要文本框的地方都使用這個類。7/24/20221創(chuàng)建用戶自定義類下面通過一個實例講述創(chuàng)建用戶自定義類的步驟?!纠?.1】使用類設計器創(chuàng)建一個用戶自定義類,類名為“記錄指針移動類”

22、?;悶槊畎粹o組,存儲到c: Program Files Microsoft Visual Studiovfp98commandgroup1.vcx類庫中。操作步驟如下:(1)執(zhí)行【文件】菜單中的【新建】命令,彈出“新建”對話框,選擇“類”單選按鈕,彈出如圖7.5所示的“新建類”對話框;7/24/2022(2)在“新建類”對話框中指定新建類的類庫、基類與類名。在“類名”文本框用于指定類名;“派生于”下拉列表框用于指定新生成類的基類;“存儲于”文本框用于指定新類庫名或已有類庫的名字,類庫名可包含路徑,若未指出路徑表示使用默認路徑。7/24/2022(3)指定各項內容后,單擊【確定】按鈕,打開如

23、圖7.6所示的“類設計器”窗口。7/24/2022(4)通過表單設計器控件工具欄添加相應的控件,設計相應的屬性與事件代碼。本例中添加五個命令按鈕。(5)屬性設置: “記錄指針移動類”的ButtonCount屬性值設置為:5五個命令按鈕的標題Caption屬性分別設置為:第一個記錄、前一個記錄、后一個記錄、最后一個記錄、退出。如圖7.7所示。7/24/2022 “第一個記錄”按鈕Command1的Click事件代碼為:go topThis.Parent.Command2.Enabled=.F.This.Parent.Command3.Enabled=.T.This.Parent.Command4

24、.Enabled=.T.This.Parent.Command5.Enabled=.T.ThisForm.Refresh7/24/2022 “前一個記錄”按鈕Command2的Click事件代碼為:skip 1if bof() =MessageBox(已是第一個記錄!,48,信息窗口) This.Enabled=.F.This.Parent.Command1.Enabled=.F.Else This.Enabled=.T.This.Parent.Command1.Enabled=.T.EndifThis.Parent.Command3.Enabled=.T.This.Parent.Comman

25、d4.Enabled=.T.This.Parent.Command5.Enabled=.T.ThisForm.Refresh7/24/2022 “后一個記錄”按鈕Command3的Click事件代碼為:skipif eof() =MessageBox(已是最后一個記錄!,48,信息窗口) skip -1 This.Enabled=.F.This.Parent.Command4.Enabled=.F.Else This.Enabled=.T.This.Parent.Command4.Enabled=.T.EndifThis.Parent.Command1.Enabled=.T.This.Pare

26、nt.Command2.Enabled=.T.This.Parent.Command5.Enabled=.T.ThisForm.Refresh7/24/2022 “最后一個記錄”按鈕Command4的Click事件代碼為:go bottomThis.Parent.Command1.Enabled=.T.This.Parent.Command2.Enabled=.T.This.Parent.Command3.Enabled=.F.This.Parent.Command5.Enabled=.T.ThisForm.Refresh7/24/2022 “退出”按鈕Command5的Click事件代碼為:

27、ThisForm.Release7/24/20222將類添加到工具欄用戶自定義類完成后,即可以將其添加到表單控件工具欄中,然后通過使用該工具欄中的“查看類”按鈕來打開定義的類。 7/24/2022操作步驟:(1)選擇【文件】菜單中的【新建】命令,打開“新建”對話框選擇“表單”單選按鈕,單擊【新建文件】按鈕,新建一表單,如圖7.8所示。7/24/2022(2)在“表單控件”工具欄上單擊【查看類】按鈕,在彈出的菜單中選擇【添加】命令,然后在彈出的“打開”對話框中指定要添加的可視類庫的文件名,如圖7.9所示。單擊【打開】按鈕,則打開表單控件工具欄如圖7.10所示。7/24/2022(3)單擊新添加的

28、“記錄指針移動類”按鈕,在表單中創(chuàng)建“記錄指針移動類1”控件。結果如圖7.11所示。7/24/2022新添加類按鈕7/24/20223. 類的編輯在VFP中,用戶可以修改用戶自定義的類,也可以刪除類庫中的類,或刪除類庫。(1)修改用戶自定義的類若要為用戶自定義的類設置屬性,編寫事件代碼或方法程序代碼,或者是創(chuàng)建新的屬性或方法程序,都必須打開類設計器來實現。要打開類設計器,只要打開一個可視類庫,并選擇其中的一個類即可。7/24/2022【例7.3】修改【例7.1】中創(chuàng)建的“記錄指針移動類”。操作步驟如下:執(zhí)行【文件】菜單的【打開】命令,在“打開”對話框的文件類型列表框中選擇可視類,從中選擇類庫名

29、Commandgroup1.vcx,單擊【確定】按鈕。在彈出的“打開”對話框中右邊的列表框中選擇要修改的類“記錄指針移動類”,單擊【打開】按鈕。在彈出的“類設計器”窗口中,選擇要修改內容的按鈕后,利用屬性窗口修改相應的內容。關閉類設計器窗口,選擇保存修改。7/24/2022(2)刪除類庫中的一個類一個類庫文件中可以包含多個類,要刪除類庫中的某個類,可以用以下方法:使用命令:REMOVE CLASS OF 在項目管理器的“類”選項卡中選擇指定類庫中的一個類,單擊【移去】按鈕即可。7/24/2022(3)刪除類庫要刪除類庫只要將指定的類庫文件刪除即可。7/24/20224為字段設置類要在表單上創(chuàng)建

30、控件有兩種方法,一種是直接在表單控件工具欄上選擇控件后,在表單上單擊即可。另一種方法就是在數據環(huán)境中拖動有關的字段到表單設計器窗口來產生控件。數據庫表的每一個字段從數據環(huán)境拖動到表單后會自動生成一個控件,如將XSK表的姓名字段拖動到表單上會默認產生一個文本框,除使用默認控件外,用戶還可以通過設置產生其它控件。這些設置是在數據庫“表設計器”窗口通過為字段指定類庫和類實現的。7/24/2022【例7.4】設計XSK表的結構,使得將XSK表的獎學金字段拖動到表單上后產生微調控件。操作步驟:(1)在項目管理器窗口的“數據”選項卡中選擇XSK表,然后單擊右側的【修改】按鈕,打開“表設計器”窗口,如圖7.12所示。7/24/2022(2)在字段選項卡中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論