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

下載本文檔

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

文檔簡(jiǎn)介

第五章程序設(shè)計(jì)基礎(chǔ)2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)25.1程序設(shè)計(jì)概述什么是程序?

程序是利用系統(tǒng)所提供的設(shè)計(jì)工具、按照程序設(shè)計(jì)語(yǔ)言的規(guī)范描述解決問(wèn)題的算法并進(jìn)行程序編寫(xiě)的過(guò)程VFP程序由一系列代碼組成,代碼可以包括以命令形式出現(xiàn)的指令、函數(shù)或VFP可以理解的任何操作。

程序設(shè)計(jì)方法主要有兩類:

結(jié)構(gòu)化程序設(shè)計(jì)(StructuredProgramming,SP)面向?qū)ο蟪绦蛟O(shè)計(jì)(Object-orientedProgramming,OOP)2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)35.1程序設(shè)計(jì)概述結(jié)構(gòu)化程序的原則

自頂向下、逐步求精、模塊化、限制使用轉(zhuǎn)移語(yǔ)句。結(jié)構(gòu)化程序三種基本結(jié)構(gòu):

順序、分支、循環(huán)結(jié)構(gòu)化程序設(shè)計(jì)本質(zhì)

功能設(shè)計(jì):以功能為主進(jìn)行設(shè)計(jì),其方法是自頂向下、功能分解,它從外部功能上模擬客觀世界,其開(kāi)發(fā)過(guò)程通常是從“做什么”到“如何做”。優(yōu)點(diǎn):系統(tǒng)結(jié)構(gòu)性強(qiáng),便于設(shè)計(jì)和理解缺點(diǎn):該功能模型較難與現(xiàn)實(shí)世界的實(shí)際系統(tǒng)相吻合。2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)45.1程序設(shè)計(jì)概述面向?qū)ο蟪绦蛟O(shè)計(jì)思想

世界由各種對(duì)象組成,任何事物都是對(duì)象,是某個(gè)對(duì)象類的實(shí)例,負(fù)載的對(duì)象可由簡(jiǎn)單的對(duì)象組合而成。對(duì)象:對(duì)象是數(shù)據(jù)及作用于這些數(shù)據(jù)之上的操作結(jié)合在一起所構(gòu)成的獨(dú)立實(shí)體的總稱。類:是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對(duì)象的描述。

面向?qū)ο蟪绦蛟O(shè)計(jì)的三個(gè)重要特性:

封裝性、繼承性、多態(tài)性2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)55.1程序設(shè)計(jì)概述面向?qū)ο蟪绦蛟O(shè)計(jì)的三個(gè)重要特性:封裝性:指對(duì)象是數(shù)據(jù)和處理該數(shù)據(jù)的方法所構(gòu)成的整體,外界只能看到其外部特性(消息模式、處理能力),其內(nèi)部特性(私有數(shù)據(jù)、處理方式)對(duì)外不可見(jiàn)。繼承性:反映的是類與類之間不同的抽象級(jí)別,根據(jù)繼承與被繼承的關(guān)系,類可分為基類和衍生類,基類也稱為父類,衍生類也稱為子類。多態(tài)性:在形式上表現(xiàn)為一個(gè)方法根據(jù)傳遞給它的參數(shù)的不同,可以調(diào)用不同的方法體,實(shí)現(xiàn)不同的操作。2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)65.2結(jié)構(gòu)化程序設(shè)計(jì)5.2.1創(chuàng)建、修改和運(yùn)行程序5.2.2順序結(jié)構(gòu)5.2.3分支結(jié)構(gòu)5.2.4循環(huán)結(jié)構(gòu)5.2.5過(guò)程與用戶自定義函數(shù)2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)75.2結(jié)構(gòu)化程序設(shè)計(jì)5.2.1創(chuàng)建、修改和運(yùn)行程序

創(chuàng)建、修改和運(yùn)行程序的方法有很多,以下為命令的方式。創(chuàng)建程序的命令:MODIFYCOMMAND文件名(擴(kuò)展名為*.PRG)

修改程序的命令:MODIFYCOMMAND運(yùn)行程序的命令:

DOProgramName

