對(duì)象模型與事件模型_第1頁
對(duì)象模型與事件模型_第2頁
對(duì)象模型與事件模型_第3頁
對(duì)象模型與事件模型_第4頁
對(duì)象模型與事件模型_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第6章對(duì)象模型與事件模型蘇州大學(xué)計(jì)算機(jī)工程系16.1面向?qū)ο蟪绦蛟O(shè)計(jì)概述結(jié)構(gòu)化程序設(shè)計(jì)用功能分解來達(dá)到面向過程的方法以解決問題。面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)基于問題對(duì)象的自底向上的功能綜合。面向?qū)ο蟮姆椒▽⑦^程和信息組合成單元(類和對(duì)象)。這些單元中的信息通常是隱藏的,需要通過界面或一系數(shù)列的行才能顯現(xiàn)出來。面向?qū)ο蟮某绦蛟O(shè)計(jì)是通過對(duì)類、子類和對(duì)象等的設(shè)計(jì)來實(shí)現(xiàn)的。2面向?qū)ο蠹夹g(shù)的優(yōu)點(diǎn)面向?qū)ο蠹夹g(shù)是采用以對(duì)象為中心的問題求解方法,更加自然地、直接地反映了現(xiàn)實(shí)中的客觀世界,大大降低了程序開發(fā)的工作量和系統(tǒng)維護(hù)的費(fèi)用。面向?qū)ο蟪绦蛟O(shè)計(jì)能夠使消息傳遞機(jī)制與分布式并行處理系統(tǒng)、網(wǎng)絡(luò)通信等模型自然地融合。3類(CLASS)類定義了對(duì)象特征以及對(duì)象外觀和行為的模板。類刻劃了一組具有共同特性的對(duì)象。四大特征:繼承性:在類、子類和對(duì)象之間自動(dòng)共享函數(shù)和數(shù)據(jù)的一種機(jī)制。多態(tài)性:允許相關(guān)的對(duì)象對(duì)同一消息做出不同反應(yīng)。封裝性:在對(duì)象內(nèi)部,數(shù)據(jù)和函數(shù)是不可分割的,只有通過對(duì)象自身的函數(shù)才能訪問數(shù)據(jù)。抽象性:允許用戶忽略實(shí)施細(xì)節(jié),而從更高的等級(jí)上考慮一個(gè)實(shí)體。4基類(BASSCLASS)VFP系統(tǒng)提供的類叫基類。由其他類派生的類叫子類。父類:派生出其子類的類。可以是基類,也可是基類的子類。VFP的基類有兩種:容器類和控件類。容器類:包容其他類的基類。將容器類的對(duì)象加入表單后,無論在設(shè)計(jì)時(shí)還是在運(yùn)行時(shí),均可以將該容器類的對(duì)象作為一個(gè)整體進(jìn)行操作,也可以分別對(duì)其包容的對(duì)象處理。控件類:可以包含在容器類中的基類。詳見教材P.122。5對(duì)象(OBJECT)類的一個(gè)實(shí)例,包括了數(shù)據(jù)和過程(操作),是動(dòng)態(tài)概念。VFP中主要指表單、表單集及各種控件。對(duì)象根據(jù)所基于的類的性質(zhì),也可以分為容器對(duì)象和控件對(duì)象。程序由一個(gè)或多個(gè)類組成,在程序運(yùn)行時(shí)需要?jiǎng)?chuàng)建該類的各個(gè)對(duì)象。每個(gè)對(duì)象都有屬性以及與之相關(guān)的事件和方法。6屬性(PROPERTY)每個(gè)對(duì)象都有屬性。定義了對(duì)象的特征或某一方面的行為。屬性由對(duì)象所基于的類決定。屬性值既能在設(shè)計(jì)時(shí)也可在運(yùn)行時(shí)進(jìn)行設(shè)置。基類的最小屬性集:Class:該類屬于何種類型。BaseClass:該類的基類。ClassLibray:類庫文件。ParentClass:該類的父類。7事件(EVENT)對(duì)象可識(shí)別的一個(gè)動(dòng)作。用戶不能自定義事件一般由用戶或系統(tǒng)激活。可編寫代碼來響應(yīng)事件。基類的最小事件集:Init:當(dāng)對(duì)象創(chuàng)建的時(shí)候激活。Destroy:當(dāng)對(duì)象從內(nèi)存中釋放時(shí)激活。Error:當(dāng)事件或方法程序中出現(xiàn)錯(cuò)誤時(shí)激活。VFP核心事件集。詳見教材P.127。8事件激活的順序表單集的事件激活順序:詳見教材P.129。容器和控件事件:用戶以任何一種方式與對(duì)象交互時(shí),每個(gè)對(duì)象都獨(dú)立地接收自己的事件。容器不處理所包含控件的相關(guān)事件。

