




已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章 對象模型和事件模型,2,VFP支持兩種開發(fā)模型:面向過程和面向?qū)ο?結(jié)構(gòu)化程序設(shè)計(面向過程) 本質(zhì):功能設(shè)計(以功能為主進(jìn)行設(shè)計) 方法:自頂向下、功能分解。 優(yōu)點(diǎn):系統(tǒng)結(jié)構(gòu)性強(qiáng)、便于設(shè)計和理解 缺點(diǎn):但各模塊間關(guān)系緊密,一旦功能需求變動導(dǎo)致維護(hù)困難,6.1 面向?qū)ο蟮某绦蛟O(shè)計概述,3,6.1.1 面向?qū)ο蟮某绦蛟O(shè)計方法(OOP) 方法:把世間萬物都看成對象。從內(nèi)部結(jié)構(gòu)上模擬客觀世界。 每個對象都有自己的屬性和方法。能對消息做出反應(yīng)。 程序就是一組對象,對象之間通過發(fā)送消息互相通知做什么。,6.1 面向?qū)ο蟮某绦蛟O(shè)計概述,4,面向過程和面向?qū)ο蟮膮^(qū)別: 以計算機(jī)模擬貓捉老鼠的過程為例。 面向過程的做法: 程序員必須通過編程告訴計算機(jī)貓抓老鼠的每一個具體動作,如匍匐,加速,咬住等動作。 面向?qū)ο蟮淖龇ǎ?程序員給貓發(fā)一個消息“老鼠出現(xiàn)了” 。貓就會自動去抓老鼠。 貓如何抓老鼠的動作還是得由程序員編碼來實(shí)現(xiàn),只不 過代碼的組織方式大不相同。面向?qū)ο蟮姆椒ǜ先?的思維習(xí)慣。,6.1 面向?qū)ο蟮某绦蛟O(shè)計概述,5,6.1.2 類和對象,6.1.2 類和對象的區(qū)別 類(CLASS,類型):定義了對象特征以及對象外觀和行為的模板,它刻劃了一組具有共同特性的對象。 對象:是類的一個實(shí)例 OOP中,程序由一個或多個類組成,在程序運(yùn)行時視需要創(chuàng)建該類的各個對象(實(shí)例) 類是靜態(tài)概念,對象是動態(tài)概念 對象是基于某種類所創(chuàng)建的實(shí)例,包括了數(shù)據(jù)和過程。 例:貓可以定義為一個類,具有顏色,品種屬性,具有 抓老鼠的方法。 某個貓對象:白色波斯貓。,6.1 面向?qū)ο蟮某绦蛟O(shè)計概述,6,1. 類 基類:VFP系統(tǒng)提供的內(nèi)部定義的類,可提供給用戶用于自定義類的基礎(chǔ)(例如:表單、控件) 子類:是以其它類定義為起點(diǎn),為某一種對象所建立的新類。子類將繼承任何對父類所做的修改,6.1 面向?qū)ο蟮某绦蛟O(shè)計概述,7,對象(Object) 每個對象都具有屬性及與之相關(guān)的事件和方法,6.1 面向?qū)ο蟮某绦蛟O(shè)計概述,8,屬性(Property) : 定義對象的特征 對象的屬性由對象所基于的類決定 如貓的顏色,品種 方法(Method) :是對象能夠執(zhí)行的一個操作 方法是與對象相關(guān)聯(lián)的過程,也稱方法程序 方法可由用戶自己創(chuàng)建 例:SetColor()設(shè)置貓的顏色。(主人將它染發(fā)了) 事件(Event) :對象可對該事件做出反應(yīng) 可編寫相應(yīng)的代碼,對動作進(jìn)行響應(yīng) 事件可由用戶的動作、程序代碼或系統(tǒng)產(chǎn)生 例:對于老鼠出現(xiàn)這個事件,貓能做出反應(yīng)。,6.1 面向?qū)ο蟮某绦蛟O(shè)計概述,9,6.2 基 類,VFP 基類,派生,子類,子類,子類,10,6.2.1 VFP的基類,VFP提供的所有基類見p151 表5-1 說明: 該表中加*部分的類,只能使用,不能為它們創(chuàng)建子類。 基類可以分為容器類和控件類兩種類型。 容器類,見表5-2,其余的都是控件類。,11,基類的最小事件集(重要),激發(fā)順序一般為:Init Error Destroy,12,基類的最小屬性集,13,容器類(Container classes)是包容其他類的基類 容器可以包含其它對象 容器可以作為所包含的對象的父對象 允許訪問包含的對象 控件類(Control classes)是可以包含在容器類中的基類 控件對象可以包含在容器中 不能作為其它對象的父對象 VFP的對象可分為容器對象和控件對象,6.2.2 容器類與控件類,14,6.3.1 引用對象 6.3.2 設(shè)置對象的屬性 6.3.3 調(diào)用對象的方法程序 6.3.4 對象對事件的響應(yīng),6.3 處理對象,15,6.3.1 引用對象,何時要引用對象 當(dāng)要設(shè)置或取得對象的某個屬性的值時 當(dāng)要執(zhí)行對象的某個方法事件時 容器層次體系 容器與容器中的控件是上下層次的關(guān)系 一個應(yīng)用程序的最高層次是 _screen或_VFP,最低層次是一個非容器類控件或是一個不包含任何控件的容器類控件 例如:_screen.caption=“我的表單”,6.3 處理對象,16,層次體系示意圖,表 單 集,表 單,容 器,控 件,17,表單集“表單集1”(該對象的Name屬性為FormSet1)中包含2個表單“Form1”和“Form2”;表單“Form1”中包含2個文本框、1個選項(xiàng)按鈕組、1個頁框;頁框中包含2個選項(xiàng)卡式頁面Page1和Page2;頁面“Page1”中包含1個表格“Grid1”;表格中包含2個列控件對象;列控件又包括標(biāo)頭和文本框控件。,18,絕對引用 從容器的最高層次引用對象,給出對象的絕對地址 例:引用表單Form1對象:FormSet1.Form1 引用表格的第一列中的文本框Text1對象: FormSet1.Form1.Pageframe1.Page1.Grid1.Column1.Text1 相對引用 在容器層次中相對于某個容器層次的引用 相對引用通常運(yùn)用于某個對象的事件處理代碼或方法程序代碼中,即在某個容器對象的事件處理代碼或方法程序中對所包容的對象的引用,引用時可以直接使用其對象名 相對引用時,所涉及到的一些關(guān)鍵字(P153表5-5) 類似于文件系統(tǒng)中的絕對路徑和相對路徑,19,相對引用對象時所用的關(guān)鍵字(重要),20,6.3.2 設(shè)置對象屬性,每個對象都有屬性,可以為對象設(shè)置屬性 屬性可以在設(shè)計時設(shè)置也可在運(yùn)行時設(shè)置(如caption) 設(shè)計時修改屬性在“屬性”窗口中進(jìn)行 程序代碼中,用以下語法進(jìn)行設(shè)置 對象名稱 . 屬性 = 值 例:絕對引用 FormSet1.Form1.Text1.Value=DATE() FormSet1.Form1.Text1.ForeColor=RGB(0,0,0)黑 FormSet1.Form1.Text1.FontName=“黑體”,21,引用一個對象的多個屬性和方法(重要) 如:with formset1.form1.text1 .Value=DATE() .ForeColor=RGB(0,0,0) .BackColor=RGB(192,192,192) .FontName=“黑體” endwith 引用容器中的多個對象 如:With Thisform .txtXh.backcolor=rgb(128,0,0) .txtXm.backcolor=rgb(0,128,0) Endwith,22,6.3.3 調(diào)用對象的方法程序,方法程序是對象能夠執(zhí)行的一個操作,是和對象相聯(lián)系的過程 調(diào)用語法 . 例1.釋放表單:Thisform.release 例2.顯示表單Form1,并將焦點(diǎn)設(shè)置在文本框Text2上: FormSet1.Form1.show FormSet1.Form1.Text2.SetFocus 有返回值的方法程序以圓括號結(jié)尾,23,6.3.4 對象對事件的響應(yīng),事件是對對象識別的一個動作,可以編寫相應(yīng)的代碼對此動作進(jìn)行響應(yīng) 用戶不能用其他的程序設(shè)計方法產(chǎn)生其事件,但可以調(diào)用與這些事件相關(guān)的過程 常用的事件類 鼠標(biāo)事件 鍵盤事件 表單事件 控件焦點(diǎn)事件 數(shù)據(jù)環(huán)境事件 常用事件和方法的詳細(xì)講解留到設(shè)計表單時再講。,24,6.4 相關(guān)事件,核心事件集(表5-6),6.4.1 核心事件,這些事件適用于大多數(shù)的對象(控件),25,表6-6 核心事件集,26,6.4 相關(guān)事件,問題:容器和它包含的控件都設(shè)置了某事件的響應(yīng)代碼,系統(tǒng)如何處理這個事件。 為控件編寫事件的處理代碼時,應(yīng)注意兩條原則: (1)容器不處理與所包含的控件相關(guān)聯(lián)的事件 (2)如果沒有與控件相關(guān)聯(lián)的事件代碼,Visual FoxPro將在類層次的更高層上檢查是否有與此事件相關(guān)聯(lián)的控件代碼,6.4. 2 容器層次事件和類層次中的事件,27,6.4 相關(guān)事件,6.4. 2 容器層次事件和類層次中的事件,例外:對于選項(xiàng)按鈕組與命令按鈕組來說,組中個別按鈕如果沒有編寫事件處理代碼,則當(dāng)事件發(fā)生時將執(zhí)行組事件的處理代碼。例如,在如圖6-4所示的表單中有一個選項(xiàng)按鈕組(設(shè)置Click事件處理代碼),該選項(xiàng)按鈕組中有二個選項(xiàng)按鈕(選項(xiàng)按鈕Option1有Click事件處理代碼而選項(xiàng)按鈕Option2無Click事件處理代碼),則當(dāng)用戶單擊Option1時執(zhí)行與之相關(guān)聯(lián)的事件代碼,不執(zhí)行按鈕組的Click事件處理代碼,但當(dāng)用戶單擊Option2時執(zhí)行按鈕組的Click事件處理代碼。 (p128 圖6-4 按鈕組中的事件代碼.scx),28,6.4 相關(guān)事件,問題:程序的運(yùn)行伴隨著一系列的事件的產(chǎn)生。如何查看這些事件的發(fā)生順序。 P156 表5-7 vfp中事件順序,交互事件未列出 *對于表單,事件的激發(fā)順序?yàn)椋?Load Init Activate Destroy Unload,6.4. 3 事件激發(fā)的順序,29,6.4.4 常用的事件,鼠標(biāo)事件 MouseMove事件 Click事件 RightClick事件 DblClick事件,30,2. 鍵盤事件,KeyPress事件,31,3. 改變控件內(nèi)容的事件,InteractiveChange事件 在使用鼠標(biāo)或鍵盤更改控件的值時發(fā)生,32,4. 焦點(diǎn)事件,焦點(diǎn)(Focus)用以指出當(dāng)前被操作的對象 GotFocus事件 用任何方法使對象接受到焦點(diǎn)時發(fā)生 PROCEDURE Object.GotFocus LPARAMETERS nIndex LostFocus事件 當(dāng)某個對象失去焦點(diǎn)時發(fā)生,33,5. 表單事件,Load事件(表單和表單集) 創(chuàng)建對象之前發(fā)生 Load事件發(fā)生在Activate和GotFocus事件之前 UnLoad事件(表單和表單集) 在對象被釋放時發(fā)生 Unload事件發(fā)生在Destroy事件和所有包含的對象被釋放之后,34,7. 其他事件,Timer事件 (用于計時器控件) 當(dāng)經(jīng)過Interval屬性中指定的毫秒數(shù)時發(fā)生 Init事件 在創(chuàng)建對象時發(fā)生 Destroy事件 在釋放一個對象實(shí)例時發(fā)生 Error事件 當(dāng)某方法運(yùn)行出錯時發(fā)生,35,6.4.5 事件驅(qū)動和事件循環(huán),事件驅(qū)動程序代碼的執(zhí)行總是由某個事件的發(fā)生而引發(fā),執(zhí)行順序無法預(yù)料,而面向過程則是順序執(zhí)行。Message-based,event-driven,也是面向?qū)ο缶幊棠P筒捎玫姆椒ā?*利用VFP進(jìn)行應(yīng)用程序設(shè)計時,必須創(chuàng)建事件循環(huán)(event loop) READ EVENTS命令建立事件循環(huán) CLEAR EVENTS命令終止事件循環(huán) 若陷入了死循環(huán),可以按ESC鍵強(qiáng)制中斷程序的運(yùn)行。,36,6.5 方法,方法(程序)是對象能夠執(zhí)行的一個操作,由系統(tǒng)提供默認(rèn)的實(shí)現(xiàn)代碼。 用戶可以調(diào)用這些方法程序。也可以為這些方法編寫自己的實(shí)現(xiàn)代碼。 使用方法程序可以減少我們寫代碼的數(shù)量。,37,常用的方法,1. AddItem方法 在組合框或列表框中添加一個新數(shù)據(jù)項(xiàng),并且可以指定數(shù)據(jù)項(xiàng)索引 2. RemoveItem方法 從組合框或列表框中移去一項(xiàng) 3. Release方法 Release 方法是從內(nèi)存中釋放表單集或表單。 其調(diào)用語法為:thisform.Release,38,常用的方法,4. Hide/Show方法 Hide 方法是通過把 Visible 屬性設(shè)置為“假”(.F.),隱藏表單、表單集或工具欄。 其調(diào)用語法為:Object.Hide 表單被隱藏后,用戶不可訪問它的控件,但是這些控件仍然可用,并且可以在代碼中訪問它們。雖然這些控件是不可見的,但這些保存在不可見表單中的控件仍然保留自己的 Visible 屬性設(shè)置值。 5. Quit方法 Quit方法是結(jié)束一個VFP 實(shí)例,返回到創(chuàng)建VFP實(shí)例的應(yīng)用程序。 其調(diào)用語法為:ApplicationObject.Quit( ),39,常用的方法,6. SetALL方法 SetAll 方法是為容器對象中的所有控件或某類控件指定一個屬性設(shè)置。 其調(diào)用語法為:Container.SetAll(cProperty, Value , cClass) 參數(shù)cProperty要設(shè)置的屬性。Value屬性的新值,Value 的數(shù)據(jù)類型取決于要設(shè)置的屬性。cClass指定類名,40,小結(jié),OOP的意思:面向?qū)ο蟪绦蛟O(shè)計 類和對象的區(qū)別: 對象具有:屬性、方法、事件。 基類分為兩種類型:容器類和控件類 基類的最小事件集和最小屬性集 相對引用時常用的關(guān)鍵字 事件激發(fā)的順序 建立事件循環(huán)和中止事件循環(huán) 的命令,41,作業(yè),自己做在書上!,42,考過的等級考試考題,1. 類( class )是面向?qū)ο蟪绦蛟O(shè)計的核心。類具有許多特點(diǎn),如抽象性、封裝性、繼承性等,其中 _ 是指包含和隱藏對象信息(如內(nèi)部數(shù)據(jù)結(jié)構(gòu)和代碼)的能力,使操作對象的內(nèi)部復(fù)雜性與應(yīng)用程序隔離開來。,43,2. Visual FoxPro系統(tǒng)提供的基類都有最小事件集(Destroy 、Error、 Init)。從事件的激發(fā)順序看, 最小事件集中 事件是最后激發(fā)的。 3. 在事件代碼中相對引用當(dāng)前表單集的關(guān)鍵字是 _ 。 。,44,4. 假定表單(frm2)上有一個文本框?qū)ο髏ext1和一個命令組按鈕對象cg1,命令按鈕組cg1包含cd1 和cd2兩個命令按鈕。如果要在cd1命令按鈕的某個方法中訪問文本框?qū)ο髏ext1 的Value屬
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧農(nóng)業(yè)園區(qū)開發(fā)與運(yùn)營合作協(xié)議
- 事業(yè)單位工會活動方案
- 稅務(wù)顧問服務(wù)協(xié)議書
- 云計算服務(wù)平臺建設(shè)合同
- 樁基工程施工專業(yè)分包規(guī)定合同
- 合同付款補(bǔ)充協(xié)議書
- 煙草產(chǎn)品購銷合同
- 公司商鋪?zhàn)赓U合同書
- 獨(dú)家代理銷售合同
- 辦公效率提升解決方案實(shí)踐
- 砥礪前行決心譜寫華章
- 2025年開學(xué)教導(dǎo)處發(fā)言稿(5篇)
- 機(jī)電設(shè)備安裝旁站監(jiān)理方案
- 2025年度民政局離婚協(xié)議書范本模板官方修訂2篇
- 《百達(dá)翡麗名表介紹》課件
- 《集裝箱標(biāo)識辨識》課件
- 2024年臨床輸血管理委員會年終的工作總結(jié)
- 2025版《VOCs廢氣處理設(shè)施安全檢查表》(全)
- 整形醫(yī)院客戶管理培訓(xùn)
- 七年級語文下冊全冊完整課件(部編版)
- (投資管理)對外投資合作國別(地區(qū))指南
評論
0/150
提交評論