第5章VFP語(yǔ)言基礎(chǔ)-面向?qū)ο蟪绦蛟O(shè)計(jì)_第1頁(yè)
第5章VFP語(yǔ)言基礎(chǔ)-面向?qū)ο蟪绦蛟O(shè)計(jì)_第2頁(yè)
第5章VFP語(yǔ)言基礎(chǔ)-面向?qū)ο蟪绦蛟O(shè)計(jì)_第3頁(yè)
第5章VFP語(yǔ)言基礎(chǔ)-面向?qū)ο蟪绦蛟O(shè)計(jì)_第4頁(yè)
第5章VFP語(yǔ)言基礎(chǔ)-面向?qū)ο蟪绦蛟O(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩38頁(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)介

1、第5章VFP語(yǔ)言基礎(chǔ)-面向?qū)ο蟪绦蛟O(shè)計(jì)第一頁(yè),共44頁(yè)。 本 章 重 點(diǎn)結(jié)構(gòu)化程序設(shè)計(jì)順序、選擇、循環(huán)過(guò)程和函數(shù)面向?qū)ο蟮某绦蛟O(shè)計(jì)類和對(duì)象屬性、方法、事件2第二頁(yè),共44頁(yè)。結(jié)構(gòu)化程序設(shè)計(jì)到面向?qū)ο蟪绦蛟O(shè)計(jì)OOP兩種程序設(shè)計(jì)方法 1本質(zhì):功能設(shè)計(jì) 2方法:自頂向下、功能分解,從外部功能上模擬客觀世界 3開(kāi)發(fā)過(guò)程:從“做什么”到“如何做” 4優(yōu)點(diǎn):系統(tǒng)結(jié)構(gòu)性強(qiáng)、便于設(shè)計(jì)和理解 5缺點(diǎn):維護(hù)困難3第三頁(yè),共44頁(yè)。面向?qū)ο蟮某绦蛟O(shè)計(jì)方法方法:基于問(wèn)題對(duì)象的自底向上的功能綜合,從內(nèi)部結(jié)構(gòu)上模擬客觀世界開(kāi)發(fā)過(guò)程:從“用什么做”到“要做什么”優(yōu)點(diǎn)以對(duì)象為中心的問(wèn)題求解方法簡(jiǎn)化程序設(shè)計(jì),更接近現(xiàn)實(shí)世界,可

2、降低開(kāi)發(fā)和維護(hù)的費(fèi)用提高程序代碼的可重用性可以和各種模型自然的融合5.3 面向?qū)ο蟮某绦蛟O(shè)計(jì)基礎(chǔ)4第四頁(yè),共44頁(yè)。一、類和對(duì)象概述1 類: 所謂類(Class),就是一組具有相同結(jié)構(gòu)、性質(zhì)、共同操作特點(diǎn)及遵守相同規(guī)則的對(duì)象的集合。 它是對(duì)某種具有共同屬性及其行為特征的對(duì)象群體的抽象描述。 對(duì)象:是類的一個(gè)實(shí)例(包含具體數(shù)據(jù)、過(guò)程定義)。5第五頁(yè),共44頁(yè)。一、類和對(duì)象概述2類是靜態(tài)概念,對(duì)象是動(dòng)態(tài)概念 “類”定義了某類對(duì)象特征以及對(duì)象外觀和行為的模板,它刻劃了一組具有共同特性的對(duì)象群體 “對(duì)象”則是基于某種類所創(chuàng)建的一個(gè)實(shí)例在OOP中,類就像是一個(gè)模板,對(duì)象都是基于這個(gè)模板生成的:類定義了對(duì)

3、象所具有的屬性、事件和方法,從而決定了該類對(duì)象的屬性和它的行為。Visual FoxPro系統(tǒng)為用戶提供29個(gè)基類6第六頁(yè),共44頁(yè)?;?VFP系統(tǒng)提供的內(nèi)部定義的類,可用于用戶定義子類的基礎(chǔ)子類:是以其它類(已有的)定義為起點(diǎn),為某一種對(duì)象所建立的新類。子類將繼承任何對(duì)父類所做的修改用戶自定義類:與基類相似,由用戶自己定義,也可用于派生子類,但無(wú)可視化表示形式類7第七頁(yè),共44頁(yè)。繼承性(inheritance)子類沿用父類特征的能力如果父類特征發(fā)生改變,則子類將繼承這些新特征多態(tài)性(polymorphism)一些關(guān)聯(lián)的類包含同名的方法程序,但方法程序的內(nèi)容可以不同相同的操作作用于多種類型

