




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第八章第八章 面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)8.1 面向?qū)ο蟪绦蛟O(shè)計(jì)的概念8.2 VFP中的類8.3 VFP中對象的操作第八章第八章 面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì) VFP6支持過程化程序設(shè)計(jì)和面向?qū)ο蟪绦蛟O(shè)計(jì)兩種程序設(shè)計(jì)與開發(fā)的類型。過程化程序設(shè)計(jì):過程化程序設(shè)計(jì):它是采用結(jié)構(gòu)化編程語它是采用結(jié)構(gòu)化編程語句來編寫的程序。這類方法的特點(diǎn)是容易句來編寫的程序。這類方法的特點(diǎn)是容易把一個(gè)復(fù)雜的程序分解為若干個(gè)較小的過把一個(gè)復(fù)雜的程序分解為若干個(gè)較小的過程,每個(gè)過程都可進(jìn)行獨(dú)立的調(diào)試。程,每個(gè)過程都可進(jìn)行獨(dú)立的調(diào)試。這類設(shè)計(jì)方法發(fā)展的總思想是從程序員角這類設(shè)計(jì)方法發(fā)展的總思想是從程序員角度考慮使
2、程序設(shè)計(jì)更簡單,而較少從使用度考慮使程序設(shè)計(jì)更簡單,而較少從使用角度去考慮。使用這類方法設(shè)計(jì)的程序流角度去考慮。使用這類方法設(shè)計(jì)的程序流程完全由程序員控制,使用者只能做由程程完全由程序員控制,使用者只能做由程序員預(yù)先安排好的事情。序員預(yù)先安排好的事情。面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì):這類程序設(shè)計(jì)思想是面向這類程序設(shè)計(jì)思想是面向?qū)ο?,即設(shè)計(jì)的重要任務(wù)在于描述對象。程序?qū)ο?,即設(shè)計(jì)的重要任務(wù)在于描述對象。程序是由事件驅(qū)動(dòng)的,因而,在執(zhí)行過程中,持續(xù)是由事件驅(qū)動(dòng)的,因而,在執(zhí)行過程中,持續(xù)等待的是一個(gè)發(fā)生在對象上的事件。而發(fā)生什等待的是一個(gè)發(fā)生在對象上的事件。而發(fā)生什么事件則要看使用者的操作,如單
3、擊、雙擊鼠么事件則要看使用者的操作,如單擊、雙擊鼠標(biāo)等。至于下一步的程序流向,則要看驅(qū)動(dòng)的標(biāo)等。至于下一步的程序流向,則要看驅(qū)動(dòng)的是什么事件。這類程序設(shè)計(jì)的主要目的是從任是什么事件。這類程序設(shè)計(jì)的主要目的是從任何方便與簡化使用入手,由使用者控制程序流何方便與簡化使用入手,由使用者控制程序流向,這在一定程序上增加了編程的難度。向,這在一定程序上增加了編程的難度。8.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)的概念面向?qū)ο蟮某绦蛟O(shè)計(jì)的概念面向?qū)ο缶幊逃谩皩ο蟆北憩F(xiàn)事物,用“事件”表示處理事物的動(dòng)作,用“方法”表現(xiàn)處理事物的過程。面向?qū)ο蟪绦蛟O(shè)計(jì)時(shí),不再是單純地從代碼的第一行一直編寫到最后一行,而是考慮如何創(chuàng)建對象,利
4、用對象來簡化程序設(shè)計(jì)。Visual FoxPro不但仍然支持標(biāo)準(zhǔn)的結(jié)構(gòu)化程序設(shè)計(jì),而且在語言上還進(jìn)行了擴(kuò)展,提供了面向?qū)ο蟪绦蛟O(shè)計(jì)的強(qiáng)大功能和更大靈活性。VFP是面向?qū)ο?Object Oriented)的,是以事件驅(qū)動(dòng)為運(yùn)行機(jī)制的。8.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)的概念面向?qū)ο蟮某绦蛟O(shè)計(jì)的概念例8.1:設(shè)計(jì)一個(gè)窗口,如下圖所示窗口中包含兩個(gè)文本框,用于輸入數(shù)據(jù),還有一個(gè)命令按紐,單擊它可以將兩個(gè)文本框中的數(shù)相加,并在等號右邊顯示結(jié)果在在VFP中,窗口叫做中,窗口叫做“表單表單”,表,表單的擴(kuò)展名為單的擴(kuò)展名為.scx。圖8.1 例8.1示例圖8.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)的概念面向?qū)ο蟮某绦蛟O(shè)計(jì)的概念
5、CLICK事件代碼:thisform.label3.caption=alltrim(str(val(thisform.text1.value)+val(thisform.text2.value)8.1.1 對象對象1.對象對象 面向?qū)ο蟮睦碚撌紫劝熏F(xiàn)實(shí)世界中的各種事物,劃分為不同的類(Class),類是抽象的概念。類有“狀態(tài)”和“行為”,“狀態(tài)”是類的靜態(tài)屬性,但可以通過動(dòng)態(tài)的“行為”來改變。 一個(gè)類的具體實(shí)例就是對象(Object)。類是抽象的,而對象是具體的。對象具有該類的狀態(tài)和行為。 客觀世界里的任何實(shí)體都可以被看作是對象。對象可以是具體的物,也可以指某些概念。 從編程的角度來看,對象是
6、一種將數(shù)據(jù)和操作過程結(jié)合在一起的數(shù)據(jù)結(jié)構(gòu),或者是一種具有屬性(數(shù)據(jù))和方法(過程和函數(shù))的集合體。事實(shí)上程序中的對象就是對客觀世界中對象的一種抽象描述。8.1.1 對象對象 從程序員的角度:世界上一切東西都是對象;在面向?qū)ο笙到y(tǒng)中一切成分都是對象,大到整個(gè)系統(tǒng)、項(xiàng)目、數(shù)據(jù)庫、表、表單,小到窗口、控件都被視為對象。 從程序的角度:對象是一個(gè)實(shí)體,包含一定的屬性和方法(動(dòng)作),屬性用來表示對象的狀態(tài),方法用來描述對象的行為,并且對象能夠?qū)ν饨缡录M(jìn)行響應(yīng)。8.1.1 對象對象 在面向?qū)ο蟮姆椒ɡ铮瑢ο蟊欢x為由屬性和相關(guān)方法組成的包。 方法是描述對象行為的過程,是對當(dāng)某個(gè)對象接受了某個(gè)信息后所采取
7、的一系列操作的描述。8.1.1 對象對象2.對象的特性對象的特性一般對象具有如下屬性: 屬性(屬性(Property):屬性用來表示對象的狀態(tài)。在程序設(shè)計(jì)中,類或?qū)ο蟮摹盃顟B(tài)”或特征稱為屬性。屬性具有屬性名和屬性值,通過屬性名,可以訪問屬性值,或?yàn)閷傩再x值。 事件(事件(Event):類或?qū)ο罂赡軋?zhí)行或發(fā)生的行為稱為事件。8.1.1 對象對象 事件過程(事件過程(Event Procedure):即對象響應(yīng)某個(gè)事件所執(zhí)行的程序代碼。程序代碼是為處理特定的事件而編寫的一段程序,也稱為事件代碼。 面向?qū)ο蟮某绦蛟O(shè)計(jì)的核心思路,就是為這些事件書寫程序代碼,在代碼中改變對象的一些屬性值,并讓對象做出我
8、們所期望的反應(yīng)。 方法(方法(Method):又稱方法程序,是描述對象行為的過程。即指對象所固有的完成某種任務(wù)的功能,是對象能夠執(zhí)行的一個(gè)操作。因此,“方法”類似于面向過程程序設(shè)計(jì)中的“過程”和“函數(shù)”。VFP的一些常用方法:的一些常用方法:RELEASE:從內(nèi)存中釋放表單或表單集。從內(nèi)存中釋放表單或表單集。Show: 顯示表單顯示表單Setfocus:為一個(gè)控件指定焦點(diǎn)為一個(gè)控件指定焦點(diǎn)Hide:隱藏表單、表單集和工具欄隱藏表單、表單集和工具欄Quit:退出退出VFP的一個(gè)實(shí)例。的一個(gè)實(shí)例。8.1.1 對象對象 從面向?qū)ο蟮睦碚摽?,“方法”與“事件”本質(zhì)上是相同的?!笆录笨梢钥闯上到y(tǒng)預(yù)先定
9、義的空“方法”,可以在事件中調(diào)用用戶定義的方法,也可以在用戶自定義方法中激活特定事件。但在VFP中,“方法”在很多情況下更基本,因?yàn)閂FP預(yù)先定義了一些方法,可以在事件中調(diào)用它們,而它們一般不調(diào)用事件。8.1.2 類類1.類的概念類的概念 類是對一類相似對象的性質(zhì)描述,這些對象具有相同種類的屬性以及方法 。 為了便于開發(fā)系統(tǒng),面向?qū)ο蟮拈_發(fā)工具一般都會提供很多預(yù)先定義好的類和對象,并為這些類和對象預(yù)先設(shè)置足夠多的屬性和事件,以及足夠多的方法,供程序員自由調(diào)用。 通常,把基于某個(gè)類生成的對象稱為這個(gè)類的實(shí)例??梢哉f任何一個(gè)對象都是某個(gè)類的一個(gè)實(shí)例。 方法雖然定義在類中,但執(zhí)行方法的主體是對象。同
10、一個(gè)方法,若由不同的對象去執(zhí)行,一般會產(chǎn)生不同的效果。8.1.2 類類類類屬性屬性1方法方法方法方法屬性屬性Eg:TEXTBOX類的一些常用屬性:類的一些常用屬性:Alignment:設(shè)置文本的對齊方式。設(shè)置文本的對齊方式。Fontsize:指定字體的大小。指定字體的大小。Value:文本框中的任何數(shù)據(jù)類型的值,或文本框中的任何數(shù)據(jù)類型的值,或者字段或變量的數(shù)據(jù)類型。者字段或變量的數(shù)據(jù)類型。1.類的概念類的概念圖8.2 類的結(jié)構(gòu)8.1.2 類類2.子類與繼承子類與繼承 在面向?qū)ο蟮姆椒ɡ铮^承就是一個(gè)類可以在另一個(gè)類的基礎(chǔ)上建立,繼承該類的所有屬性和事件。被繼承的類稱為父類,繼承父類建立的類稱
11、為子類。 在子類中,不僅可以繼承父類的所有特性,而且還可以增加自己的屬性和方法程序。 一個(gè)子類的成員一般包括: 從其父類繼承的屬性和方法; 由子類自己定義的屬性和方法。 繼承可以使在父類所作的改動(dòng)自動(dòng)反映到它的所有子類上8.1.2 類類 類可以實(shí)現(xiàn)多層次的繼承關(guān)系。 例如:類繼承了類,類又繼承了類。因此,類既是類的子類,也是類的父類。 在一個(gè)層次結(jié)構(gòu)中,如果有一個(gè)類,所有的其他的類都是由它直接或間接派生出來的,這個(gè)類就稱為基類?;?。8.2 VFP中的基類中的基類8.2.1 Visual FoxPro基類基類 Visual FoxPro基類是系統(tǒng)本身內(nèi)含的,并不存放在某個(gè)類庫中。用戶可以基于基
12、類生成所需要的對象,也可以擴(kuò)展基類創(chuàng)建自己的子類。8-1 Visual Foxpro基類 列表類名含義類名含義ActiveDoc活動(dòng)文檔Label標(biāo)簽CheckBox復(fù)選框Line線條Column(表格)列Listbox列表框ComboBox組合框OlecontrolOLE容器控件CommandButton命令按鈕OleboundcontrolOLE綁定控件CommandGroup命令按鈕組OptionButton選項(xiàng)按鈕Container容器類Optiongroup選項(xiàng)按鈕組Contorl控件類Page頁Custom定制PageFrame頁框EditBox編輯框ProjectHook項(xiàng)目掛鉤
13、Form表單Separator分隔符FormSet表單集Shape圖形Grid 表格Spinner微調(diào)控件Header(列)標(biāo)頭TextBox文本框HyperLink超級鏈接Timer定時(shí)器Image圖象ToolBar工具欄8.2.1 Visual FoxPro基類基類 每個(gè)VFP基類都有自己的屬性、方法和事件。當(dāng)擴(kuò)展某個(gè)基類創(chuàng)建用戶自定義類時(shí),該基類就是用戶自定義類的父類,用戶自定義類繼承該基類中的屬性、方法和事件。 8.2.2 容器與控件容器與控件1.類的分類類的分類 按照用類創(chuàng)建的對象是否可視來劃分,VFP的類可分為:可視類和不可視類; 按照類中能否放置其他類的對象來劃分,可以分為:容器
14、類和控件類(非容器類)8.2.2 容器與控件容器與控件2.容器與控件容器與控件 控件類:可創(chuàng)建包含其他被保護(hù)對象的控件對象,是用以顯示數(shù)據(jù)、執(zhí)行操作或使表單更易閱讀的一種圖形對象。即控件是一個(gè)可以以圖形化的方式顯示出來并能與用戶進(jìn)行交互的對象,例如:一個(gè)命令按紐、一個(gè)文本框等??丶ǔ7胖迷谝粋€(gè)容器里??丶惒荒馨渌鼘ο蟆?梢允褂谩氨韱卧O(shè)計(jì)器”的“表單控件”工具欄在表單上繪制控件。 容器類:被認(rèn)為是一種特殊的控件,它能包含其他的對象(控件或容器),并且允許訪問這些對象。容器類所能包含的對象見P146表8.2。8.2.2 容器與控件容器與控件說明:說明: 不同的容器所能包含的對象類型不同。
15、一個(gè)容器內(nèi)的對象本身也可以是容器,這樣就構(gòu)成了對象的嵌套層次關(guān)系,它指的是包容與被包容的關(guān)系。而類的層次指的是繼承與被繼承的關(guān)系。 在對象的層次關(guān)系中,要引用其中的某個(gè)對象,需要指明對象在嵌套層次中的位置。此時(shí)要用到如下四個(gè)屬性或關(guān)鍵字:parent、this、Thisform、thisformset8.2.3 屬性、事件與方法屬性、事件與方法不同的對象具有不同的屬性、事件與方法。可以把屬性看作是對象的特征,把事件看作是對象能夠響應(yīng)和識別的動(dòng)作,把方法看作是對象的行為。8.2.3 屬性、事件與方法屬性、事件與方法1.屬性屬性 屬性用來描述對象的狀態(tài)或特征,子類繼承父類的全部屬性。 VFP的所有
16、基類至少具有4個(gè)屬性,見P147表8.3。 若一個(gè)對象基于VFP基類而生成,則該對象在屬性CLASS和BASECLASS上的取值相同,而在CLASSLIBRARY和屬性PARENTCLASS上的取值為空串。 若一個(gè)對象基于VFP基類的直接子類而生成,則該對象在屬性PARENTCLASS和BASECLASS上的取值相同。8.2.3 屬性、事件與方法屬性、事件與方法例8.2 假設(shè)objtb是類MyTextBox的一個(gè)實(shí)例對象,類MyTextBox是基類TextBox的一個(gè)直接子類,那么objtb對象的BaseClass屬性值是() ,ParentClass屬性值是() 8.2.3 屬性、事件與方法
17、屬性、事件與方法2. 事件事件 事件是一種由系統(tǒng)預(yù)先定義而由用戶或系統(tǒng)發(fā)出的動(dòng)作。事件作用于對象,對象識別事件并作出相應(yīng)反應(yīng)。即類或?qū)ο罂赡軋?zhí)行或發(fā)生的行為稱為事件(EVENT)。事件可以由系統(tǒng)引發(fā),也可以由用戶引發(fā),還可以由代碼引發(fā)。 與方法集可以無限擴(kuò)展不同,事件集是固定的,用戶不能定義新的事件 。 VFP中的每一個(gè)類,都具有至少個(gè)事件,見P148表8.4;8.2.3 屬性、事件與方法屬性、事件與方法 說明: 事件代碼既能在事件引發(fā)時(shí)執(zhí)行,也可以象方法一樣被顯示調(diào)用。 在容器對象的嵌套層次中,事件的處理遵循獨(dú)立性原則,即每個(gè)對象識別并處理屬于自己的事件;但這個(gè)原則不適用于命令按紐組和選項(xiàng)按
18、紐組。8.2.3 屬性、事件與方法屬性、事件與方法例如:一個(gè)選項(xiàng)按鈕組包含兩個(gè)選項(xiàng)按鈕option1和option2,其中按鈕組optiongroup1和option1都有click事件代碼,而option2沒有指定click事件代碼,則當(dāng)用戶單擊option1時(shí),將引發(fā)option1的click事件,執(zhí)行相應(yīng)的事件代碼。此時(shí),不會引發(fā)optiongroup1的click事件,但如果單擊option2,則會引發(fā)按鈕組optiongroup1的click事件,執(zhí)行按鈕組的相應(yīng)事件代碼8.2.3 屬性、事件與方法屬性、事件與方法3.事件循環(huán)事件循環(huán) VFP6.0中用READ EVENTS命令建立循
19、環(huán),用CLEAR EVENT命令終止循環(huán)。 利用VFP6.0設(shè)計(jì)程序時(shí),必須創(chuàng)建事件循環(huán),否則不能正常運(yùn)行。READ EVENTS通常出現(xiàn)在應(yīng)用程序的主程序中,同時(shí)必須保證主程序調(diào)出的界面中有發(fā)出CLEAR EVENT命令的機(jī)制,否則程序進(jìn)入死循環(huán)。8.2.3 屬性、事件與方法屬性、事件與方法4.方法方法 對象的行為或動(dòng)作被稱為方法,方法程序是VFP為對象內(nèi)定的通用過程,能使對象執(zhí)行一個(gè)操作,方法程序過程代碼由VFP定義,對用戶是不可見的。 VFP常見的方法有: Release:從內(nèi)存中釋放表單或表單集。 Show: 顯示表單。 Setfocus:為一個(gè)控件指定焦點(diǎn)。 Hide:隱藏表單、表單
20、集和工具欄。 Refresh:重畫表單或控件,并刷新所有值。 Clear:清除組合框或列表框控件中的內(nèi)容8.2.3 屬性、事件與方法屬性、事件與方法 Setall(“屬性名“,值,”控件名稱“):給當(dāng)前對象所包含的所有指定類型控件賦值同樣屬性值。例如:當(dāng)前對象為一個(gè)FORM,現(xiàn)在要將FORM中所有包含的Text控件的Enabled屬性設(shè)為不可用,則代碼為:Thisform.Setall(“Enabled”,.F.,”text”) Quit:退出VFP的一個(gè)實(shí)例。8.3 VFP中對象的操作中對象的操作8.3.1 創(chuàng)建對象創(chuàng)建對象 在程序設(shè)計(jì)中,可以使用CREATEOBJECT函數(shù)來直接生成基于某
21、個(gè)類的對象。 格式:CREATEOBJECT(,,) 功能:函數(shù)基于指定的類生成一個(gè)對象,并返回對象的引用 。8.3 VFP中對象的操作中對象的操作 說明: 類名可以是基類,也可以是自定義類。 用CreateObject()函數(shù)創(chuàng)建的對象是不可見的,可以使用下面的語句使其可見。Object.show或Object.visible=.T.8.3 VFP中對象的操作中對象的操作例例8.3:基于VFP基類FORM生成一個(gè)表單對象,然后將該對象顯示出來。formwelcome=createobject(“form”)formwelcome.show或: formwelcome.visible=.t.8
22、.3 VFP中對象的操作中對象的操作例8.4基于VFP基類FORM生成一個(gè)表單對象,然后顯示輸出該表單對象的一些屬性值。oform=createobject(form)?class:+oform.class?baseclass:+oform.baseclass?classlibrary:+oform.classlibrary?parentclass:+oform.parentclass8.3.2 對象的引用對象的引用 在面向?qū)ο蟮某绦蛟O(shè)計(jì)中常常要引用對象,或引用對象的屬性、事件與方法程序。 對象屬性訪問以及對象方法調(diào)用的基本格式如下:.(參數(shù)列表) 容器對象作為父對象,可以包含子對象,子對象如果是容器對象,還可以包含下一級子對象,形成對象的層次關(guān)系。在VFP中,對象是通過容器的層次關(guān)系來引用的,引用分為絕對引用和相對引用。8.3.2 對象的引用對象的引用 絕對引用:從最高容器開始逐層向下直到某個(gè)對象為止的引用稱為絕對引用。 相對引用:從正在為編寫事件代碼的對象出發(fā),通過逐層向高一層或低一層直到另一對象的引用稱為相對引用。使用相對引用常用到表8.5所列屬性或關(guān)鍵字 。表8.5相對引用關(guān)鍵字屬性或關(guā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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲店店面改造與設(shè)備升級合同
- 貨物購銷框架協(xié)議書范本
- 能源項(xiàng)目采購合同進(jìn)度監(jiān)管與節(jié)能減排協(xié)議
- 車輛維修保養(yǎng)包年合同協(xié)議書
- 能源管理軟件銷售與節(jié)能方案合同范本
- 餐飲連鎖企業(yè)股權(quán)收購與整合合同
- 學(xué)校校園“踩踏式”混戰(zhàn)緊急疏散演練合同
- 2024年放大鏡項(xiàng)目資金籌措計(jì)劃書參考
- 餐飲部操作規(guī)程
- 安防安全培訓(xùn)
- MOOC 鐵路行車組織-北京交通大學(xué) 中國大學(xué)慕課答案
- 璀璨山?!鞒?石家莊海山公園景觀設(shè)計(jì)
- 鐵礦石提煉與冶煉技術(shù)
- 國家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 6-16-02-07 石油開采工 人社廳發(fā)202226號
- 普通高中語文課程標(biāo)準(zhǔn)2023
- 混凝土配合比自動(dòng)計(jì)算書
- 過敏性休克搶救步驟流程圖
- 華南理工大學(xué)2019級大學(xué)物理(I)期末試卷A卷及答案
- 國開學(xué)習(xí)網(wǎng)《小學(xué)語文教學(xué)研究》形考任務(wù)1-5答案
- 骨代謝標(biāo)志物在骨質(zhì)疏松診療中的應(yīng)用指南
- 電氣控制及Plc應(yīng)用技術(shù)電子教案
評論
0/150
提交評論