第五章程序設(shè)計(jì)基礎(chǔ)對象_第1頁
第五章程序設(shè)計(jì)基礎(chǔ)對象_第2頁
第五章程序設(shè)計(jì)基礎(chǔ)對象_第3頁
第五章程序設(shè)計(jì)基礎(chǔ)對象_第4頁
第五章程序設(shè)計(jì)基礎(chǔ)對象_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第五章程序設(shè)計(jì)基礎(chǔ)對象第一頁,共二十八頁,編輯于2023年,星期四1、對象(Object)現(xiàn)實(shí)世界的實(shí)體——事、物、概念等,都統(tǒng)稱為對象。在面向?qū)ο笙到y(tǒng)中一切成分都是對象,大到整個系統(tǒng)、項(xiàng)目、數(shù)據(jù)庫、表、表單,小到窗口、控件都被視為對象。

對象是一個邏輯實(shí)體,它包括數(shù)據(jù)和完成處理所需要的程序代碼,是數(shù)據(jù)和代碼的組合。第二頁,共二十八頁,編輯于2023年,星期四對象對象是一個封裝了屬性、事件和方法的實(shí)體,對對象的操作是通過對象的屬性、事件和方法來完成。屬性描述了對象的靜態(tài)特征;事件是由對象識別的動作,一個事件產(chǎn)生后會觸發(fā)相關(guān)聯(lián)的代碼,每個對象都有特定的事件;方法,是對象固有的動作,也就是已經(jīng)編寫好了的代碼。第三頁,共二十八頁,編輯于2023年,星期四類“類”源于日常生活中類別、分類概念。同類實(shí)體具有相同的屬性和行為特征。類是對一組相似對象的共同抽象描述,它將該組對象所具有的共同特征集中起來,用于說明該組對象的性質(zhì)和能力??梢钥闯?,“類”是將相同屬性和行為特征的對象,提取共同屬性和特征而產(chǎn)生的,是對象抽象化的結(jié)果,是對象的藍(lán)圖和框架。而“對象”是類的具體實(shí)例,它是將類所描述的共同特征賦予具體實(shí)體而形成的。因此,類與對象既有區(qū)別,又有聯(lián)系,兩者關(guān)系十分緊密。所有對象的屬性、事件和方法都是在定義類時被指定,由于類是定義了對象特征、外觀和行為的模板,所以對象由類生成,生成的對象也自然具有相同的屬性、事件和方法。例如,由復(fù)選框類、單選按鈕類可以生成各種形式的復(fù)選框、單選按鈕。第四頁,共二十八頁,編輯于2023年,星期四類的特性1.封裝性封裝實(shí)際上是一種信息隱藏技術(shù)。封裝就是指將對象的方法程序和屬性代碼包裝在一起。封裝將操作對象的內(nèi)部復(fù)雜性與應(yīng)用程序的其它部分隔離開來。例如,我們將電話的零部件和線路封裝在電話的外殼里,這樣使用戶看不到電話內(nèi)部線路的復(fù)雜性,只專心撥號、講話、聽音,從而也產(chǎn)生用戶對電話具有撥號、講話、聽音功能這種抽象化的認(rèn)識。第五頁,共二十八頁,編輯于2023年,星期四面向?qū)ο蟪绦蛟O(shè)計(jì)的特性2.繼承性例如,由基本類型的電話(撥號、講話、聽音功能),可以派生出電話傳真機(jī)、移動電話、公用投幣電話等,這些電話都繼承了電話基本類型的撥號、講話、聽音功能,又添加了各自的獨(dú)特功能。由于有了繼承性,當(dāng)我們把基本類型的電話由撥號改為按鍵,其它類型的電話都可以改為按鍵,繼承性使我們不必研究每種電話如何實(shí)現(xiàn)按鍵。繼承性即子類延用父類特征的能力。一個子類可以擁有其父類的全部功能,然后在此基礎(chǔ)上,可以添加其他控件或功能。繼承性體現(xiàn)了類層次中的“共享”機(jī)制。第六頁,共二十八頁,編輯于2023年,星期四面向?qū)ο蟪绦蛟O(shè)計(jì)的特性—2.繼承性由于有繼承性,就可以使得在一個類上所做的改動反映到它的所有子類當(dāng)中,若發(fā)現(xiàn)類中有一個小錯誤,用戶不必逐一修改各子類的代碼,只需要在父類中改動,然后這個變動將會體現(xiàn)在全部子類中。這種自動更新可節(jié)省用戶的時間和精力。若類的層次具有多層,則這種繼承性還具有傳遞作用,即下層的子類可繼承其以上各層父類的全部功能。第七頁,共二十八頁,編輯于2023年,星期四面向?qū)ο蟪绦蛟O(shè)計(jì)的特性3.多態(tài)性例:F1~F12功能鍵,不同的軟件環(huán)境對每一功能鍵有不同的功能定義。同是一鍵在不同的軟件中就會產(chǎn)生不同的操作,這就是多態(tài)性。對象之間是通過“消息”傳遞實(shí)現(xiàn)相互聯(lián)系。向某個對象發(fā)送消息,就是要求該對象執(zhí)行一個操作。一個消息只說明接受者應(yīng)該執(zhí)行哪種操作,而不說明怎樣去執(zhí)行這個操作,操作的具體執(zhí)行由消息接受者確定。第八頁,共二十八頁,編輯于2023年,星期四面向?qū)ο蟪绦蛟O(shè)計(jì)的特性—3.多態(tài)性所謂多態(tài)性是指同一個消息可以根據(jù)接收消息的對象不同采用不同的操作。也就說,當(dāng)不同的對象收到相同的消息時將產(chǎn)生不同的操作。例如VFP中的加“+”運(yùn)算符,不僅可以進(jìn)行數(shù)值相加,而且可以進(jìn)行字符串相加。這完全取決于表達(dá)式中加法運(yùn)算符“+”所操作的對象的數(shù)據(jù)類型。第九頁,共二十八頁,編輯于2023年,星期四舉例sdie=createobject(‘employee’)&&從類派生實(shí)例(對象)sdie.employeename="abc"sdie.worktime={^2005-11-1}?"worktme:",sdie.worktime?sdie.workhowlong()?sdie.employeename*定義類defineclassemployeeascustomemployeename=""worktime={^2002/09/11}procedureworkhowlong()returndate()-this.worktimeendprocenddefine第十頁,共二十八頁,編輯于2023年,星期四VFP中的基類基類是系統(tǒng)內(nèi)部已定義好的基本類,用戶可以利用這些基類創(chuàng)建自己的對象,或派生出子類。第十一頁,共二十八頁,編輯于2023年,星期四VFP中的基類由基類可以創(chuàng)建對象,對象將繼承該類的功能。每一個對象都會對特定事件作出響應(yīng),對一些最小事件(基本事件)的響應(yīng),各類是共同的。