例外:命令按鈕組和選項(xiàng)按鈕組。類與控件事件:如果控件與類均有代碼,則執(zhí)行控件的代碼。如果沒有與控件相關(guān)聯(lián)的代碼,VFP將在類層次的更高層上查看是否有與此事件相關(guān)的代碼。找到則執(zhí)行。9方法(METHOD)對(duì)象能夠執(zhí)行的一個(gè)操作。是與對(duì)象相關(guān)聯(lián)的過程或函數(shù)。用戶可自定義方法程序。事件可以具有與之相關(guān)聯(lián)的方法程序。當(dāng)事件被激活時(shí),相關(guān)的方法代碼被執(zhí)行。方法程序也可以獨(dú)立于事件而單獨(dú)存在,但它在系統(tǒng)中要被顯式地調(diào)用。106.2處理對(duì)象引用對(duì)象必須清楚對(duì)象的容器層次關(guān)系和對(duì)象的名。各個(gè)對(duì)象之間、對(duì)象與屬性之間用“·”進(jìn)行分隔。絕對(duì)引用:從容器的最高層次引用對(duì)象,給出對(duì)象的絕對(duì)地址。

如:Formset1.Form1.Command1相對(duì)引用:在容器層次中相對(duì)于某個(gè)容器的引用。通常運(yùn)用于某個(gè)對(duì)象的事件處理代碼或方法程序代碼中。