[WITHParameterList

]2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)85.2結(jié)構(gòu)化程序設(shè)計(jì)一旦運(yùn)行程序文件,系統(tǒng)會(huì)自動(dòng)地對(duì)程序文件(.prg)進(jìn)行編譯(包括對(duì)程序的詞法檢查、語(yǔ)法檢查),生成“偽編譯”程序(.fxp)。執(zhí)行程序時(shí),系統(tǒng)實(shí)質(zhì)上是執(zhí)行.fxp文件。程序結(jié)構(gòu):順序、分支、循環(huán)2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)95.2.2順序結(jié)構(gòu)5.2.2順序結(jié)構(gòu)創(chuàng)建、修改和運(yùn)行程序例5.1

下列程序的功能是計(jì)算圓的面積,其半徑為4.12。

STORE4.12TOPS=P*P*3.14?‘圓的面積為’,SAB2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)105.2.2順序結(jié)構(gòu)5.2.2順序結(jié)構(gòu)創(chuàng)建、修改和運(yùn)行程序例5.2

下列程序的功能是顯示一個(gè)字符串在另一個(gè)字符串中的位置。

C=“VisualFoxPro”CC=“Fox”?AT(CC,C)AB2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)115.2.3分支結(jié)構(gòu)_單分支結(jié)構(gòu)(1)單分支結(jié)構(gòu)

IF條件語(yǔ)句1ENDIF說(shuō)明:當(dāng)“條件”成立時(shí)執(zhí)行“語(yǔ)句1”,否則執(zhí)行ENDIF后面的語(yǔ)句例:n=1X=0IFn<=3X=2ENDIF?X條件成立?語(yǔ)句1yNENDIF后面的語(yǔ)句2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)125.2.3分支結(jié)構(gòu)_雙分支結(jié)構(gòu)(2)雙分支結(jié)構(gòu)IF…ELS…ENDIF語(yǔ)句IF條件

語(yǔ)句組1ELSE

語(yǔ)句組2ENDIF說(shuō)明:條件滿足執(zhí)行語(yǔ)句組1,否則執(zhí)行語(yǔ)句組2例:X=1Y=1IFX>2Y=0ELSEY=3ENDIF?Y條件成立?語(yǔ)句1語(yǔ)句2ENDIF后面的語(yǔ)句YN2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)135.2.3分支結(jié)構(gòu)_雙分支結(jié)構(gòu)例5.3下列程序的功能是根據(jù)變量X決定變量Y的值(-1或1)。X=5IFx>0y=1ELSEy=-1ENDIF?y2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)145.2.3分支結(jié)構(gòu)_多分支結(jié)構(gòu)(3)多分支結(jié)構(gòu)

DO

CASE

CASE

條件1

語(yǔ)句體1CASE

條件2

語(yǔ)句體2

………CASE

條件n

語(yǔ)句體nOTHERWISE

語(yǔ)句體n+1ENDCASE

條件1條件2條件n語(yǔ)句1語(yǔ)句n語(yǔ)句2YYY語(yǔ)句n+1ENDCASE后面的語(yǔ)句NNN……2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)155.2.3分支結(jié)構(gòu)_多分支結(jié)構(gòu)例:X=85Y=space(0)DocasecaseX>=90Y=“優(yōu)秀”

caseX>=80Y=“良好”

caseX>=70Y=“中等”

caseX>=60Y=“及格”

otherwiseY=“不及格”EndCase?Y說(shuō)明:case的個(gè)數(shù)與需要判斷的情況有關(guān)2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)165.2.4循環(huán)結(jié)構(gòu)循環(huán)(Looping)是指同一語(yǔ)句組反復(fù)執(zhí)行若干次;循環(huán)必須設(shè)定循環(huán)條件,也就是說(shuō)循環(huán)必須有出口語(yǔ)句2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)175.2.4循環(huán)結(jié)構(gòu)

VFP中循環(huán)語(yǔ)句包括:

(1)FOR…ENDFOR(2)DOWHILE…ENDDO

(3)SCAN…ENDSCAN2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)185.2.4循環(huán)結(jié)構(gòu)_FOR語(yǔ)句(1)FOR語(yǔ)句的格式:(預(yù)先知道循環(huán)的次數(shù))FOR循環(huán)變量賦初值

