《vf向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)谷風(fēng)詳析》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《vf向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)谷風(fēng)詳析(32頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第八章面向?qū)ο蟪绦蛟O(shè)計(jì)1特制分析學(xué)習(xí)目標(biāo):1)了解面向?qū)ο蟪绦蛟O(shè)計(jì)的基本知識(shí)2)理解VFP中的類(lèi)、屬性、事件與方法程序等基本概念3)熟悉對(duì)象的操作2特制分析8.1 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)知識(shí)一、基本概念1、對(duì)象 “對(duì)象”(Object)是面向?qū)ο蟪绦蛟O(shè)計(jì)方法學(xué)中最基本的概念。在應(yīng)用領(lǐng)域中有意義的、與所要解決問(wèn)題有關(guān)系的任何事物都可以稱(chēng)作對(duì)象。它既可以是具體的物質(zhì)實(shí)體的抽象,也可以是人為的概念。例如一名學(xué)生、一所學(xué)校、一個(gè)表單、一個(gè)按鈕等都可以作為一個(gè)對(duì)象。3特制分析2、對(duì)象的屬性、事件和方法(1)屬性 所謂屬性(Property)就是對(duì)象表現(xiàn)出來(lái)的特征、狀態(tài)或行為,就像錄音機(jī)有型號(hào)、尺寸、顏色、
2、出廠日期等特征一樣。不同的對(duì)象可以擁有各種相同或不同的屬性,其中有些屬性是只讀并且無(wú)法改變的,而有些則可以通過(guò)設(shè)定來(lái)改變。這就好像錄音機(jī)的出廠日期、型號(hào)等屬性是無(wú)法改變的,但操作面板上所顯示的時(shí)間則可通過(guò)設(shè)定來(lái)改變。4特制分析(2) 事件與事件響應(yīng) 事件(Event)就是對(duì)象所碰到的情況,即由系統(tǒng)預(yù)先定義的由用戶(hù)或系統(tǒng)觸發(fā)的動(dòng)作。例如,有錄音帶被放進(jìn)錄音機(jī),或者是錄音帶播完,這樣的情況就是一個(gè)“事件”。當(dāng)一個(gè)事件發(fā)生后,就需要對(duì)該事件進(jìn)行響應(yīng)。也就說(shuō),可以事先指定當(dāng)事件發(fā)生時(shí),對(duì)象要做出什么樣的反應(yīng)。 例如,當(dāng)“錄音帶放進(jìn)錄音機(jī)”的事件發(fā)生時(shí),可以指定是直接“播放”,還是先“快進(jìn)”一小段后再開(kāi)
3、始“播放”。5特制分析 事件可以由一個(gè)用戶(hù)動(dòng)作產(chǎn)生,如單擊鼠標(biāo)或按鍵,也可以由程序代碼或者系統(tǒng)產(chǎn)生,如計(jì)時(shí)器每隔一段時(shí)間產(chǎn)生的到時(shí)事件就是由系統(tǒng)產(chǎn)生。大多數(shù)情況下,事件是通過(guò)用戶(hù)的交互操作產(chǎn)生的。 在Visual FoxPro中,可以激發(fā)事件的用戶(hù)動(dòng)作包括:?jiǎn)螕羰髽?biāo)(Click)、雙擊鼠標(biāo)(DblClick)、按鍵(keyPress)、移動(dòng)鼠標(biāo)(MouseMove)等。6特制分析(3)方法 方法(Method)是用來(lái)處理或操縱對(duì)象的途徑。對(duì)象通常會(huì)提供一些方法,以便應(yīng)用程序可以使用對(duì)象所提供的服務(wù)。 例如,錄音機(jī)提供了“播放”、“停止”、“暫停”、“快進(jìn)”、“快退”等操作按鈕,而這些按鈕其實(shí)就
4、相當(dāng)于錄音機(jī)提供的方法。用戶(hù)只要按下這些按鈕,就可以得到錄音機(jī)所提供的播放、停止播放、快進(jìn)、快退等服務(wù)。7特制分析3、類(lèi) 類(lèi)(Class)和對(duì)象關(guān)系密切,但并不相同。類(lèi)是對(duì)同一類(lèi)對(duì)象的抽象,類(lèi)包含了有關(guān)對(duì)象的特征和行為信息,它是對(duì)象的藍(lán)圖和框架,而類(lèi)的實(shí)例就是一個(gè)對(duì)象。 例如:橋梁是一個(gè)抽象的概念,而東方紅大橋、涪江三橋、涪江二橋就是橋梁這個(gè)概念衍生而來(lái)的具體實(shí)例。這里的橋梁就是類(lèi),而東方紅大橋、涪江三橋、涪江二橋就是具體對(duì)象。8特制分析4、類(lèi)的特性(1)繼承性。 子類(lèi)具有父類(lèi)的基本特性,并且可以在父類(lèi)基礎(chǔ)上派生出更多的特性。 (2)封裝性 將不必要的代碼全部封裝 (3)多態(tài)性 多態(tài)指由繼承而
5、產(chǎn)生的相關(guān)的不同的類(lèi),其對(duì)象對(duì)同一消息做出不同的響應(yīng)9特制分析二、基本方法對(duì)象數(shù)據(jù)與代碼屬性事件方法應(yīng)用程序讀取/設(shè)置調(diào)用響應(yīng)面向?qū)ο缶幊棠P?0特制分析三、面向?qū)ο缶幊虒?shí)例例1、一個(gè)簡(jiǎn)單表單程序的編寫(xiě)示例。 表單上有兩個(gè)按鈕,一個(gè)按鈕是“顯示英文”,另一個(gè)按鈕是“退出”。運(yùn)行時(shí),首先顯示一行文字:“歡迎光臨!”。當(dāng)單擊“顯示英文”按鈕時(shí),文字變成英文的“He11o,World!”;當(dāng)單擊“退出”按鈕時(shí),關(guān)閉表單,程序結(jié)束。11特制分析步驟:(1)創(chuàng)建容器對(duì)象-表單。操作步驟:“文件”菜單中的“新建”,彈出“新建”對(duì)話(huà)框,選取“表單”,單擊右上方的“新建文件”按鈕,進(jìn)入表單設(shè)計(jì)器。新表單具有默
6、認(rèn)名稱(chēng)Form1,默認(rèn)標(biāo)題Fom1。(2)定義數(shù)據(jù)環(huán)境-本例沒(méi)有涉及數(shù)據(jù)庫(kù)與表操作。(3)擺放控件對(duì)象。12特制分析Lable1控件控件Command1控件控件Command2控件控件13特制分析(4)設(shè)置對(duì)象屬性。如果沒(méi)有出現(xiàn)“屬性”窗口,可以從“顯示”菜單中點(diǎn)選“屬性”,或者鼠標(biāo)左鍵單擊系統(tǒng)工具欄上的“屬性窗口”按鈕,使“屬性”窗口出現(xiàn)在屏幕上。 分別將label1、command1、command2的caption屬性設(shè)置為:“歡迎光臨”、“顯示英文”和“退出”。(5)編寫(xiě)事件代碼。針對(duì)事件進(jìn)行編程,從而實(shí)現(xiàn)對(duì)用戶(hù)鼠標(biāo)事件的響應(yīng)。14特制分析 Command1的Click事件。鼠標(biāo)雙擊C
7、ommand1,在出現(xiàn)的代碼窗口中,左上方“對(duì)象”框中應(yīng)是“Commmd1”,右上方“過(guò)程”框中應(yīng)是“Click”,表示現(xiàn)在編寫(xiě)命令按鈕Command1的Click事件代碼。如果不是,應(yīng)使用鼠標(biāo)左鍵進(jìn)行選擇。在代碼窗口中輸入以下內(nèi)容: ThisForm.Label1.Caption=Hello,World ! Command2的Click事件代碼。用鼠標(biāo)單擊代碼窗口左上方“對(duì)象”框右邊的向下箭頭,在彈出的列表中選擇“Command2”,或者在表單上直接用鼠標(biāo)雙擊Command2,在Click事件代碼窗口中輸入: Thisform.Release15特制分析運(yùn)行時(shí)界面點(diǎn)擊顯示英文后的界面16特制
8、分析8.2 類(lèi)、屬性、事件與方法程序一、類(lèi)的概念1、基類(lèi) 基類(lèi)是VFP預(yù)先定義好的類(lèi)。基類(lèi)又分為控件類(lèi)和容器類(lèi),由此創(chuàng)建出的具體對(duì)象又稱(chēng)為控件類(lèi)對(duì)象和容器類(lèi)對(duì)象。17特制分析(1)容器類(lèi):容納別的對(duì)象,并允許訪(fǎng)問(wèn)所包含的對(duì)象。容器類(lèi)包括表單、命令組按鈕、頁(yè)框等。(2)控件類(lèi):不能容納其他對(duì)象的基類(lèi)??丶?lèi)包括標(biāo)簽、文本框、復(fù)選框、組合框、定時(shí)器等。詳細(xì)參考p181表格。18特制分析2、子類(lèi) 以某個(gè)類(lèi)(基類(lèi))為起點(diǎn)創(chuàng)建出的新類(lèi)稱(chēng)為子類(lèi),子類(lèi)繼承父類(lèi)的全部特征。3、用戶(hù)自定義類(lèi) 用戶(hù)從基類(lèi)派生出子類(lèi),并且根據(jù)實(shí)際情況對(duì)其屬性、方法等作了調(diào)整或增加或刪除等操作。4、類(lèi)庫(kù)用來(lái)存儲(chǔ)可視化方式設(shè)計(jì)的類(lèi),擴(kuò)
9、展名為.VCX。19特制分析二、屬性、事件與方法程序 1、屬性 VFP中,對(duì)象的屬性可以通過(guò)屬性窗口設(shè)置,也可以通過(guò)代碼在程序運(yùn)行時(shí)設(shè)置。常用屬性見(jiàn)p182 VFP中,可以在事件代碼窗口中編寫(xiě)代碼程序。VFP核心事件如下表: 2、事件20特制分析21特制分析22特制分析3、方法程序 方法是對(duì)象所能執(zhí)行的操作,方法程序是對(duì)象能夠執(zhí)行的、完成的相應(yīng)任務(wù)的操作命令代碼的集合。以表單為例,常用方法程序有如下一些:23特制分析24特制分析8.3 對(duì)象的操作一、對(duì)象的包容層次 一個(gè)容器類(lèi)對(duì)象包含另一個(gè)對(duì)象時(shí),該對(duì)象是容器類(lèi)對(duì)象的子對(duì)象,而容器類(lèi)對(duì)象是該對(duì)象的父對(duì)象。下圖是一種可能的對(duì)象包容關(guān)系示意圖。表單
10、集FormSet表單Form1文本框Text1選項(xiàng)按鈕組選項(xiàng)按鈕1選項(xiàng)按鈕2命令按鈕Command1命令按鈕組命令按鈕1命令按鈕225特制分析二、對(duì)象的引用引用關(guān)鍵字: 引用時(shí)應(yīng)該根據(jù)對(duì)象所在的層次決定其引用方法,一般而言是從上到下逐級(jí)應(yīng)用。具體參看p183的說(shuō)明部分。26特制分析引用舉例:This & 當(dāng)前具體對(duì)象Thisform & 當(dāng)前表單Thisformset & 當(dāng)前表單集Thisform.label1 & 當(dāng)前表單中名為lable1的標(biāo)簽Tmand1 & 當(dāng)前表單名為 command1的按鈕Tmand1 &當(dāng)前表單中名為commandgroup1中的名為command1的按鈕27特
11、制分析三、設(shè)置對(duì)象的屬性值(1)設(shè)置單個(gè)屬性 在事件或方法程序中用命令設(shè)置屬性,語(yǔ)法在事件或方法程序中用命令設(shè)置屬性,語(yǔ)法如下:如下: .= 常見(jiàn)的屬性值類(lèi)型有數(shù)值型、字符型、邏輯型、顏色RGB值等。28特制分析例如:Thisform.lable1.caption=“hello,world!”Thisform.lable1. ForeColor=RGB(0,0,0)Tmand1. visible=.t.Tmand1. enable=.f.當(dāng)前表單label1的caption(標(biāo)題)屬性設(shè)置為“hello,world”當(dāng)前表單label1的字體顏色屬性設(shè)置為黑色設(shè)置當(dāng)前表單command1可見(jiàn)設(shè)
12、置當(dāng)前表單command1不可使用29特制分析(2)設(shè)置多個(gè)屬性當(dāng)對(duì)一個(gè)對(duì)象一次性設(shè)置多個(gè)屬性時(shí),可以簡(jiǎn)化設(shè)置過(guò)程。語(yǔ)法如下:格式:With . = . = EndWith功能:一次設(shè)置指定對(duì)象的多個(gè)屬性值。30特制分析例如,設(shè)置標(biāo)簽Label1的多個(gè)屬性,可以使用以下語(yǔ)句實(shí)現(xiàn):with thisform.labell.enabled=.T. &控件有效控件有效.forecolor=RGB(0,0,0) &黑色文本黑色文本.visible=.T. &控件可見(jiàn)控件可見(jiàn)endwith31特制分析四、調(diào)用方法格式:引用的對(duì)象.方法功能:對(duì)指定對(duì)象調(diào)用指定方法例如:Thisform.release &釋放當(dāng)前表單 Thisform.text1.setfocus &讓當(dāng)前表單中的 text1控件獲得焦點(diǎn)32特制分析