事件——它由對象來識別。用戶可以編寫程序代碼對相應(yīng)的動作進(jìn)行響應(yīng)。

事件可以由操作者的一個動作產(chǎn)生,如單擊鼠標(biāo)或按下一個鍵;也可以由程序代碼或系統(tǒng)產(chǎn)生。第十二頁,共二十八頁,編輯于2023年,星期四VFP基類的最小事件集每個基類都可能有各自的區(qū)別于其它基類的屬性、事件或方法,但VFP基類都至少包含以下三個事件和四個屬性。VFP的基類有以下最小事件集——所有基類都具有的事件組成的集合,包含這三個事件:Init(初始):當(dāng)對象創(chuàng)建時激活。Destroy(破壞):當(dāng)對象從內(nèi)存中釋放時激活。Error(錯誤):當(dāng)類中的事件或方法發(fā)生錯誤時激活。第十三頁,共二十八頁,編輯于2023年,星期四VFP基類的最小屬性VFP的基類都有各自屬性,但還有最小屬性(最基本屬性),所有基類至少包含以下四個屬性:Class(類):該類對象屬于何類,返回派生對象的類名稱。BaseClass(基類):該類是由何基類派生而來,指定被引用對象的基類的類名。例如Form(表單),CommandButton(命令按鈕)或TextBox(文本框)。ClassLibrary(類庫):該類從屬于哪個類庫,指定用戶自定義類庫的文件名。ParentClass(父類):返回對象所屬的父類名。若該類直接由VFP基類派生而來,則ParentClass屬性值與BaseClass屬性值相同,即父類為基類。第十四頁,共二十八頁,編輯于2023年,星期四基類中的容器類和控件類VFP的基類有兩大主要類型,容器類和控件類。因此VFP的對象也可分為這兩大類型。1.容器類容器類中可以包含其他對象,這些對象可以是容器類對象,也可以是控件類對象,并允許訪問這些對象。2.控件類控件類也可以包含其他對象,這些對象在設(shè)計(jì)和運(yùn)行時是作為一個整體對待進(jìn)行修改或操作,而不能單獨(dú)對其中的個別對象進(jìn)行修改或操作。也就是說,控件類中的對象不能是容器類對象,只能是最基本的對象,不能再分隔為幾個其它對象。容器類與控件類的根本區(qū)別在于,容器類可以按層次訪問容器類中的對象;而控件類的對象都是同一層的對象,不能再包含下一層對象。第十五頁,共二十八頁,編輯于2023年,星期四引用對象VFP中引用對象可以有兩種方式:絕對引用和相對引用。第十六頁,共二十八頁,編輯于2023年,星期四引用對象1.對象絕對引用絕對引用是通過提供對象完整的容器層次來引用對象的。例如:在嵌套的容器中,使命令按鈕1(Command1)可用,使命令按鈕2(Command2)禁用,可以通過設(shè)置命令按鈕的Enabled屬性來實(shí)現(xiàn)。Formset.Form.PageFrame.Page.Command1.Enabled=.T.(表單集.表單.頁框.頁.命令按鈕.Enabled=.T.)Formset.Form.PageFrame.Page.Command2.Enabled=.F.第十七頁,共二十八頁,編輯于2023年,星期四2.對象相對引用對象相對引用是通過使用一些屬性和關(guān)鍵字,可以直接從對象某層次中引用對象。對象相對引用時,要表示出從哪一級對象開始引用對象,使用的屬性和關(guān)鍵字含義如下:

Parent(父屬性):引用該對象所在的直接容器的屬性、方法或控制。

THIS:引用該對象本身(直接由對象本身開始引用)。

THISFORM:引用包含該對象的表單(由包含該對象的表單開始引用)。

THISFORMSET:引用包含該對象的表單集(由包含該對象的表單集開始引用)。第十八頁,共二十八頁,編輯于2023年,星期四2.對象相對引用用于相對引用的屬性和關(guān)鍵字,在容器層次結(jié)構(gòu)中表示某個層次,其引用關(guān)系為:THISFORMSET.THISFORM.THIS.Property (表單集.表單.對象.屬性)例如:THISFORM.Command1.Caption=”確定”通過Caption屬性設(shè)置命令按鈕Command1的標(biāo)題。而Command1是包含在表單中。THISFORMSET.Form1.Command1.Caption=”確定”設(shè)置表單集中Form1表單里的Command1命令按鈕的標(biāo)題屬性。第十九頁,共二十八頁,編輯于2023年,星期四設(shè)置對象屬性對象的屬性既可以在設(shè)計(jì)對象時設(shè)置,也可以在程序運(yùn)行時重新設(shè)置。第二十頁,共二十八頁,編輯于2023年,星期四設(shè)置屬性設(shè)置屬性值的語法是:Container.Object.Property=Value

(即:容器.對象.屬性=值)例:THISFORM.Image1.Visible=.T.&&設(shè)置表單中的圖像1可見THISFORM.Image2.Visible=.F.&&設(shè)置表單中的圖像2不可見THISFORM.Backcolor=rgb(192,192,192)&&設(shè)置表單的背景顏色第二十一頁,共二十八頁,編輯于2023年,星期四設(shè)置屬性在屬性設(shè)置時,可能要為一個對象設(shè)置多個屬性,或者為同一容器中的多個對象設(shè)置屬性,都要給出相同的層次結(jié)構(gòu)中的從屬關(guān)系(類似路徑)。為此VFP提供了WITH……ENDWITH,結(jié)構(gòu)語句,簡化了設(shè)置多個對象、多個屬性的過程。例:WITHTHISFORMSET.Form1.Image1.Visible=.T..Image2.Visible=.F..Backcolor=RGB(255,255,0)ENDWITH第二十二頁,共二十八頁,編輯于2023年,星期四調(diào)用對象方法調(diào)用對象方法的語法:Object.Method即,<對象>.<方法>這里對象引用同樣可以絕對引用或相對引用。例:THISFORM.Box(100,150)&&Box方法在表單中畫一個矩形,括號可不要

THISFORM.Refresh

&&Refresh方法刷新表單有些方法可以返回值,方法名后要有圓括號。如果方法要使用多個參數(shù),要把這些參數(shù)放到方法名后的圓括號內(nèi),并用逗號將它們分開。語法是:Object.Method()第二十三頁,共二十八頁,編輯于2023年,星期四編寫事件代碼當(dāng)事件發(fā)生時,該事件的代碼程序(過程代碼)就將被執(zhí)行,這是對事件的響應(yīng)。第二十四頁,共二十八頁,編輯于2023年,星期四編寫事件代碼例如:對表單中標(biāo)題為“確認(rèn)”的命令按鈕為其Click事件添加如下過程代碼:SELECTRSDAAPPENABLANKREPLACERSDA.姓名WITHTHISFORM.TxtName.Vaule&&取表單中文本框值屬性數(shù)據(jù)替換THISFORM.Release&&調(diào)用從內(nèi)存中釋放表單方法程序這樣,當(dāng)用戶單擊該“確認(rèn)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論