to終值

[step步長(zhǎng)]

循環(huán)體

ENDFOR|next注意:當(dāng)步長(zhǎng)為正數(shù)時(shí),循環(huán)變量的初值要小于等于終值。當(dāng)步長(zhǎng)為負(fù)數(shù)時(shí),循環(huán)變量的初值要大于等于終值。當(dāng)步長(zhǎng)為1時(shí),[step步長(zhǎng)]可以省略。

2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)195.2.4循環(huán)結(jié)構(gòu)_FOR語(yǔ)句FOR語(yǔ)句的執(zhí)行流程為:1)將初值賦給循環(huán)變量2)判斷循環(huán)變量是否超出終值,若超出則結(jié)束循環(huán),否則執(zhí)行循環(huán)體。3)計(jì)算循環(huán)變量的值:循環(huán)變量=循環(huán)變量+步長(zhǎng)注意:循環(huán)變量加步長(zhǎng)的操作是系統(tǒng)自動(dòng)完成的不需要在循環(huán)體中再出現(xiàn)該操作循環(huán)變量賦初值條件成立?執(zhí)行循環(huán)體循環(huán)變量加步長(zhǎng)YN2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)205.2.4循環(huán)結(jié)構(gòu)_FOR語(yǔ)句

fori=1to10step1

?i

endfor例1:在屏幕上輸出1到10。例2:求1+2+3+…+10=?

s=0

fori=1to10step1s=s+i

endfor

?s2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)215.2.4循環(huán)結(jié)構(gòu)_FOR語(yǔ)句例3:求100以內(nèi)的3的倍數(shù)的和

sum=0

forn=0to100step3sum=sum+n

endfor?sum

a=1

forn=10to1step-2a=n**2?a

endfor例4:求10以內(nèi)偶數(shù)的平方(見(jiàn)P143例5.6,例5.7,例5.8,例5.9

)2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)225.2.4循環(huán)結(jié)構(gòu)_DOWHILE語(yǔ)句(2)DOWHILE語(yǔ)句的格式:

DO

WHILE條件

循環(huán)體

ENDDO注意:1.如果預(yù)先不能確定循環(huán)次數(shù),而是根據(jù)某一條件決定是否結(jié)束循環(huán)。2.當(dāng)條件=.T.時(shí)執(zhí)行循環(huán)體,否則結(jié)束循環(huán)3.在循環(huán)體中要有改變循環(huán)條件的語(yǔ)句。循環(huán)體條件成立?ENDDO后面語(yǔ)句YESNO2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)235.2.4循環(huán)結(jié)構(gòu)_DOWHILE語(yǔ)句例:Store“abcdef”tocP=space(0)Dowhile

len(c)>0P=left(c,1)+Pc=substr(c,2)Enddo?p說(shuō)明:對(duì)于任意給定的字符串反序顯示如:“abcdef”變成“fedcba”2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)245.2.4循環(huán)結(jié)構(gòu)_DOWHILE語(yǔ)句例:用DOWHILE循環(huán)求1到100的和。

S=0A=1

DOWHILEA<=100S=S+AA=A+1

ENDDO?S(見(jiàn)P143例5.10,例5.11,例5.12,例5.13

)2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)255.2.4循環(huán)結(jié)構(gòu)_

SCAN語(yǔ)句(2)SCAN語(yǔ)句的格式:

SCAN條件循環(huán)體

ENDSCAN注意:SCAN循環(huán)又稱為表記錄掃描循環(huán),此語(yǔ)句僅限于處理表的記錄

2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)265.2.4循環(huán)結(jié)構(gòu)_

SCAN語(yǔ)句例5.14:統(tǒng)計(jì)右表中江蘇學(xué)生的人數(shù),顯示學(xué)號(hào)和籍貫。

N=0

Usexs

Scanfor’江蘇’$xs.jg?xs.xh,xs.jgN=N+1

Endscan?N

2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)275.2.4循環(huán)結(jié)構(gòu)_