如:This.Parent.Command211相對(duì)引用所用的屬性和關(guān)鍵字屬性:ActiveForm:當(dāng)前活動(dòng)表單。ActivePage:頁框中活動(dòng)的頁面。ActiveControl:當(dāng)前表單中有焦點(diǎn)的控件。Parent:當(dāng)前對(duì)象的直接容器。關(guān)鍵字:只能在方法程序或事件處理代碼中使用。THIS:當(dāng)前對(duì)象。THISFORM:當(dāng)前對(duì)象所在的表單。THISFORMSET:當(dāng)前對(duì)象所在的表單集。系統(tǒng)變量_SCREEN表示屏幕對(duì)象。12設(shè)置對(duì)象的屬性設(shè)計(jì)時(shí)設(shè)置:即在“屬性”窗口中設(shè)置對(duì)象屬性。運(yùn)行時(shí)設(shè)置:引用對(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=“黑體”以上均為絕對(duì)引用。13設(shè)置對(duì)象的屬性利用WITH……ENDWITH簡化語句

WITHFormSet1.Form1.Text1

.Value=DATE()

.ForeColor=RGB(0,0,0)

.BackColor=RGB(192,192,192)

.FontName=“黑體”

ENDWITH14調(diào)用方法程序可以在應(yīng)用程序的任何地方調(diào)用已存在對(duì)象的方法程序。語法:引用對(duì)象.方法程序例:

FormSet1.Form1.Show

FormSet1.Form1.Text2.Setfocus對(duì)于有返回值的方法程序必須以圓括號(hào)結(jié)尾(類似于函數(shù)調(diào)用),如果有參數(shù)傳遞給方法程序,則參數(shù)要放在括號(hào)里。156.3常用事件鼠標(biāo)事件鍵盤事件表單事件控件焦點(diǎn)事件數(shù)據(jù)環(huán)境事件16鼠標(biāo)事件MouseMove事件:用戶在一個(gè)對(duì)象上移動(dòng)鼠標(biāo)時(shí)發(fā)生。Click事件:鼠標(biāo)單擊對(duì)象時(shí)發(fā)生。RightClick事件:在控制上按下并釋放鼠標(biāo)右鍵時(shí)發(fā)生。DblClick事件:當(dāng)連續(xù)兩次快速按下左鍵并釋放時(shí)發(fā)生。MouseDown事件:當(dāng)用戶按下一個(gè)鼠標(biāo)鍵時(shí)發(fā)生。MouseUp事件:當(dāng)用戶釋放一個(gè)鼠標(biāo)鍵時(shí)發(fā)生。DragDrop事件:當(dāng)完成拖放操作時(shí)發(fā)生。DragOver事件:控制拖過目標(biāo)對(duì)象時(shí)發(fā)生。

DropDown事件:單擊組合框控制中的下箭頭后發(fā)生。Scrolled事件:單擊滾動(dòng)條時(shí)發(fā)生。DownClick事件:當(dāng)單擊控制的下箭頭時(shí)發(fā)生。UpClick事件:在用戶單擊控制的向上箭頭時(shí)發(fā)生。具體見教材P.130~134。17鍵盤事件——KeyPress事件當(dāng)用戶按下并釋放某個(gè)鍵時(shí)發(fā)生此事件。適用于:復(fù)選框、組合框、命令按鈕、編輯框、表單、列表框、選項(xiàng)按鈕、微調(diào)、文本框。通常具有焦點(diǎn)的對(duì)象接收該事件。兩種特殊情況下,表單接收此事件:表單中不包含控件,或表單的控件都不可見或未激活。

表單的KeyPreview屬性設(shè)置為“真”。表單首先接收KeyPress事件,然后具有焦點(diǎn)的控件才接收此事件。

18改變控件內(nèi)容的事件InteractiveChange事件在使用鼠標(biāo)或鍵盤更改控件的值時(shí)發(fā)生。適用于:復(fù)選框、組合框、命令組、編輯框、列表框、選項(xiàng)組、微調(diào)、文本框。在每次交互更改對(duì)象時(shí),都要發(fā)生此事件。ProgrammaticChange事件在程序代碼中更改一個(gè)控件值時(shí)發(fā)生。其他同InteractiveChange事件。19焦點(diǎn)事件GotFocus事件:當(dāng)對(duì)象接收到焦點(diǎn)時(shí)發(fā)生。當(dāng)表單沒有控制或者它的所有控制已廢止或不可見時(shí)表單才能接收焦點(diǎn)。當(dāng)對(duì)象的Enabled屬性和Visible屬性均為“真”時(shí)對(duì)象才能接收焦點(diǎn)。LostFocus事件:當(dāng)對(duì)象失去焦點(diǎn)時(shí)發(fā)生。When事件:在控件接收焦點(diǎn)之前發(fā)生。Valid事件:在控件失去焦點(diǎn)之前發(fā)生。焦點(diǎn):用以指出當(dāng)前被操作的對(duì)象。20表單事件Load事件在創(chuàng)建對(duì)象前發(fā)生。表單集的Load事件先于表單的Load事件。在該事件發(fā)生時(shí)還沒有創(chuàng)建任何控件對(duì)象,因此在此事件中不能有對(duì)控件進(jìn)行處理的代碼。Unload事件

在對(duì)象被釋放時(shí)發(fā)生。是釋放表單或表單集的最后一個(gè)事件。此兩事件用于表單和表單集。21表單事件Activate事件

當(dāng)激活表單、表單集或頁面對(duì)象,或顯示工具欄對(duì)象時(shí)發(fā)生。Deactivate事件

對(duì)于一個(gè)容器對(duì)象,當(dāng)所包含的對(duì)象沒有焦點(diǎn)而不再處于活動(dòng)狀態(tài)時(shí)發(fā)生。對(duì)于工具欄,當(dāng)使用Hide方法隱藏工具欄時(shí)發(fā)生。卸載表單時(shí)不發(fā)生。激活新對(duì)象時(shí),舊對(duì)象的Deactivate事件發(fā)生。此兩事件用于表單、表單集、頁面、工具欄。22表單事件Paint事件

表單或工具欄重畫時(shí)發(fā)生。應(yīng)用于表單、工具欄。移動(dòng)或放縮Form或控件、改變?nèi)魏我粋€(gè)能影響大小和外觀的變量及調(diào)用Refresh方法時(shí)避免使用。Resize事件