4、的對(duì)象上獲得不同的結(jié)果,增強(qiáng)系統(tǒng)的靈活性、維護(hù)性和擴(kuò)充性特性8第八頁(yè),共44頁(yè)。封裝性 (encapsulation)說(shuō)明了包含和隱藏對(duì)象信息的能力高內(nèi)聚,低耦合抽象性(abstraction)提取一個(gè)類或?qū)ο笈c眾不同的特征,而不對(duì)該類或?qū)ο蟮乃行畔⑦M(jìn)行處理特性9第九頁(yè),共44頁(yè)。對(duì)象(Object)是類的實(shí)例。每個(gè)對(duì)象都具有描述它特征的屬性,以及附屬于它的行為。對(duì)象把事物的屬性和行為封裝在一起,是一個(gè)動(dòng)態(tài)的概念。對(duì)象是面向?qū)ο缶幊痰幕驹?,是“類”的具體實(shí)例。每個(gè)對(duì)象都具有屬性及與之相關(guān)的事件和方法 在VFP中,包含在應(yīng)用程序中的表單及各種控件都是對(duì)象。對(duì)象是包含數(shù)據(jù)和代碼的實(shí)體。在程序

5、設(shè)計(jì)中,用屬性、事件和方法來(lái)說(shuō)明對(duì)象,屬性就是對(duì)象的數(shù)據(jù)內(nèi)容,事件和方法則是對(duì)象中包含的代碼。對(duì)象(Object)10第十頁(yè),共44頁(yè)。屬性(Property) 用于定義對(duì)象的特征或某一方面的行為。每個(gè)對(duì)象都具有屬性,屬性表明了對(duì)象的一些基本特征,如大小、顏色、所處的位置等 屬性構(gòu)成: 一方面由對(duì)象所基于的類決定;另一方面也可為其定義新的屬性對(duì)象的每一種屬性,都是與其它對(duì)象加以區(qū)別的特性,都具有一定的含義,并可賦予一定的值。屬性值:對(duì)象各屬性的具體內(nèi)容指定可設(shè)置內(nèi)容:由用戶(設(shè)計(jì)者)設(shè)置不可設(shè)置內(nèi)容:只讀11第十一頁(yè),共44頁(yè)。事件(Event) 事件(Event) 是每個(gè)對(duì)象可用以識(shí)別和響應(yīng)

6、的某些行為和動(dòng)作。可編寫(xiě)相應(yīng)的程序代碼對(duì)事件動(dòng)作進(jìn)行響應(yīng)。事件是一種預(yù)先定義好的特定動(dòng)作,被用戶行為或系統(tǒng)事件激活,每個(gè)對(duì)象都可以對(duì)相關(guān)事件的動(dòng)作進(jìn)行識(shí)別和響應(yīng)。在多數(shù)情況下,事件是由用戶的交互行為產(chǎn)生的。不同對(duì)象能夠識(shí)別的事件內(nèi)容是不一致的,在VFP中,事件集合是固定的(由系統(tǒng)指定),用戶不能進(jìn)行擴(kuò)充。(即用戶不能自己創(chuàng)建新事件) 12第十二頁(yè),共44頁(yè)。方法(Method) 是對(duì)象能夠執(zhí)行的一個(gè)操作流程方法是與對(duì)象相關(guān)聯(lián)的過(guò)程,也稱方法程序方法程序有系統(tǒng)提供的,也可由用戶根據(jù)需要自己創(chuàng)建VFP方法也均有名稱標(biāo)識(shí),通過(guò)名稱使用例:release方法程序也往往與對(duì)象事件相關(guān)聯(lián)方法實(shí)際上就是對(duì)象

7、的內(nèi)部過(guò)程(函數(shù)),每個(gè)類型的對(duì)象都有它自己的方法集。例如在命令按鈕對(duì)象中,調(diào)用Move方法可以移動(dòng)按鈕的位置。與事件不同的是,方法可以由用戶進(jìn)行擴(kuò)展。 13第十三頁(yè),共44頁(yè)。二、基類基類:VFP系統(tǒng)提供的內(nèi)部定義的類子類:引用VFP基類或其他子類建立的新類用戶自定義類:與基類相似,由用戶自定義,但無(wú)可視的表示形式VFP基類派生子類子類子類14第十四頁(yè),共44頁(yè)。 容器類(Container classes)是能夠包容其它類的基類容器類對(duì)象可以包含其它對(duì)象容器類對(duì)象可以作為所包含的對(duì)象的父對(duì)象 控件類(Control classes)不能夠包容其它類,但可以放在容器類中的基類控件類對(duì)象可以包