SCAN語(yǔ)句北京9905145江蘇9905104江蘇9905113上海9905082江蘇9905011籍貫學(xué)號(hào)序號(hào)例如:統(tǒng)計(jì)右表中江蘇學(xué)生的人數(shù),顯示學(xué)號(hào)和籍貫?!?90501江蘇N=1√990511江蘇N=2√990510江蘇N=32023/1/19第5章程序設(shè)計(jì)基礎(chǔ)285.2.4循環(huán)結(jié)構(gòu)_

三種語(yǔ)句總結(jié)

(1)FOR…ENDFOR(2)DOWHILE…ENDDO

(3)SCAN…ENDSCAN知道循環(huán)次數(shù),用FOR循環(huán)用于表記錄掃描循環(huán)不知道循環(huán)次數(shù),一般采用DOWHILE循環(huán)2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)295.2.4循環(huán)結(jié)構(gòu)_

LOOP命令和EXIT命令LOOP命令:當(dāng)執(zhí)行到LOOP語(yǔ)句時(shí),將跳過(guò)LOOP后面的所有語(yǔ)句,即結(jié)束本次循環(huán),重新開(kāi)始下一次循環(huán)。(見(jiàn)P143例5.7)EXIT命令:當(dāng)執(zhí)行到EXIT語(yǔ)句時(shí),將跳過(guò)EXIT后面的所有語(yǔ)句,強(qiáng)行退出循環(huán)。(見(jiàn)P146例5.13)

2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)305.2.4循環(huán)結(jié)構(gòu)_

LOOP和EXIT例子Sum=0forn=1to100Ifmod(n,2)=0loop

endifIfsum+n>200exitelseSum=sum+nendif

Endfor?sum

?n

例:求連續(xù)奇數(shù)的和,并且和小于200。2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)315.2.5過(guò)程與用戶自定義函數(shù)

我們可以將經(jīng)常執(zhí)行的具有某一功能的一段代碼獨(dú)立出來(lái),將其作為一個(gè)過(guò)程(Procedure)或用戶自定義函數(shù)(UserDefinedFunction,簡(jiǎn)稱UDF),在需要改功能的時(shí)候調(diào)用這個(gè)過(guò)程或函數(shù)。

目的:減少了程序的代碼量,也使程序更易讀、更易維護(hù)。這也是結(jié)構(gòu)化程序設(shè)計(jì)方法的精髓。2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)325.2.5過(guò)程與用戶自定義函數(shù)1過(guò)程定義的語(yǔ)法格式

PROCEDURE

過(guò)程名

[PARAMETERS參數(shù)列表]

過(guò)程體

[RETURN[返回值]]

ENDPROC注意:當(dāng)缺省RETURN時(shí),返回值為.T.2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)335.2.5過(guò)程與用戶自定義函數(shù)2.函數(shù)的定義和調(diào)用:函數(shù)定義的語(yǔ)法:FUNCTION函數(shù)名

[PARAMETERS參數(shù)列表]

函數(shù)體

[RETURN[返回值]]ENDFUNC注意:當(dāng)缺省RETURN時(shí),返回值為.T.2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)345.2.4過(guò)程與用戶自定義函數(shù)例如:定義一函數(shù)求兩個(gè)數(shù)的立方和

Functionc_sum

parametersa,bLocalcc=a*a*a+b*b*b

Returnc

endfun2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)355.2.4函數(shù)_函數(shù)、過(guò)程調(diào)用的執(zhí)行流程SettalkoffX=5Y=6Z=c_sum(x,y)?zFunctionc_sum

parametersa,blocalcc=a*a*a+b*b*bReturnc2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)365.2.4過(guò)程與用戶自定義函數(shù)注意:如果調(diào)用某過(guò)程文件中的過(guò)程和自定義函數(shù),則在調(diào)用之前運(yùn)行:

SETPROCEDURETO(過(guò)程或自定義)文件名重點(diǎn)掌握:1、完善程序2、寫(xiě)出程序運(yùn)行結(jié)果2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)37例題SETTALKOFFS=“ABCDEF”N=LEN(S)K=1DOWHILEK<=N?SUBS(S,K,N-K)K=K+1ENDDO結(jié)果:——————、——————1.運(yùn)行下列程序以后,顯示運(yùn)行的前二次結(jié)果:2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)385.2結(jié)構(gòu)化程序設(shè)計(jì)_讀程序題目2.執(zhí)行下列程序后,屏幕上顯示的運(yùn)行結(jié)果為

