版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第3章程序設(shè)計基礎(chǔ)3.1基本概念和分類
3.2面向過程程序的創(chuàng)建與編輯
3.3面向過程程序設(shè)計原則
3.4面向過程程序的調(diào)試
3.5過程間的聯(lián)系
3.6面向?qū)ο蟪绦蛟O(shè)計概述
3.7用戶子類的創(chuàng)建和使用3.1基本概念和分類
3.1.1程序設(shè)計方法與語句結(jié)構(gòu)
1.面向過程方式
CLEA*創(chuàng)建窗口DEFINTWINDOWQQFROM10,10TO20,70SYSTEM TITLE“人機對話窗口”CLOSE &&定義窗口ACTIVATEWINDOWQQ &&激活窗口*創(chuàng)建各窗口對象@1,10SAY"真的要關(guān)閉窗口嗎?"FONT"隸書",20STYLE"U"*創(chuàng)建兩個按鈕
@5,16GETJXDEFA1FUNC“*H確定;取消”SIZE2,10,5READ &&激活按鈕IFJX=1RELEWINDOWQQENDIFRETU●格式化輸入輸出命令@<行,列>[SAY<表達式>[PICTURE“模式符”][FUNCTION“功能符”]][GET<變量名>[PICTURE“模式符”][FUNCTION“功能符”][DEFAULT<表達式>]][RANGE[表達式1][,表達式2]][SIZE<表達式1>,<表達式2>][VALID<表達式1>[ERROR<提示信息>]][WHEN<表達式2>][FONT“字體名”[,字號][STYLE“風(fēng)格符”]]READ[SAVE][CYCLE][TIMOUT秒]@2,10SAY“請輸入姓名:”GETNAME@2,10SAY“請輸入姓名:”GETNAMEDEFA““@2,10SAY“請輸入姓名:”GETNAMEFUNC”A”@3,10SAY“請輸入年齡:”GETNLDEFA18RANGE16,26@3,10SAY“請輸入年齡:”GETNLSIZE6,8&&6行8列區(qū)域@3,10SAY“年齡:”GETNLVALIDNL>=16ANDNL<=26ERROR”錯誤!“@3,10SAY“請輸入年齡:”GETNLDEFA18WHENNOTNL=18READ●窗口操作命令①定義窗口DEFINEWINDOW<窗口名1>FROM<行1,列1>TO<行2,列2> |AT<行3,列3>SIZE<行數(shù),列數(shù)> [TITLE<字符不等式1>][FONT“字體名”[,字號]][STYLE“風(fēng)格符”][CLOSE|NOCLOSE]允許或禁止用鍵盤或鼠標(biāo)關(guān)閉窗口。
[FLOAT|NOFLOAT]允許或禁止用鍵盤或鼠標(biāo)移動窗口。
[GROW|NOGROW]允許或禁止用鍵盤或鼠標(biāo)改變窗口大小。
[MINIMIZE|NOMINIMIZE]允許或禁止用鍵盤或鼠標(biāo)將窗口最小化。
[ZOOM|NOZOOM]允許或禁止用鍵盤或鼠標(biāo)將窗口最大化。
[DOUBLE|PANEL|NONE|SYSTEM]
窗口邊界風(fēng)格為:雙線、寬邊、無邊、仿系統(tǒng)(默認(rèn)為單線)。例如:definewindqqfrom2,1to13,75title"檢驗測試"CLOSGROWZOOMMINIFLOATSYSTEM②激活窗口命令A(yù)CTIVATEWINDOW[<窗口名1>[,<窗口名2>…]]|ALL例如:ACTIWINDQQ③修改窗口命令MODIFYWINDOW<窗口名>|SCREEN注意:命令參數(shù)與定義窗口命令一樣,只能修改當(dāng)前打開的窗口。SCREEN用來修改系統(tǒng)窗口的參數(shù)。④隱藏窗口命令HIDEWINDOW[<窗口名1>[,<窗口名2>…]|ALL⑤顯示窗口命令SHOWWINDOW<窗口名1>[,<窗口名2>…]|ALL⑥關(guān)閉窗口命令RELEASEWINDOW[<窗口名列表>]CLEARWINDOWSCLEARALL●創(chuàng)建按鈕@<行,列>GET<內(nèi)存變量>|<字段名>FUNCTION<字符表達式1>|PICTURE<字符表達式2>[FONT“字體名”[,字號][STYLE“風(fēng)格符”]][DEFAULT<表達式>][SIZE<表達式1>,<表達式2>[,<表達式3>]][VALID<邏輯表達式1>][WHEN<邏輯表達式2>]在FUNCTION字句中,<字符表達式1>的格式應(yīng)當(dāng)是:
*控制碼字符串1;字符串2;……
注意必須用星號開始,兩端還要用定界符擴起來。該命令用READ命令激活。其中的“字符串”個數(shù)表示創(chuàng)建的這一組按鈕的個數(shù),“字符串”為各按鈕的名稱,多個“字符串”之間應(yīng)當(dāng)用分號隔開。其中的控制碼是決定按鈕形式的,一個有四個。
T 選定按鈕時終止READ(這是默認(rèn)狀態(tài))
N 選定按鈕時不終止READ H 多個按鈕水平排列
V 多個按鈕垂直排列
2.面向?qū)ο蠓绞?/p>
先選取“表單”作為窗口對象,并將它的標(biāo)題欄設(shè)置為“學(xué)生基本情況”,將大小調(diào)整合適。
RELEASETHISFORM3.語句命令3.1.2程序設(shè)計中常用命令語句與函數(shù)1.常用命令①SETDEFAULTTO[盤符路徑]②MODIFYSTRUCTURE/COMMAND③OPENDATABASE<庫>④USE<表>⑤DISPLAY/LISTSTRUCTURE/STATUS⑥BROWSE⑦APPEND[BLANK]⑧DELETE/RECALL/PACK/ZAP⑨GO/GOTO/<表達式>/SKIP<±表達式>⑩SETTALKON/OFF
2.常用交互命令①ACCEPT“提示”TO變量②INPUT“提示”TO變量③WAIT“提示”TO變量3.關(guān)閉退出命令①Q(mào)UIT②CLOSEALL/DATABASE/INDEXES/PROCEDURE /TABLES③CLEARALL/GETS/MEMORY4.其他命令①SELECT名/號/別名②COPYTO文件名③?/??/???(???直接送打印機)●中斷等待命令WAIT[“提示”][TO內(nèi)存變量][WINDOW[AT行,列]][NOCLEAR][TIMEOUT秒]WAITCLEAR例如:WAIT“請輸入信息:”TOXYWAIT“請輸入信息:”TOXYWINDOWWAIT“請輸入信息:”TOXYWINDOWAT20,30WAIT“請輸入信息:”TOXYWINDOWNOCLEARWAITCLEARWAIT“請輸入信息:”TOXYWINDOWTIMEOUT55.函數(shù)①PARAMETERS(),PCOUNT()②OBJTOCLIENT(對象,參數(shù))3.1.3結(jié)構(gòu)化程序設(shè)計基本思路:使用三種基本結(jié)構(gòu)OPENDATABASER98USEJZGDOWHILE.T.ACCEPT"請輸入姓名:"TONAME
SCANFORXM=NAMEDISPLAYWAIT"是查找此人嗎?<Y/N>"TOPT
IFUPPER(PT)='Y'EXITELSESKIPENDIF
ENDSCAN
WAIT"還要繼續(xù)查詢嗎?<Y/N>"TOPT1
IFUPPER(PT1)#'Y'EXITENDIFENDDOUSE打開數(shù)據(jù)庫打開表給定查找人名顯示是嗎?繼續(xù)?關(guān)閉庫表下一條NYNYN結(jié)束程序1.順序結(jié)構(gòu)
所謂順序執(zhí)行,就是按著程序語句行的自然順序,一條接一條語句地執(zhí)行程序。
例:在屏幕上顯示三角型,程序TS1.PRG如下:
SETTALKOFFCLEAR?’__*’
?’_***’
?’*****’
SETTALKON2.判斷選擇結(jié)構(gòu)
(1)簡單判斷選擇
語句格式: IF<條件> <若干語句行1>[ELSE<若干語句行2>]ENDIF例:從JZG庫表文件查找某人,要求能夠判斷是否有此人。
USEJZGACCEPT"請輸入查找人名:"TONAMELOCATEFORXM=NAMEIFFOUND()DISPLAYOFFXM,ZC,JBGZELSEWAIT‘無此人!’WINDOWAT20,1TIMEOUT5ENDIF(2)多分支(選擇)結(jié)構(gòu)
語句格式:
DOCASECASE<條件1><若干語句行1>CASE<條件2><若干語句行2>……CASE<條件n><若干語句行n>[OTHERWISE<若干語句行>] ENDCASE例如:將學(xué)生表的總平均分用優(yōu)良5級表示。*成績轉(zhuǎn)換USESTUDENT_ADOWHILENOTEOF()ZF=(SX+WY)/2IFZF>=90CJ="優(yōu)"ELSEIFZF>=80CJ="良"ELSEIFZF>=70CJ="中"
ELSEIFZF>=60CJ="及格"ELSECJ="不及格"ENDIFENDIFENDIFENDIFREPLFLWITHCJSKIP1ENDDO*成績轉(zhuǎn)換USESTUDENT_ADOWHILENOTEOF()ZF=(SX+WY)/2DOCASECASEZF>=90CJ="優(yōu)"CASEZF>=80CJ="良"CASEZF>=70CJ="中"CASEZF>=60CJ="及格"OTHERWISECJ="不及格"ENDCASEREPLFLWITHCJSKIP1ENDDOUSE打開數(shù)據(jù)表不到表的結(jié)束位置計算當(dāng)前記錄的總平均分總平均分ZF>=90>=80>=70>=60其它優(yōu)良中及格不及格替換選擇下一條記錄關(guān)閉數(shù)據(jù)表3.循環(huán)結(jié)構(gòu)(1)基本循環(huán)結(jié)構(gòu)
語句格式:DOWHILE<條件><若干語句行>[LOOP]<若干語句行>[EXIT]<若干語句行>ENDDO
例:隨機循環(huán)。用邏輯表達式的真假判斷循環(huán)與否。
USEJZGACCEPT"請輸入姓名:"TONAMELOCATEFORXM=NAMEIFFOUND() DOWHILE.NOT.EOF()DISPLAYWAIT"是找此人嗎?<Y/N>"TOPTIFUPPER(PT)='Y'EXITELSECONTINUEENDIFENDDOELSE?"查無此人!"ENDIF(2)計數(shù)循環(huán)結(jié)構(gòu)
語句格式:
FOR<循環(huán)控制變量>=<初值>TO<終值>[STEP<步長>]<若干語句行>[LOOP]<若干語句行>[EXIT]<若干語句行>ENDFOR|NEXT例:固定次數(shù)的循環(huán)。以變量作為計數(shù)器,用變量值控制循環(huán)次數(shù)。
X=0 DOWHILEX<100 FORX=0TO99X=X+1 ?X?X ENDFORENDDO(3)掃描(指針型)循環(huán)結(jié)構(gòu)
命令格式:SCAN[<范圍>][FOR<條件>][WHILE<條件>]<若干語句行序列>[LOOP]<若干語句行>[EXIT]<若干語句行>ENDSCAN未超出最后一條記錄循環(huán)體語句例:在JZG表中隨機查詢某人。
USERSDADOWHILE.T.ACCEPT"請輸入姓名:"TONAMESCANFORXM=NAMEDISPLAYWAIT"是找此人嗎?<Y/N>"TOPTIFUPPER(PT)='Y'EXITELSESKIPENDIFENDSCANWAIT"還繼續(xù)查詢嗎?<Y/N>"TOPT1IFUPPER(PT1)#'Y'EXITENDIFENDDO3.2面向過程程序的創(chuàng)建與編輯
3.2.1使用內(nèi)部編輯器創(chuàng)建程序
1.命令方式格式:MODIFYCOMMAND[程序文件名]2.菜單方式 打開主菜單的“文件”下拉菜單,單擊“新建”選項,打開“新建”窗口;或者在常用工具欄中,單擊“新建”按鈕,打開“新建”窗口。 選擇“新建”窗口中“程序”類型,再單擊“新建文件”按鈕,可以打開程序編輯器窗口
3.2.2編輯修改程序
1.菜單方式 打開“打開”對話框窗口,選擇需要打開的程序文件名,再單擊“確定”按鈕。2.命令方式格式:MODIFYCOMMAND<程序文件名>3.2.3程序的運行
1.菜單方式2.在編輯中執(zhí)行3.命令方式 格式:DO<程序文件名>
3.3面向過程程序設(shè)計原則
3.3.1程序設(shè)計步驟(1)問題分析 按用戶要求具體分析,確定編程的目標(biāo)。一般是先分析輸出要求,再分析輸入數(shù)據(jù),最后明確如何處理。(2)確定算法 所謂算法就是解決問題的計算方法或處理過程。描述算法的工具主要是流程圖和N-S圖。(3)編寫程序 按著選定的計算機語言和確定的算法進行編碼,叫做編寫程序。(4)調(diào)試程序 把編好的程序送入計算機運行,并反復(fù)調(diào)試檢查,糾正錯誤直到得出正確的結(jié)果為止。 3.3.2利用公式設(shè)計 求解1+2+3+…+100的結(jié)果。 因為有計算公式n(A1+An)/2存在,所以可直接編程。程序語句如下:
X=1 Y=100 S=Y*(X+Y)/2 ?S
程序執(zhí)行的結(jié)果為:50503.3.3描述處理過程例如:求解1+2+3+…+100的結(jié)果。
如果將前兩個數(shù)的和放入變量S中,而不斷變化的后一個數(shù)用變量X表示,那么這個題目的解題規(guī)律就是:
SX
CLEARS=0X=1DOWHILEX<=100S=S+XX=X+1ENDDO?"1+2+3+…+100=",S
初始化循環(huán)100次累加求和計數(shù)賦值輸出結(jié)果例如:求解1×2×3×…×100的結(jié)果。
如果將前兩個數(shù)的積放入變量Z中,而不斷變化的后一個數(shù)用變量K表示,那么這個題目的解題規(guī)律就是:變量賦初值循環(huán)100次計算乘積計數(shù)輸出結(jié)果結(jié)束程序STORE1TOZ,KDOWHILEK<=100Z=Z*KK=K+1ENDDO?Z例如:計算并輸出九九表。形式如下:1X1=11X2=21X3=31X4=41X5=5…1X9=92X1=22X2=42X3=62X4=82X5=10…2X9=183X1=33X2=63X3=93X4=123X5=15…3=9=27…………………9X1=99X2=189X3=279X4=369X5=45…9X9=81可以用X表示行的變化用Y表示列的變化用Z存放行列值的乘積X×Y例如:在STUDENT_JB表中隨機查詢某人記錄。
CLEARUSEJZG1DOWHILE.T.ACCEPT"請輸入姓名:"TONAMESCANFORXM=NAMEDISPLAYOFFWAIT"是找此人嗎?<Y/N>"TOPTIFUPPER(PT)='Y'EXITELSESKIPENDIFENDSCANWAIT"還繼續(xù)查詢嗎?<Y/N>"TOPT1IFUPPER(PT1)#'Y'EXITENDIFENDDO USECLOSEDATABASE3.4面向過程程序的調(diào)試
3.4.1程序錯誤的分類
1.語法錯誤2.系統(tǒng)錯誤
3.邏輯錯誤
3.4.2
調(diào)試器的構(gòu)成
1.調(diào)試器的窗口
在調(diào)試器中最多可以包含5個小窗口,可以隨時單擊關(guān)閉按鈕關(guān)閉一些小窗口,或者打開調(diào)試器中“窗口”下拉菜單,重新指定要打開的小窗口。對調(diào)試器窗口或其中小窗口的操作,仍然遵循Windows窗口操作的一般規(guī)則。2.調(diào)試器窗口的菜單
在“調(diào)試”選項的下拉菜單中,集中了程序調(diào)試的主要命令選項。窗口的工具欄中也主要提供了這幾個對應(yīng)功能的按鈕。3.4.3調(diào)試程序
在調(diào)試器窗口單擊工具欄“打開”按鈕,在對話框中選定要調(diào)試的程序,單擊“確定”按鈕在跟蹤窗口中打開調(diào)試程序。3.4.4程序錯誤的捕獲
1.捕獲工具
2.捕獲方法3.5過程間的聯(lián)系3.5.1過程調(diào)用
1.調(diào)用命令格式:DO<過程名>[WITH<參數(shù)表>]2.返回命令
格式1:RETURN[TOMASTER|TO<過程名>]格式2:RETRY入口.RETURNSETTALKOFF..DOQQQ1...SETTALKONRETURN入口.DOQQQ2..RETURN入口.DOQQQ3..DOQQQ4..RETURN入口...RETURNTOMASTER主程序QQQ1QQQ2QQQ3QQQ4入口.RETURNTOQQQ13.參數(shù)的接收
格式1:PARAMETERS<私有變量參數(shù)表>格式2:LPARAMETERS<局部變量參數(shù)表>例如:*主程序PT1_1.PRGUSEJZGDOPT2_1WITH130USERETURN*過程PT2_1.PRGPARAMETERSCSSCANALLFORJBGZ>CS?'姓名職稱 基本工資'?XM,ZC,JBGZ?'-------------------------------------'ENDSCANRETURN3.5.2自定義函數(shù) 對于常用而又比較簡單的過程,可以用自定義函數(shù)的方法來調(diào)用它。本質(zhì)上過程、程序和自定義函數(shù)是一樣的。1.建立函數(shù)
入口命令格式:[FUNCTION<函數(shù)名>] [PARAMETERS<參數(shù)表>]
出口命令格式:RETURN<表達式>
如果使用了選項[FUNCTION<函數(shù)名>],那么這段函數(shù)程序可以嵌入某個程序中,但也只能在該程序被調(diào)用;否則必須是獨立程序段。如果不需要接收傳遞參數(shù),可以省略選項[PARAMETERS<參數(shù)表>]2.調(diào)用函數(shù) 自定義函數(shù)是一個程序(過程),所以也可以用DO命令執(zhí)行;但是它又確實是一個函數(shù),所以更經(jīng)常的還是像所有系統(tǒng)標(biāo)準(zhǔn)函數(shù)一樣,使用標(biāo)準(zhǔn)調(diào)用格式。
格式:UDF([參數(shù)表]) UDF表示自定義函數(shù)名,其實就是用戶建立函數(shù)程序時定義的程序文件名。
[參數(shù)表]項是可選的,它指定函數(shù)調(diào)用時,向函數(shù)程序段傳遞的參數(shù)。參數(shù)可以有多個,多個參數(shù)間用逗號分隔。在函數(shù)程序段中必須有參數(shù)接收語句PARAMETER與之相對應(yīng)。3.5.3內(nèi)存變量的作用區(qū)域
1.公共(Public)變量
格式:PUBLIC<變量名或數(shù)組名列表>
2.私有(Private)變量
格式:PRIVATE<變量名或數(shù)組名列表>3.局部(Local)變量格式:LOCAL<變量名或數(shù)組名列表>3.6面向?qū)ο蟪绦蛟O(shè)計概述
3.6.1基本概念和術(shù)語
對象(Object)一般說,現(xiàn)實世界中可以獨立存在的,能夠被區(qū)分的一切實體(事物)都是對象。但是在VFP中所研究的對象,卻是現(xiàn)實世界中的實體或概念在計算機中的一種抽象表示。這種抽象事物就是封裝了數(shù)據(jù)和操作的對象,通過定義屬性和方法來描述其特征和功能,通過定義接口來描述其地位及與其他對象的相互關(guān)系,從而形成一個動態(tài)的對象模型。選擇任何一種面向?qū)ο蟮母呒壵Z言(如VFP)都可以具體描述該模型,從而解決實際問題。類(Class)
是一組對象的屬性和行為特征的抽象描述?;蛘哒f,是具有共同屬性、共同操作性質(zhì)的對象的集合。比如昆蟲是一個類,而瓢蟲、蝗蟲等就是實例,是對象。微型機是一個類,而張三的微機就是一個對象。標(biāo)簽(Label)是類,而具體的標(biāo)簽“單位:”、“教師編號:”是對象。
VFP系統(tǒng)提供了29個基類,分為容器類和控件類兩種。每個對象都是從類中產(chǎn)生的。由于基類只考慮通用特征與功能,難于滿足用戶各種具體的要求,所以用戶常常要從基類中派生出許多子類。子類往往是在繼承基類的基礎(chǔ)上又增加一些新的特性與功能。子類也像基類一樣可以生成對象。比如P4微機就是微型機的子類。 類的基本特性是:封裝性、繼承性和多態(tài)性。屬性(Attribute)
所謂屬性就是對象的特性,是對象外觀及行為的特征。屬性一般是在類中定義的,當(dāng)然對象也可以定義自己的一些特性。在VFP中對象“標(biāo)簽”或“文本框”的標(biāo)題(Caption)、文字的顏色(FontColor)及擺放的位置(Left,Top)等是它們的屬性。
在VisualFoxPro系統(tǒng)中,各種對象共擁有70多個屬性。對象的屬性可以在建立對象時由其所屬的類(或子類)中繼承,也可以在對象運行時進行修改與設(shè)置。事件(Event)
是對象可以識別和響應(yīng)的行為與操作。它一般由用戶或系統(tǒng)來啟動。如計算機由于用戶打開電源開關(guān)而觸發(fā)了“開機”這樣一個事件;敲擊鍵盤也會觸發(fā)擊鍵事件(KeyPress)。在VFP中光標(biāo)離開一個“文本框”觸發(fā)了失去焦點事件(LostFocus
);把光標(biāo)移到一個“文本框”中,又觸發(fā)了接受焦點事件(GotFocus);還有鼠標(biāo)單擊事件(Click);鼠標(biāo)雙擊事件(DblClick)。當(dāng)然事件也可以由于方法程序的運行而觸發(fā)。
在VFP中事件是固定的,用戶不能再創(chuàng)建新的事件。對象可以響應(yīng)系統(tǒng)提供的50多種事件。事件有的適用于專門控件,有的適用于多種控件。事件觸發(fā)時機事件觸發(fā)時機Load創(chuàng)建對象前MouseUp釋放鼠標(biāo)Init創(chuàng)建對象時KeyPress按下并釋放鍵盤Activate對象激活時Valid失去焦點前GotFocus取得焦點時LostFocus失去焦點時Click單擊左鍵Destroy容器內(nèi)對象釋放時DblClick雙擊左鍵Unload表單或表單集釋放時MouseDown按下鼠標(biāo)在VFP中常用的幾個事件如下表:方法(Method)
方法是和對象緊密相連的,對象所具有的功能就是它的方法。因為一種功能必然是由一個過程(或叫函數(shù))來支持的,所謂過程就是一段程序(有時也叫方法程序)。 但是這個過程不同于過去的過程程序,任何時候它都不能獨立存在于對象之外。它總是被封裝在對象內(nèi)部的。在VFP中提供了50多種不同的方法,每種方法都有自己的名字,稱為方法名。 一般說每個事件都有自己相對應(yīng)的方法,同時用戶也可以為事件編寫特定的方法程序。每當(dāng)該事件發(fā)生時,系統(tǒng)就自動執(zhí)行相應(yīng)的方法,實現(xiàn)對象的功能。消息
為了從外部實現(xiàn)對對象功能的啟動,或者實現(xiàn)對象之間的聯(lián)系而發(fā)出的信息叫做消息。 比如要打開電燈,觸動了開關(guān)以后,就會發(fā)出一個消息(電燈兩端電位的變化),于是觸發(fā)了打開事件,進而啟動了電燈的功能。 在VFP中一般不使用消息的概念,直接使用事件這個術(shù)語。每個消息都會激活一個事件。3.6.2程序設(shè)計的特點
1.封裝對象具有靜態(tài)特征是其屬性,動態(tài)行為是功能方法;將屬性和方法都包裝在對象內(nèi)部并對外屏蔽叫做封裝。就是把對象的內(nèi)部實現(xiàn)與外部行為分隔起來,從而降低了操作對象的復(fù)雜性。2.可擴展性主要是繼承性,就是子類總是繼承了超類的全部屬性和方法,子對象總是繼承了父對象的全部特征。這種繼承性增加了程序設(shè)計的可重復(fù)使用性,簡化了程序設(shè)計步驟。還包括行為擴展,就是對象還可以增加新屬性和方法。3.多態(tài)性在向相似對象發(fā)出同一個消息時,各對象在觸發(fā)了相同事件后會有不同的反映。這就增強了程序設(shè)計的靈活性。
在面向過程的程序設(shè)計中
程序=算法+數(shù)據(jù)結(jié)構(gòu)在這里以算法為主體,算法和數(shù)據(jù)結(jié)構(gòu)是分開獨立設(shè)計的,一個算法可以對應(yīng)多組數(shù)據(jù)結(jié)構(gòu)。
在面向?qū)ο蟮某绦蛟O(shè)計中
對象=算法+數(shù)據(jù)結(jié)構(gòu)
程序=對象+對象+……+消息一個算法和一組數(shù)據(jù)結(jié)構(gòu)本來就是封裝在一個對象中的,程序設(shè)計就是要設(shè)計好每個對象,以及對象之間的聯(lián)系和發(fā)出的消息。3.6.3對象的創(chuàng)建、設(shè)置和引用
1.什么是對象設(shè)計
對象是在類的基礎(chǔ)上派生出來的,而類只有被定義成具體的對象后,才能實現(xiàn)它的事件或方法的操作。 可以利用程序代碼,為對象的屬性、方法和事件進行重新設(shè)計或編輯修改。對象的屬性、方法和事件決定了對象的操作功能。
應(yīng)用系統(tǒng)是由若干對象有機組合而成。對象的設(shè)計與使用是應(yīng)用系統(tǒng)設(shè)計的基礎(chǔ)。
設(shè)計對象可以使用編程方式,也可以使用可視化方式。
(1)使用編程方式對象的創(chuàng)建
需要使用函數(shù)創(chuàng)建對象。但不會創(chuàng)建獨立文件,只產(chǎn)生和存在于程序中。命令格式:
對象名=CREATEOBJECT(類名)例如1:
從基類中創(chuàng)建表單對象。
FORM1=CTREATEOBJECT(“FORM”)例如2:
從自定義類中創(chuàng)建表單對象。
FORM2=CTREATEOBJECT(“MYCLASS”) 激活后可以看到表單對象
FORM1=CREATEOBJECT(“FORM") FORM1.SHOW(1)
FORM1=CREATEOBJECT("MYCLASS") FORM1.SHOW(2)
DEFINECLASSMYCLASSASFORM VISIBLE=.T. BACKCOLOR=RGB(128,128,0) CAPTION="我的表單" LEFT=20 TOP=10 HEIGHT=223 WIDTH=443 ENDDEFINE這就是前面創(chuàng)建子類的對象。例如3:
在表單對象FORM1中增加一個“退出”按鈕和一個標(biāo)簽。程序如下。
FORM1=CTREATEOBJECT(“MYCLASS”)FORM1.SHOW(1)DEFINECLASSMYCLASSASFORMVISIBLE=.T.BACKCOLOR=RGB(128,128,0)CAPTION="我的表單"LEFT=20TOP=10HEIGHT=223WIDTH=443 ADDOBJECTCOMM1ASCOMMANDBUTTONWITH; CAPTION=“退出”,; LEFT=300,; TOP=120,;
HEIGHT=22,; WIDTH=50 PROCEDURECOMM1.Click
X=MESSAGEBOX(“真的退出嗎?”,4+48+0,“對話窗口”) IFX=6 RELEASETHISFORM ENDIF ENDPROCADDOBJECTLBL1ASLABELWITH; AUTOSIZE=.T. CAPTION=“測試標(biāo)簽對象”
LEFT=30 TOP=50 FONTSIZE=18ENDDEFINE(2)使用可視化方式對象的創(chuàng)建
使用這種方式設(shè)計對象,主要是利用VFP提供的各種設(shè)計器、生成器、向?qū)Ъ肮ぞ呔幊?。例如:用自定義類創(chuàng)建表單中“退出”按鈕,并創(chuàng)建一個標(biāo)簽。①打開“新建”窗口,選擇“表單”類型;②單擊“新建文件”按鈕,打開表單設(shè)計器;這時還會看到屬性窗口和控件工具欄
先添加一個容器對象,而且屬性:
SpecialEffect=凸起
BackColor=青在容器內(nèi)有標(biāo)簽,其屬性:Alignment=2-中央Caption=“中國人民大學(xué)”ForeColor=0,128,128Left=12Top=39Fontsize=28FontName=隸書BackStyle=0-透明 將鼠標(biāo)移到“查看類”按鈕單擊,選擇“添加”選項,打開自定義類以后,表單工具欄變成特殊形式。 單擊“命令”按鈕后,移動鼠標(biāo)到表單中,單擊或拖動,產(chǎn)生自定義類生成的命令按鈕對象。查看類命令選項對象生成器鎖定按鈕鎖定查看類
單擊表單設(shè)計器關(guān)閉按鈕,退出保存這個表單文件。2.對象操作
對象的引用格式
指明某個對象的屬性(或事件、方法)的歸屬層次的描述叫做對象的引用。引用格式有兩類:(1)絕對方式
總是從最頂層對象開始,逐級引用直到對象,叫做絕對引用方式。一般都用下面的關(guān)鍵字開頭。THISFORMSET 表示當(dāng)前表單集THISFORM 表示當(dāng)前表單例如:THISFORM.COMMAND1.CAPTION &&屬性引用THISFORM.CONTAINER1.COMMAND1.CLICK &&事件引用
THISFORMSET.THISFORM.CLS
&&方法引用(2)相對方式
從對象的當(dāng)前層次開始逐級引用,說明對象或?qū)傩?、事件。這種方式叫做相對引用方式。其中:
THIS 表示當(dāng)前對象
PARENT 表示當(dāng)前對象上一層父對象例如:(1)指明當(dāng)前對象的屬性
THIS.CAPTION(2)指明同一容器中其它對象屬性
THIS.PARENT.COMMAND2.FONTNAME THIS.PARENT.LABEL1.CAPTION給對象的屬性賦值
命令格式:
對象名.屬性名=屬性值
(ObjectName.Property=Setting)
例如:
FORM1.CAPTION=“試驗表單”
FORM1.LEFT=20 THIS.TOP=10
THISFORM.FORECOLOR=RGB(255,0,0) THISFORM.TEXT1.VALUE=DATE()
其中RGB(
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鍋爐本體檢修工安全教育模擬考核試卷含答案
- 調(diào)理肉制品加工工安全實操競賽考核試卷含答案
- 植保機械操作工安全生產(chǎn)基礎(chǔ)知識模擬考核試卷含答案
- 廢礦物油再生處置工沖突管理知識考核試卷含答案
- 金箔制作工安全培訓(xùn)效果強化考核試卷含答案
- 氯甲烷生產(chǎn)工安全素養(yǎng)水平考核試卷含答案
- 硫回收裝置操作工達標(biāo)水平考核試卷含答案
- 皮具制作工崗前核心管理考核試卷含答案
- 纖維碳化裝置操作工安全意識強化模擬考核試卷含答案
- 2024年畢節(jié)醫(yī)學(xué)高等??茖W(xué)校輔導(dǎo)員考試筆試真題匯編附答案
- 2026年冀教版初一地理上冊期末真題試卷+解析及答案
- 2026年孝昌縣供水有限公司公開招聘正式員工備考題庫及答案詳解參考
- 2025年文化產(chǎn)業(yè)版權(quán)保護與運營手冊
- 四川省樂山市高中高三上學(xué)期第一次調(diào)查研究考試數(shù)學(xué)試題【含答案詳解】
- 《創(chuàng)新創(chuàng)業(yè)基礎(chǔ)》課件-項目1:創(chuàng)新創(chuàng)業(yè)基礎(chǔ)認(rèn)知
- 2026年初一寒假體育作業(yè)安排
- 物流行業(yè)運輸司機安全駕駛與效率績效評定表
- 2026北京市通州區(qū)事業(yè)單位公開招聘工作人員189人筆試重點基礎(chǔ)提升(共500題)附帶答案詳解
- 2025~2026學(xué)年山東省菏澤市牡丹區(qū)第二十一初級中學(xué)八年級上學(xué)期期中歷史試卷
- 2026國家統(tǒng)計局儀征調(diào)查隊招聘輔助調(diào)查員1人(江蘇)考試參考試題及答案解析
- 水利工程施工質(zhì)量檢測方案
評論
0/150
提交評論