8、含在容器中不能作為其它對(duì)象的父對(duì)象容器類與控件類15第十五頁(yè),共44頁(yè)。VFP的29個(gè)基類1標(biāo)簽9列表框17線條25自定義2文本框10微調(diào)框18形狀26控件3編輯框11表格19容器27工具欄4命令按鈕12圖像20分隔符*28表單5命令按鈕組13計(jì)時(shí)器21選項(xiàng)按鈕*29表單集6選項(xiàng)按鈕組14頁(yè)框22標(biāo)頭*7復(fù)選框15 OLE容器控件23表格列*8組合框16 OLE綁定型控件24頁(yè)面*1-20為標(biāo)準(zhǔn)類(控件)(控件箱中帶)蘭色字:容器類,其余為非容器類(控件類)16第十六頁(yè),共44頁(yè)。容器類容器類能包含的對(duì)象容器任意控件類工具欄任意控件類、頁(yè)框、容器表單集表單、工具欄表單頁(yè)框、任意控件類、容器、自

9、定義對(duì)象表格表格列表格列標(biāo)頭以及除表單、表單集、工具欄、計(jì)時(shí)器和其它列以外的任意對(duì)象頁(yè)框頁(yè)面頁(yè)面任意控件類、容器和自定義對(duì)象命令按鈕組命令按鈕選項(xiàng)按鈕組選項(xiàng)按鈕17第十七頁(yè),共44頁(yè)?;惖淖钚傩约瘜傩哉f(shuō)明Class該類屬于何種類型Baseclass該類由何種基類派生而來(lái)(Form,commandbutton或custom等)Classlibrary該類從屬于何種類庫(kù)parentclass對(duì)象所基于的類。若該類直接由VFP基類派生而來(lái),則Parentclass屬性值與baseclass屬性值相同18第十八頁(yè),共44頁(yè)。基類的最小事件集事 件說(shuō) 明Init當(dāng)對(duì)象創(chuàng)建時(shí)激活Destroy當(dāng)對(duì)象從

10、內(nèi)存中釋放時(shí)激活error當(dāng)類中的事件或方法程序運(yùn)行中發(fā)生錯(cuò)誤時(shí)激活19第十九頁(yè),共44頁(yè)。三、處理對(duì)象創(chuàng)建對(duì)象: 基類 定義的子類 用戶子定義類方式: 編程 可視化開(kāi)發(fā)工具設(shè)計(jì) 對(duì)象20第二十頁(yè),共44頁(yè)。容器類:包含了一個(gè)“容器”基類控件類:包含了一個(gè)“控件”基類 基于它們均可生成對(duì)象 VFP中主要以表單(或表單集)為最高容器層,其它基類對(duì)象可以在其中生成,成為被表單(或表單集)包容的對(duì)象;層層相生,層層包容,最終形成表單(或表單集)的對(duì)象群體。 一個(gè)面向?qū)ο蟮某绦蚓褪怯梢唤M相關(guān)的對(duì)象群體以及它們的屬性、事件、方法集合而成的整體。21第二十一頁(yè),共44頁(yè)。層次體系示意圖表單集表單容器控件2

11、2第二十二頁(yè),共44頁(yè)。1.引用對(duì)象分類絕對(duì)引用和相對(duì)引用何時(shí)要引用對(duì)象當(dāng)要設(shè)置或取得對(duì)象的某個(gè)屬性的值時(shí)當(dāng)要執(zhí)行對(duì)象的某個(gè)方法事件時(shí)容器層次體系容器與容器中的控件是上下層次的關(guān)系一個(gè)應(yīng)用程序的最高層次是各種活動(dòng)表單或表單集,最低層次是一個(gè)非容器類控件對(duì)象或是一個(gè)不包含任何控件的容器類對(duì)象23第二十三頁(yè),共44頁(yè)。 表單集“表單集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è)列

12、控件對(duì)象;列控件又包括標(biāo)頭和文本框控件。24第二十四頁(yè),共44頁(yè)。絕對(duì)引用:從容器的最高層次引用對(duì)象,給出對(duì)象的絕對(duì)地址例:表單Form1對(duì)象:FormSet1.Form1 表格的第一列中的文本框Text1對(duì)象: 注意!引用時(shí)按層次關(guān)系指明關(guān)聯(lián)對(duì)象名稱,并用“.”隔開(kāi)絕對(duì)引用25第二十五頁(yè),共44頁(yè)。相對(duì)引用:在容器層次中相對(duì)于某個(gè)容器層次的引用相對(duì)引用通常運(yùn)用于某個(gè)具體對(duì)象的事件處理代碼或方法程序代碼中,即在某個(gè)容器對(duì)象的事件處理代碼或方法程序中對(duì)所包容的對(duì)象的引用,引用時(shí)可以直接使用其對(duì)象名相對(duì)引用時(shí),所涉及到的一些關(guān)鍵字(表5-5)例:在文本框Text1中引用表單Form1: THISF