。CLEARSTORE3.14TOPIr=4S=PI*r*r?INT(S)2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)395.2結(jié)構(gòu)化程序設(shè)計(jì)_讀程序題目3.運(yùn)行下列程序,運(yùn)行結(jié)果的第二行為

。SETTALKOFFCLEARY="111111111"FORI=1TO8 X=LEFT(Y,I)?SPAC(20-I*2)+X+"*"+X+"="+ALLT(STR(VAL(X)*VAL(X)))ENDFOR2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)405.2結(jié)構(gòu)化程序設(shè)計(jì)_讀程序題目4.執(zhí)行下列程序后,屏幕上顯示的運(yùn)行結(jié)果為

。CLEARx=10y=4IFx<0y=2*x-2elsey=x**2ENDIF?y2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)415.2結(jié)構(gòu)化程序設(shè)計(jì)_讀程序題目5.執(zhí)行下列程序后,屏幕上顯示的運(yùn)行結(jié)果為

。S=0N=1DoWhileN<=5 S=S+NN=N+1ENDDO?S

2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)425.2結(jié)構(gòu)化程序設(shè)計(jì)_完善程序題目1.下列程序的功能是求100以內(nèi)的偶數(shù)之和及奇數(shù)之和。P=0Q=0FORN=1TO100

IF_____________P=P+N

ELSE_____________

ENDIFENDFOR?“偶數(shù)和為”,P?“奇數(shù)和為”,Q2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)435.2結(jié)構(gòu)化程序設(shè)計(jì)_完善程序題目2.下列程序用來(lái)求0~100偶數(shù)之和,請(qǐng)完善。STORE0TON,SDOWHILE.T.

IFN>100_________

ELSES=S+N

ENDIFN=N+2ENDDO2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)445.2結(jié)構(gòu)化程序設(shè)計(jì)_完善程序題目3.下列程序是隨機(jī)產(chǎn)生一個(gè)70-80之間的數(shù),請(qǐng)完善x=0DOWHILE.T.X=RAND()*100IFx>70ANDx<80_________ENDIFENDDO?x2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)455.2結(jié)構(gòu)化程序設(shè)計(jì)_完善程序題目4.下列程序功能是計(jì)算1!+2!+…+10!的和,請(qǐng)完善。Result=0nMult=_________

FORn=1TO10

nMult=nMult*n

nResult=_________

ENDFOR?nResult2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)465.2結(jié)構(gòu)化程序設(shè)計(jì)_完善程序題目5.完善下列程序,使其計(jì)算一個(gè)整數(shù)的各位數(shù)字之和:SETTALKOFFINPUT”x=”TOxs=0DOWHILEx!=0s=s+MOD(x,10)x=INT(__________)ENDDO?sSETTALKON2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)475.2結(jié)構(gòu)化程序設(shè)計(jì)_完善程序題目6.dtocc()函數(shù)實(shí)現(xiàn)將一個(gè)日期型數(shù)據(jù)轉(zhuǎn)換為形如“XXXX年XX月XX日”的中文日期字符串,請(qǐng)完善。FUNCTIONdtoccPARAMETERSdeDate

cYear=

+’年’

cMonth=STR(Month(deDate),2)+’月’

cDay=STR(Day(deDate),2)+’日’RETURN

ENDFUNC2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)485.2結(jié)構(gòu)化程序設(shè)計(jì)_完善程序題目7.完善下列程序,是其可用來(lái)求長(zhǎng)方形的面積。

X=3

Y=5

S=AREA(X,Y)

?S

FUNCTION

AREA

_______

S1=X*YRETURN

