已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章 對(duì)象模型和事件模型,2,VFP支持兩種開(kāi)發(fā)模型:面向過(guò)程和面向?qū)ο?結(jié)構(gòu)化程序設(shè)計(jì)(面向過(guò)程) 本質(zhì):功能設(shè)計(jì)(以功能為主進(jìn)行設(shè)計(jì)) 方法:自頂向下、功能分解。 優(yōu)點(diǎn):系統(tǒng)結(jié)構(gòu)性強(qiáng)、便于設(shè)計(jì)和理解 缺點(diǎn):但各模塊間關(guān)系緊密,一旦功能需求變動(dòng)導(dǎo)致維護(hù)困難,6.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)概述,3,6.1.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法(OOP) 方法:把世間萬(wàn)物都看成對(duì)象。從內(nèi)部結(jié)構(gòu)上模擬客觀世界。 每個(gè)對(duì)象都有自己的屬性和方法。能對(duì)消息做出反應(yīng)。 程序就是一組對(duì)象,對(duì)象之間通過(guò)發(fā)送消息互相通知做什么。,6.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)概述,4,面向過(guò)程和面向?qū)ο蟮膮^(qū)別: 以計(jì)算機(jī)模擬貓捉老鼠的過(guò)程為例。 面向過(guò)程的做法: 程序員必須通過(guò)編程告訴計(jì)算機(jī)貓抓老鼠的每一個(gè)具體動(dòng)作,如匍匐,加速,咬住等動(dòng)作。 面向?qū)ο蟮淖龇ǎ?程序員給貓發(fā)一個(gè)消息“老鼠出現(xiàn)了” 。貓就會(huì)自動(dòng)去抓老鼠。 貓如何抓老鼠的動(dòng)作還是得由程序員編碼來(lái)實(shí)現(xiàn),只不 過(guò)代碼的組織方式大不相同。面向?qū)ο蟮姆椒ǜ先?的思維習(xí)慣。,6.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)概述,5,6.1.2 類和對(duì)象,6.1.2 類和對(duì)象的區(qū)別 類(CLASS,類型):定義了對(duì)象特征以及對(duì)象外觀和行為的模板,它刻劃了一組具有共同特性的對(duì)象。 對(duì)象:是類的一個(gè)實(shí)例 OOP中,程序由一個(gè)或多個(gè)類組成,在程序運(yùn)行時(shí)視需要?jiǎng)?chuàng)建該類的各個(gè)對(duì)象(實(shí)例) 類是靜態(tài)概念,對(duì)象是動(dòng)態(tài)概念 對(duì)象是基于某種類所創(chuàng)建的實(shí)例,包括了數(shù)據(jù)和過(guò)程。 例:貓可以定義為一個(gè)類,具有顏色,品種屬性,具有 抓老鼠的方法。 某個(gè)貓對(duì)象:白色波斯貓。,6.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)概述,6,1. 類 基類:VFP系統(tǒng)提供的內(nèi)部定義的類,可提供給用戶用于自定義類的基礎(chǔ)(例如:表單、控件) 子類:是以其它類定義為起點(diǎn),為某一種對(duì)象所建立的新類。子類將繼承任何對(duì)父類所做的修改,6.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)概述,7,對(duì)象(Object) 每個(gè)對(duì)象都具有屬性及與之相關(guān)的事件和方法,6.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)概述,8,屬性(Property) : 定義對(duì)象的特征 對(duì)象的屬性由對(duì)象所基于的類決定 如貓的顏色,品種 方法(Method) :是對(duì)象能夠執(zhí)行的一個(gè)操作 方法是與對(duì)象相關(guān)聯(lián)的過(guò)程,也稱方法程序 方法可由用戶自己創(chuàng)建 例:SetColor()設(shè)置貓的顏色。(主人將它染發(fā)了) 事件(Event) :對(duì)象可對(duì)該事件做出反應(yīng) 可編寫(xiě)相應(yīng)的代碼,對(duì)動(dòng)作進(jìn)行響應(yīng) 事件可由用戶的動(dòng)作、程序代碼或系統(tǒng)產(chǎn)生 例:對(duì)于老鼠出現(xiàn)這個(gè)事件,貓能做出反應(yīng)。,6.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)概述,9,6.2 基 類,VFP 基類,派生,子類,子類,子類,10,6.2.1 VFP的基類,VFP提供的所有基類見(jiàn)p151 表5-1 說(shuō)明: 該表中加*部分的類,只能使用,不能為它們創(chuàng)建子類。 基類可以分為容器類和控件類兩種類型。 容器類,見(jiàn)表5-2,其余的都是控件類。,11,基類的最小事件集(重要),激發(fā)順序一般為:Init Error Destroy,12,基類的最小屬性集,13,容器類(Container classes)是包容其他類的基類 容器可以包含其它對(duì)象 容器可以作為所包含的對(duì)象的父對(duì)象 允許訪問(wèn)包含的對(duì)象 控件類(Control classes)是可以包含在容器類中的基類 控件對(duì)象可以包含在容器中 不能作為其它對(duì)象的父對(duì)象 VFP的對(duì)象可分為容器對(duì)象和控件對(duì)象,6.2.2 容器類與控件類,14,6.3.1 引用對(duì)象 6.3.2 設(shè)置對(duì)象的屬性 6.3.3 調(diào)用對(duì)象的方法程序 6.3.4 對(duì)象對(duì)事件的響應(yīng),6.3 處理對(duì)象,15,6.3.1 引用對(duì)象,何時(shí)要引用對(duì)象 當(dāng)要設(shè)置或取得對(duì)象的某個(gè)屬性的值時(shí) 當(dāng)要執(zhí)行對(duì)象的某個(gè)方法事件時(shí) 容器層次體系 容器與容器中的控件是上下層次的關(guān)系 一個(gè)應(yīng)用程序的最高層次是 _screen或_VFP,最低層次是一個(gè)非容器類控件或是一個(gè)不包含任何控件的容器類控件 例如:_screen.caption=“我的表單”,6.3 處理對(duì)象,16,層次體系示意圖,表 單 集,表 單,容 器,控 件,17,表單集“表單集1”(該對(duì)象的Name屬性為FormSet1)中包含2個(gè)表單“Form1”和“Form2”;表單“Form1”中包含2個(gè)文本框、1個(gè)選項(xiàng)按鈕組、1個(gè)頁(yè)框;頁(yè)框中包含2個(gè)選項(xiàng)卡式頁(yè)面Page1和Page2;頁(yè)面“Page1”中包含1個(gè)表格“Grid1”;表格中包含2個(gè)列控件對(duì)象;列控件又包括標(biāo)頭和文本框控件。,18,絕對(duì)引用 從容器的最高層次引用對(duì)象,給出對(duì)象的絕對(duì)地址 例:引用表單Form1對(duì)象:FormSet1.Form1 引用表格的第一列中的文本框Text1對(duì)象: FormSet1.Form1.Pageframe1.Page1.Grid1.Column1.Text1 相對(duì)引用 在容器層次中相對(duì)于某個(gè)容器層次的引用 相對(duì)引用通常運(yùn)用于某個(gè)對(duì)象的事件處理代碼或方法程序代碼中,即在某個(gè)容器對(duì)象的事件處理代碼或方法程序中對(duì)所包容的對(duì)象的引用,引用時(shí)可以直接使用其對(duì)象名 相對(duì)引用時(shí),所涉及到的一些關(guān)鍵字(P153表5-5) 類似于文件系統(tǒng)中的絕對(duì)路徑和相對(duì)路徑,19,相對(duì)引用對(duì)象時(shí)所用的關(guān)鍵字(重要),20,6.3.2 設(shè)置對(duì)象屬性,每個(gè)對(duì)象都有屬性,可以為對(duì)象設(shè)置屬性 屬性可以在設(shè)計(jì)時(shí)設(shè)置也可在運(yùn)行時(shí)設(shè)置(如caption) 設(shè)計(jì)時(shí)修改屬性在“屬性”窗口中進(jìn)行 程序代碼中,用以下語(yǔ)法進(jìn)行設(shè)置 對(duì)象名稱 . 屬性 = 值 例:絕對(duì)引用 FormSet1.Form1.Text1.Value=DATE() FormSet1.Form1.Text1.ForeColor=RGB(0,0,0)黑 FormSet1.Form1.Text1.FontName=“黑體”,21,引用一個(gè)對(duì)象的多個(gè)屬性和方法(重要) 如:with formset1.form1.text1 .Value=DATE() .ForeColor=RGB(0,0,0) .BackColor=RGB(192,192,192) .FontName=“黑體” endwith 引用容器中的多個(gè)對(duì)象 如:With Thisform .txtXh.backcolor=rgb(128,0,0) .txtXm.backcolor=rgb(0,128,0) Endwith,22,6.3.3 調(diào)用對(duì)象的方法程序,方法程序是對(duì)象能夠執(zhí)行的一個(gè)操作,是和對(duì)象相聯(lián)系的過(guò)程 調(diào)用語(yǔ)法 . 例1.釋放表單:Thisform.release 例2.顯示表單Form1,并將焦點(diǎn)設(shè)置在文本框Text2上: FormSet1.Form1.show FormSet1.Form1.Text2.SetFocus 有返回值的方法程序以圓括號(hào)結(jié)尾,23,6.3.4 對(duì)象對(duì)事件的響應(yīng),事件是對(duì)對(duì)象識(shí)別的一個(gè)動(dòng)作,可以編寫(xiě)相應(yīng)的代碼對(duì)此動(dòng)作進(jìn)行響應(yīng) 用戶不能用其他的程序設(shè)計(jì)方法產(chǎn)生其事件,但可以調(diào)用與這些事件相關(guān)的過(guò)程 常用的事件類 鼠標(biāo)事件 鍵盤事件 表單事件 控件焦點(diǎn)事件 數(shù)據(jù)環(huán)境事件 常用事件和方法的詳細(xì)講解留到設(shè)計(jì)表單時(shí)再講。,24,6.4 相關(guān)事件,核心事件集(表5-6),6.4.1 核心事件,這些事件適用于大多數(shù)的對(duì)象(控件),25,表6-6 核心事件集,26,6.4 相關(guān)事件,問(wèn)題:容器和它包含的控件都設(shè)置了某事件的響應(yīng)代碼,系統(tǒng)如何處理這個(gè)事件。 為控件編寫(xiě)事件的處理代碼時(shí),應(yīng)注意兩條原則: (1)容器不處理與所包含的控件相關(guān)聯(lián)的事件 (2)如果沒(méi)有與控件相關(guān)聯(lián)的事件代碼,Visual FoxPro將在類層次的更高層上檢查是否有與此事件相關(guān)聯(lián)的控件代碼,6.4. 2 容器層次事件和類層次中的事件,27,6.4 相關(guān)事件,6.4. 2 容器層次事件和類層次中的事件,例外:對(duì)于選項(xiàng)按鈕組與命令按鈕組來(lái)說(shuō),組中個(gè)別按鈕如果沒(méi)有編寫(xiě)事件處理代碼,則當(dāng)事件發(fā)生時(shí)將執(zhí)行組事件的處理代碼。例如,在如圖6-4所示的表單中有一個(gè)選項(xiàng)按鈕組(設(shè)置Click事件處理代碼),該選項(xiàng)按鈕組中有二個(gè)選項(xiàng)按鈕(選項(xiàng)按鈕Option1有Click事件處理代碼而選項(xiàng)按鈕Option2無(wú)Click事件處理代碼),則當(dāng)用戶單擊Option1時(shí)執(zhí)行與之相關(guān)聯(lián)的事件代碼,不執(zhí)行按鈕組的Click事件處理代碼,但當(dāng)用戶單擊Option2時(shí)執(zhí)行按鈕組的Click事件處理代碼。 (p128 圖6-4 按鈕組中的事件代碼.scx),28,6.4 相關(guān)事件,問(wèn)題:程序的運(yùn)行伴隨著一系列的事件的產(chǎn)生。如何查看這些事件的發(fā)生順序。 P156 表5-7 vfp中事件順序,交互事件未列出 *對(duì)于表單,事件的激發(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)或鍵盤更改控件的值時(shí)發(fā)生,32,4. 焦點(diǎn)事件,焦點(diǎn)(Focus)用以指出當(dāng)前被操作的對(duì)象 GotFocus事件 用任何方法使對(duì)象接受到焦點(diǎn)時(shí)發(fā)生 PROCEDURE Object.GotFocus LPARAMETERS nIndex LostFocus事件 當(dāng)某個(gè)對(duì)象失去焦點(diǎn)時(shí)發(fā)生,33,5. 表單事件,Load事件(表單和表單集) 創(chuàng)建對(duì)象之前發(fā)生 Load事件發(fā)生在Activate和GotFocus事件之前 UnLoad事件(表單和表單集) 在對(duì)象被釋放時(shí)發(fā)生 Unload事件發(fā)生在Destroy事件和所有包含的對(duì)象被釋放之后,34,7. 其他事件,Timer事件 (用于計(jì)時(shí)器控件) 當(dāng)經(jīng)過(guò)Interval屬性中指定的毫秒數(shù)時(shí)發(fā)生 Init事件 在創(chuàng)建對(duì)象時(shí)發(fā)生 Destroy事件 在釋放一個(gè)對(duì)象實(shí)例時(shí)發(fā)生 Error事件 當(dāng)某方法運(yùn)行出錯(cuò)時(shí)發(fā)生,35,6.4.5 事件驅(qū)動(dòng)和事件循環(huán),事件驅(qū)動(dòng)程序代碼的執(zhí)行總是由某個(gè)事件的發(fā)生而引發(fā),執(zhí)行順序無(wú)法預(yù)料,而面向過(guò)程則是順序執(zhí)行。Message-based,event-driven,也是面向?qū)ο缶幊棠P筒捎玫姆椒ā?*利用VFP進(jìn)行應(yīng)用程序設(shè)計(jì)時(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 方法,方法(程序)是對(duì)象能夠執(zhí)行的一個(gè)操作,由系統(tǒng)提供默認(rèn)的實(shí)現(xiàn)代碼。 用戶可以調(diào)用這些方法程序。也可以為這些方法編寫(xiě)自己的實(shí)現(xiàn)代碼。 使用方法程序可以減少我們寫(xiě)代碼的數(shù)量。,37,常用的方法,1. AddItem方法 在組合框或列表框中添加一個(gè)新數(shù)據(jù)項(xiàng),并且可以指定數(shù)據(jù)項(xiàng)索引 2. RemoveItem方法 從組合框或列表框中移去一項(xiàng) 3. Release方法 Release 方法是從內(nèi)存中釋放表單集或表單。 其調(diào)用語(yǔ)法為:thisform.Release,38,常用的方法,4. Hide/Show方法 Hide 方法是通過(guò)把 Visible 屬性設(shè)置為“假”(.F.),隱藏表單、表單集或工具欄。 其調(diào)用語(yǔ)法為:Object.Hide 表單被隱藏后,用戶不可訪問(wèn)它的控件,但是這些控件仍然可用,并且可以在代碼中訪問(wèn)它們。雖然這些控件是不可見(jiàn)的,但這些保存在不可見(jiàn)表單中的控件仍然保留自己的 Visible 屬性設(shè)置值。 5. Quit方法 Quit方法是結(jié)束一個(gè)VFP 實(shí)例,返回到創(chuàng)建VFP實(shí)例的應(yīng)用程序。 其調(diào)用語(yǔ)法為:ApplicationObject.Quit( ),39,常用的方法,6. SetALL方法 SetAll 方法是為容器對(duì)象中的所有控件或某類控件指定一個(gè)屬性設(shè)置。 其調(diào)用語(yǔ)法為:Container.SetAll(cProperty, Value , cClass) 參數(shù)cProperty要設(shè)置的屬性。Value屬性的新值,Value 的數(shù)據(jù)類型取決于要設(shè)置的屬性。cClass指定類名,40,小結(jié),OOP的意思:面向?qū)ο蟪绦蛟O(shè)計(jì) 類和對(duì)象的區(qū)別: 對(duì)象具有:屬性、方法、事件。 基類分為兩種類型:容器類和控件類 基類的最小事件集和最小屬性集 相對(duì)引用時(shí)常用的關(guān)鍵字 事件激發(fā)的順序 建立事件循環(huán)和中止事件循環(huán) 的命令,41,作業(yè),自己做在書(shū)上!,42,考過(guò)的等級(jí)考試考題,1. 類( class )是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心。類具有許多特點(diǎn),如抽象性、封裝性、繼承性等,其中 _ 是指包含和隱藏對(duì)象信息(如內(nèi)部數(shù)據(jù)結(jié)構(gòu)和代碼)的能力,使操作對(duì)象的內(nèi)部復(fù)雜性與應(yīng)用程序隔離開(kāi)來(lái)。,43,2. Visual FoxPro系統(tǒng)提供的基類都有最小事件集(Destroy 、Error、 Init)。從事件的激發(fā)順序看, 最小事件集中 事件是最后激發(fā)的。 3. 在事件代碼中相對(duì)引用當(dāng)前表單集的關(guān)鍵字是 _ 。 。,44,4. 假定表單(frm2)上有一個(gè)文本框?qū)ο髏ext1和一個(gè)命令組按鈕對(duì)象cg1,命令按鈕組cg1包含cd1 和cd2兩個(gè)命令按鈕。如果要在cd1命令按鈕的某個(gè)方法中訪問(wèn)文本框?qū)ο髏ext1 的Value屬
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園工作總結(jié)童年記憶永不磨滅
- 健康會(huì)所前臺(tái)工作感受
- 水處理行業(yè)助理工作總結(jié)
- 文化娛樂(lè)行業(yè)員工績(jī)效考核實(shí)踐
- 2023-2024學(xué)年浙江省杭州四中高三(下)第一次訓(xùn)練地理試卷
- 2021年江蘇省宿遷市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年廣東省韶關(guān)市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年安徽省合肥市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2021年江西省鷹潭市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 《心理學(xué)與讀心術(shù)》課件
- 七年級(jí)歷史試卷上冊(cè)可打印
- 2024-2030年全球及中國(guó)洞察引擎行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃可行性分析研究報(bào)告
- 《東南亞經(jīng)濟(jì)與貿(mào)易》習(xí)題集、案例、答案、參考書(shū)目
- 燒烤店裝修合同范文模板
- 2024年中國(guó)櫻桃番茄種市場(chǎng)調(diào)查研究報(bào)告
- 數(shù)據(jù)分析基礎(chǔ)與應(yīng)用指南
- 吉林市2024-2025學(xué)年度高三第一次模擬測(cè)試 (一模)數(shù)學(xué)試卷(含答案解析)
- 自考《英語(yǔ)二》高等教育自學(xué)考試試題與參考答案(2024年)
- 人教版(PEP)小學(xué)六年級(jí)英語(yǔ)上冊(cè)全冊(cè)教案
- 廣東省廣州市海珠區(qū)2023-2024學(xué)年六年級(jí)上學(xué)期月考英語(yǔ)試卷
- 《春秋》導(dǎo)讀學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評(píng)論
0/150
提交評(píng)論