調(diào)整對(duì)象大小時(shí)發(fā)生。適用于:列、容器對(duì)象、控制對(duì)象、表單、表格、OLE綁定型控制、OLE容器控制、頁框、工具欄。23數(shù)據(jù)環(huán)境事件AfterCloseTables事件

當(dāng)在數(shù)據(jù)環(huán)境中為Form、FormSet或Report釋放指定的表或視圖時(shí)發(fā)生。對(duì)于表單或表單集,該事件發(fā)生在Unload事件之后或由數(shù)據(jù)環(huán)境打開的表或視圖被關(guān)閉之后。對(duì)于報(bào)表,該事件發(fā)生在此報(bào)表的數(shù)據(jù)環(huán)境所打開的任一表或視圖被關(guān)閉之后。任何時(shí)候調(diào)用CloseTables方法都發(fā)生此事件。BeforeOpenTables事件

表單、表單集或報(bào)表的數(shù)據(jù)環(huán)境相關(guān)的表或視圖打開之前發(fā)生。對(duì)于表單或表單集,該事件發(fā)生在Load事件之前。24其他事件Timer事件

適用于計(jì)時(shí)器。當(dāng)經(jīng)過Interval屬性中指定的毫秒數(shù)時(shí)發(fā)生。Init事件:當(dāng)創(chuàng)建對(duì)象時(shí)發(fā)生。容器所包含的對(duì)象的Init事件在容器的Init事件之前發(fā)生。Destroy事件:當(dāng)釋放一個(gè)對(duì)象的實(shí)例時(shí)發(fā)生。容器對(duì)象的Destroy事件在它所包含的任何一個(gè)對(duì)象的Destroy事件之前發(fā)生Error事件:一個(gè)方法中有運(yùn)行錯(cuò)誤時(shí)發(fā)生。25事件驅(qū)動(dòng)和事件循環(huán)程序代碼大多是為對(duì)象或?qū)ο蟮氖录帉懀绦虼a的執(zhí)行總是由某個(gè)事件的發(fā)生而引起。程序的執(zhí)行是由事件驅(qū)動(dòng)的。程序啟動(dòng)后根據(jù)發(fā)生的事件執(zhí)行相應(yīng)的程序,如無事件發(fā)生,則空閑等待事件發(fā)生,此時(shí)用戶可啟動(dòng)其他應(yīng)用程序。READEVENTS命令建立事件循環(huán),后面的代碼不執(zhí)行。通常出現(xiàn)在應(yīng)用程序的主程序中或主菜單的清理代碼或主菜單的某事件處理程序中。CLEAREVENTS命令終止事件,再回到READEVENTS命令后面的那一行代碼。266.4常用方法ActivateCell方法:激活表格控件中的一個(gè)單元。AddColumn方法:向表格控件中添加列對(duì)象。AddItem方法:在組合框或列表框中添加一個(gè)新數(shù)據(jù)項(xiàng)。AddObject方法:在運(yùn)行時(shí)向容器對(duì)象中添加對(duì)象。Box方法:在表單對(duì)象上畫矩形。Circle方法:在表單上畫一個(gè)圓或橢圓。Clear方法:清除組合框或列表框控件的內(nèi)容。Cls方法:清除表單中的圖形和文本。DeleteColumn方法:從一個(gè)表格控件中刪除一個(gè)列對(duì)象。27常用方法DoCmd方法:執(zhí)行一條指定的VisualFoxPro命令。Draw方法:重畫表單對(duì)象。Hide方法:隱藏表單、表單集或工具欄。Line方法:在表單對(duì)象中畫一條線。Print方法:在表單對(duì)象上打印一個(gè)字符串。Quit方法:結(jié)束一個(gè)實(shí)例,返回到創(chuàng)建實(shí)例的應(yīng)用程序。Refresh方法:重畫表單或控件,并刷新所有值。Release方法:從內(nèi)存中釋放表單集或表單。RemoveItem方法:從組合框或列表框中移去一項(xiàng)。28常用方法RemoveObject方法:運(yùn)行時(shí)從容器對(duì)象中刪除一個(gè)指定的對(duì)象。Requery方法:重新查詢

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論