________ENDFUNCTION2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)495.2結(jié)構(gòu)化程序設(shè)計(jì)_編程序題目1.編程求1—100之間所有非3的倍數(shù)的和。2.編程求1到100的平方和,如果平方和超過(guò)1000則跳出循環(huán)。3.編程計(jì)算數(shù)列1!,3!,5!……n!的前5項(xiàng)之和。4.查找教師表(JS.DBF)中出生日期在1960年之前的教師的姓名、性別和系科。5.編程實(shí)現(xiàn)自定義函數(shù)NX(),該函數(shù)的功能是將任意給定的一個(gè)字符串逆序返回。如執(zhí)行該函數(shù)NX(“ABCDE”),則返回結(jié)果為”EDCBA”。6.編函數(shù)ntoc,實(shí)現(xiàn)其功能將傳送過(guò)來(lái)的阿拉伯?dāng)?shù)字“0~9”轉(zhuǎn)換為中文的“零~九”。2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)505.3面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)

面向?qū)ο蟮某绦蛟O(shè)計(jì)(Object-OrientedProgramming,簡(jiǎn)稱

OOP)是基于問(wèn)題對(duì)象的自底向上的功能綜合,從內(nèi)部結(jié)構(gòu)上模擬客觀世界,其開(kāi)發(fā)過(guò)程是從“用什么做”到“要做什么”。

傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)的本質(zhì)是功能設(shè)計(jì),進(jìn)行功能分解,從外觀功能上模擬客觀世界,其開(kāi)發(fā)過(guò)程通常是從“做什么”到“如何做”。2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)515.3.1類和對(duì)象概述類(class):具有相同的結(jié)構(gòu)、操作,并遵守相同規(guī)則的對(duì)象聚合在一起的對(duì)象。對(duì)象:是基于類所創(chuàng)建的一個(gè)實(shí)例。每個(gè)對(duì)象都具有屬性、事件和方法,通過(guò)對(duì)象的屬性、事件和方法來(lái)處理對(duì)象。區(qū)別聯(lián)系:類包含了有關(guān)對(duì)象的特征和行為信息,它是對(duì)象的藍(lán)圖和框架,對(duì)象包括了數(shù)據(jù)和過(guò)程。在采用面向?qū)ο蟪绦蛟O(shè)計(jì)方法設(shè)計(jì)程序中,程序時(shí)由一個(gè)或多個(gè)類組成,在程序運(yùn)行時(shí),用戶需要?jiǎng)?chuàng)建該類的各個(gè)對(duì)象(實(shí)例),因此,類是靜態(tài)概念,而對(duì)象是動(dòng)態(tài)概念。2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)525.3.1類和對(duì)象概述_對(duì)象屬性(Property):對(duì)象的特征或某一方面的行為。屬性是可自定義的。事件(Event):由對(duì)象識(shí)別的一個(gè)動(dòng)作,可以編寫(xiě)相應(yīng)的代碼對(duì)此動(dòng)作進(jìn)行響應(yīng)。事件是不可自定義的。方法(Method):對(duì)象能夠執(zhí)行的一個(gè)操作。方法是可自定義的。每個(gè)對(duì)象都具有屬性,以及與之相關(guān)的事件和方法,通過(guò)對(duì)象的屬性、事件和方法來(lái)處理對(duì)象。2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)535.3.2基類類分為三大類:基類、子類和用戶自定義類基類(baseclass):是VFP系統(tǒng)提供的內(nèi)部定義的類,可用作其他用戶自定義類的基礎(chǔ)。子類(Subclass):是以其他類定義為起點(diǎn),為某一種對(duì)象所建立的新類。用戶自定義類(User-definedClass):與VFP基類相似,但由用戶定義,并且可用來(lái)派生子類2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)545.3.2基類_常用基類容器編輯框列表框標(biāo)簽控件文本框組合框圖像表單集微條框復(fù)選框形狀表單表格選項(xiàng)按鈕組線條工具欄標(biāo)頭*選項(xiàng)按鈕*分隔符*自定義列*計(jì)時(shí)器命令按鈕組頁(yè)框OLE綁定型控件命令按鈕頁(yè)面*OLE容器控件注:*表示該類是容器的集成部分,在類設(shè)計(jì)器中不能基于它們創(chuàng)建子類2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)555.3.2基類_容器類、控件類基類分為兩大類:容器類、控件類。容器類(ContainerClasses):包容其他類的基類。VFP的容器類有:容器、工具欄、表單集、表單、表格、表格列、頁(yè)框、頁(yè)面、命令按鈕組、選項(xiàng)按鈕組??丶?ControlClasses):可以包含在容器類中的基類。VFP的控件類就是基類除去容器類剩下的部分。2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)565.3.2基類_最小屬性集、最小事件集基類的最小屬性集:Class、BaseClass、ClassLibrary、ParentClass基類的最小事件集:Init、Destroy、Error2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)575.3.3處理對(duì)象_引用對(duì)象在引用對(duì)象時(shí),首先要弄清該對(duì)象相對(duì)于容器層次的關(guān)系。引用對(duì)象的格式為:引用地址.對(duì)象名稱絕對(duì)引用絕對(duì)引用是從最頂層對(duì)象開(kāi)始,逐層引用,直到所指定的對(duì)象的方式。相對(duì)引用相對(duì)引用是指在容器層次中相對(duì)于某個(gè)容器層次的引用。2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)58*相對(duì)引用通常用于某個(gè)事件處理代碼或方法程序代碼中對(duì)所包容的對(duì)象的引用,引用時(shí)可以直接使用其對(duì)象名。表5-5VFP中相對(duì)引用對(duì)象時(shí)所用的關(guān)鍵字ActiveForm當(dāng)前活動(dòng)表單Activepage當(dāng)前活動(dòng)表單中的活動(dòng)頁(yè)面ActiveContro當(dāng)前活動(dòng)表單中具有焦點(diǎn)的控件PARENT該對(duì)象的直接容器THIS該對(duì)象THISFORM包含該對(duì)象的表單THISFORMSET包含該對(duì)象的表單集2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)595.3.3處理對(duì)象_設(shè)置對(duì)象屬性每個(gè)對(duì)象都有許多屬性。通過(guò)對(duì)對(duì)象屬性的設(shè)置,可以定義對(duì)象的特征或某一方面的行為。在采用可視化的方法進(jìn)行對(duì)象設(shè)計(jì)時(shí),可以在屬性窗口中對(duì)對(duì)象屬性進(jìn)行設(shè)置在程序代碼中,可以使用如下的語(yǔ)法對(duì)對(duì)象屬性進(jìn)行設(shè)置:引用對(duì)象.屬性=值比如將命令按鈕組中的第一個(gè)按紐(“上一條”)的前景色改為紅色:This.cmd1.forecolor=rgb(255,0,0)該命令按鈕組“上一條”按鈕的name屬性前景色屬性綠色rgb(0,255,0)藍(lán)色rgb(0,0,255)白色rgb(255,255,255)黑色rgb(0,0,0)2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)605.3.3處理對(duì)象_調(diào)用對(duì)象的方法程序方法程序是對(duì)象能夠執(zhí)行的一個(gè)操作,是和對(duì)象相聯(lián)系的過(guò)程。調(diào)用方法程序的語(yǔ)法如下:引用對(duì)象.方法程序

例刷新表單的語(yǔ)法:Thisform.refresh釋放表單的語(yǔ)法:Thisform.release設(shè)置焦點(diǎn)的語(yǔ)法:Thisform.text1.SetFocus2023/1/19第5章程序設(shè)計(jì)基礎(chǔ)615.3.3處理對(duì)象_對(duì)象對(duì)事件的響應(yīng)當(dāng)對(duì)象的某個(gè)事件發(fā)生時(shí),該事件的處理程序代碼將被執(zhí)行。如果事件沒(méi)有與之相關(guān)聯(lián)的處理程序,則當(dāng)事件發(fā)生時(shí)不會(huì)發(fā)生任何操作比如當(dāng)用戶單擊某命令按鈕時(shí),該命令按鈕的Click事件的程序代碼將被執(zhí)行。比如運(yùn)動(dòng)員踢足球,足球被踢出。比如運(yùn)動(dòng)員踢足球,足球滾了。在這個(gè)過(guò)程當(dāng)中,對(duì)象是足球,事件是踢,足球被踢出是對(duì)踢事件的響應(yīng)。在這個(gè)過(guò)程當(dāng)中,對(duì)象是足球,事件是踢,足球滾了是方法。202

溫馨提示

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