13、ORM 或 THIS.PARENT相對(duì)引用26第二十六頁(yè),共44頁(yè)。關(guān)鍵字含義ActiveForm當(dāng)前活動(dòng)表單ActivePage當(dāng)前活動(dòng)表單中的活動(dòng)頁(yè)面ActiveControl當(dāng)前活動(dòng)表單中具有焦點(diǎn)的控件PARENT該對(duì)象的直接容器(父容器)THIS該對(duì)象THISFORM包含該對(duì)象的表單THISFORMSET包含該對(duì)象的表單集相對(duì)引用對(duì)象時(shí)所用的關(guān)鍵字 27第二十七頁(yè),共44頁(yè)。 2.設(shè)置對(duì)象屬性每個(gè)對(duì)象都有屬性,可以對(duì)對(duì)象設(shè)置屬性屬性可以在設(shè)計(jì)時(shí)設(shè)置也可在運(yùn)行時(shí)設(shè)置,但也有一些屬性是只讀的。設(shè)計(jì)時(shí)修改屬性在“屬性”窗口中進(jìn)行程序代碼中,用以下語(yǔ)法進(jìn)行設(shè)置 引用對(duì)象 . 屬性 = 值例:絕

14、對(duì)引用FormSet1.Form1.Text1.Value=DATE()FormSet1.Form1.Text1.ForeColor=RGB(0,0,0) FormSet1.Form1.Text1.BackColor=RGB(192,192,192)FormSet1.Form1.Text1.FontName=“黑體”28第二十八頁(yè),共44頁(yè)。引用一個(gè)對(duì)象的多個(gè)屬性和方法(重要)如:with (點(diǎn)不能放在此處) .Value=DATE() .ForeColor=RGB(0,0,0) .BackColor=RGB(192,192,192) .FontName=“黑體”endwith引用容器中的多個(gè)

15、對(duì)象:如:With Thisform .txtXh.backcolor=rgb(128,0,0) .txtXm.backcolor=rgb(0,128,0)Endwith 29第二十九頁(yè),共44頁(yè)。3. 調(diào)用對(duì)象的方法程序方法程序是對(duì)象能夠執(zhí)行的一個(gè)操作,是和對(duì)象相聯(lián)系的過(guò)程調(diào)用語(yǔ)法引用對(duì)象.方法程序1.釋放表單:Thisform.release2.顯示表單Form1,并將焦點(diǎn)設(shè)置在文本框Text2上: FormSet1.Form1.show FormSet1.Form1.Text2.SetFocus 3.有返回值的方法程序以圓括號(hào)結(jié)尾,如 ApplicationObject.Quit() 4

16、.如有參數(shù)傳遞給方法程序,該參數(shù)應(yīng)放在括號(hào)中.30第三十頁(yè),共44頁(yè)。 方法實(shí)際上就是對(duì)象的內(nèi)部過(guò)程或函數(shù),每個(gè)類型的對(duì)象都有它自己的方法集。例如在命令按鈕對(duì)象中,調(diào)用Move方法可以移動(dòng)按鈕的位置。與事件不同的是,方法可以由用戶進(jìn)行擴(kuò)展。 表單對(duì)象的常用方法 :Refresh重畫(huà)表單和控件,刷新表單中的所有值Show顯示表單Hide隱藏表單Release從內(nèi)存中釋放表單31第三十一頁(yè),共44頁(yè)。4. 對(duì)象對(duì)事件的響應(yīng)事件是對(duì)象識(shí)別的一個(gè)動(dòng)作,用戶可以編寫(xiě)相應(yīng)的代碼對(duì)此動(dòng)作進(jìn)行響應(yīng)若對(duì)象的某個(gè)事件沒(méi)有相關(guān)的程序代碼,則該事件發(fā)生時(shí),對(duì)象不會(huì)發(fā)生任何操作.VFP對(duì)象事件集合是固定的用戶不能創(chuàng)建新

17、的VFP對(duì)象事件.事件一般是由用戶的交互方式觸發(fā)的,如單擊或雙擊鼠標(biāo),按下鍵盤(pán)上的鍵,也有些是被系統(tǒng)觸發(fā)的.在某事件沒(méi)有發(fā)生時(shí),用戶可以顯式地調(diào)用與該事件相關(guān)的過(guò)程. 如語(yǔ)句: this.Pmand1.click32第三十二頁(yè),共44頁(yè)。四、相關(guān)事件每個(gè)對(duì)象都有與之相關(guān)的事件集合。對(duì)于已創(chuàng)建的多個(gè)對(duì)象,用戶根據(jù)需要可以為某個(gè)或某些事件配置相應(yīng)的事件處理代碼,使得應(yīng)用程序在運(yùn)行過(guò)程中根據(jù)所發(fā)生的事件作出相應(yīng)的處理33第三十三頁(yè),共44頁(yè)。1. 核心事件核心事件集(表5-6) 基類的事件集合是固定的,不能進(jìn)行擴(kuò)充。每個(gè)類都可識(shí)別固定的默認(rèn)事件集合,它的最小事件集包括Init、Destroy和Err

18、or事件. 教材表5-6列出了Visual FoxPro中的核心事件集,這些事件適用于大多數(shù)的對(duì)象34第三十四頁(yè),共44頁(yè)。表5-6 核心事件集事件事件被激發(fā)后的動(dòng)作Load表單或表單集被加載到內(nèi)存中 Unload從內(nèi)存中釋放表單或表單集 Init創(chuàng)建對(duì)象Destroy從內(nèi)存中釋放對(duì)象 Click用戶使用主鼠標(biāo)按鈕單擊對(duì)象 Dblclick用戶使用主鼠標(biāo)按鈕雙擊對(duì)象 Rightclick用戶使用輔鼠標(biāo)按鈕單擊對(duì)象 Gotfocus對(duì)象接收焦點(diǎn),由用戶動(dòng)作引起Lostfocus對(duì)象失去焦點(diǎn),由用戶動(dòng)作引起Keypress用戶按下或釋放鍵 Mousedown當(dāng)鼠標(biāo)指針停在一個(gè)對(duì)象上時(shí),用戶按下鼠標(biāo)

19、按鈕 Mousemove用戶在對(duì)象上移動(dòng)鼠標(biāo) Mouseup當(dāng)鼠標(biāo)指針停在一個(gè)對(duì)象上時(shí),用戶釋放鼠標(biāo)按鈕 interactivechange以交互方式改變對(duì)象值 programmaticchange以編程方式改變對(duì)象值 35第三十五頁(yè),共44頁(yè)。 在實(shí)際應(yīng)用中,控件對(duì)象一般都被包含在容器對(duì)象中,如命令按鈕、文本框包含在表單中,頁(yè)面包含在頁(yè)框中等,那么當(dāng)用戶單擊命令按鈕時(shí),是命令按鈕的Click事件被觸發(fā),還是表單的Click事件被觸發(fā),或者是兩個(gè)對(duì)象的Click事件都被觸發(fā)? 實(shí)際上,當(dāng)某事件發(fā)生時(shí),只有與事件相關(guān)聯(lián)的最里層對(duì)象識(shí)別該事件,更高層的容器不識(shí)別這個(gè)事件。因此當(dāng)用戶單擊命令按鈕時(shí),

20、只有該命令按鈕的Click事件被觸發(fā),而包含命令按鈕的容器表單,則不識(shí)別這個(gè)Click事件。即使該命令按鈕沒(méi)有與Click事件相關(guān)聯(lián)的事件代碼,而表單有自己的Click事件代碼,也不會(huì)執(zhí)行表單的事件代碼。2. 容器層次和類層次中的事件36第三十六頁(yè),共44頁(yè)。 例如:在圖所示的表單中有一個(gè)命令按鈕,表單設(shè)置了Click事件和DblClick事件的處理代碼;命令按鈕僅設(shè)置了Click事件的處理代碼,那么當(dāng)用戶單擊命令按鈕時(shí),不會(huì)觸發(fā)表單的Click事件37第三十七頁(yè),共44頁(yè)。 對(duì)于表格控件來(lái)說(shuō),表格包含列控件,列控件又包含標(biāo)頭和文本框控件。當(dāng)事件發(fā)生時(shí),只有與事件相關(guān)聯(lián)的最里層對(duì)象識(shí)別該事件,更高層的容器不識(shí)別該事件,如圖所示38第三十八頁(yè),共44頁(yè)。例外:對(duì)于選項(xiàng)按鈕組與命令按鈕組來(lái)說(shuō),組中個(gè)別按鈕如果沒(méi)有編寫(xiě)事件處理代碼,則當(dāng)事件發(fā)生時(shí)將執(zhí)行組事件的處理代碼。例如,在如圖所示的表單中有一個(gè)選項(xiàng)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論