程序設(shè)計(jì)思想變革及發(fā)展_第1頁(yè)
程序設(shè)計(jì)思想變革及發(fā)展_第2頁(yè)
程序設(shè)計(jì)思想變革及發(fā)展_第3頁(yè)
程序設(shè)計(jì)思想變革及發(fā)展_第4頁(yè)
程序設(shè)計(jì)思想變革及發(fā)展_第5頁(yè)
已閱讀5頁(yè),還剩41頁(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ì)思想變革及開(kāi)展Contents程序設(shè)計(jì)的基本一程序設(shè)計(jì)思想的發(fā)展二程序設(shè)計(jì)語(yǔ)言的變化及發(fā)展三程序設(shè)計(jì)的根本概念1程序設(shè)計(jì)的步驟2程序設(shè)計(jì)面對(duì)的問(wèn)題3概念

通俗地說(shuō),程序就是人們讓計(jì)算機(jī)完成特定任務(wù)的一系列命令的總稱,而用某種編程語(yǔ)言編寫程序的過(guò)程就是程序設(shè)計(jì)。程序設(shè)計(jì)的步驟設(shè)計(jì)方案分析問(wèn)題解決問(wèn)題123程序設(shè)計(jì)面對(duì)的問(wèn)題1技術(shù)問(wèn)題2目標(biāo)復(fù)雜度和規(guī)模的增長(zhǎng)3需求的變化

面向過(guò)程編程

面向過(guò)程編程關(guān)注的是解決問(wèn)題的步驟,先把軟件系統(tǒng)分解成多個(gè)模塊,然后逐步細(xì)化,完成整個(gè)軟件系統(tǒng)。各模塊之間存在相互調(diào)用和信息傳遞。程序設(shè)計(jì)思想的開(kāi)展面向?qū)ο缶幊堂嫦蜻^(guò)程編程面向方面編程20世紀(jì)60年代20世紀(jì)70年代20世紀(jì)90年代面向過(guò)程編程的產(chǎn)生60年代末,國(guó)際著名學(xué)者首先提出了“結(jié)構(gòu)化程序設(shè)計(jì)〞的思想,按照結(jié)構(gòu)化程序設(shè)計(jì)思想編制出來(lái)的程序稱為結(jié)構(gòu)化程序,即面向過(guò)程編程。C、Pascal和Fortran語(yǔ)言均采用面向過(guò)程編程思想。面向過(guò)程編程產(chǎn)生1設(shè)計(jì)思想2特點(diǎn)3產(chǎn)生的問(wèn)題4面向過(guò)程編程的設(shè)計(jì)思想采用“自頂向下,逐步求精〞的方法,即當(dāng)編寫程序時(shí)常從總體出發(fā),把任務(wù)分解為假設(shè)干個(gè)多少有些獨(dú)立的模塊,對(duì)于每一個(gè)模塊,又需分解為假設(shè)干個(gè)低一層的子模塊,直到最低層的每一個(gè)子模塊都有明確的解決步驟為止,每一個(gè)模塊內(nèi)部均是由順序、選擇和循環(huán)三種根本結(jié)構(gòu)組成,其模塊化的具體實(shí)現(xiàn)方法是使用子程序。面向過(guò)程編程的設(shè)計(jì)思想正如上面的程序段所示,結(jié)構(gòu)化的程序方法通常是:(1)定義變量及其初始值;(2)根據(jù)事件開(kāi)展順序,進(jìn)行對(duì)應(yīng)的處理。

面向過(guò)程編程的設(shè)計(jì)思想例如:鉛筆數(shù)=5鋼筆數(shù)=6圓珠筆數(shù)=4其它筆數(shù)=7??//銷售程序段鉛筆數(shù)=鉛筆數(shù)-1//賣出了1支鉛筆其它筆數(shù)=其它筆數(shù)-2//賣出了2支其它筆//采購(gòu)程序段鋼筆數(shù)=鋼筆數(shù)+20//新進(jìn)了20支鋼筆圓珠筆數(shù)=圓珠筆數(shù)+10//新進(jìn)了10支圓珠筆??面向過(guò)程編程的特點(diǎn)面向過(guò)程的程序設(shè)計(jì)的特點(diǎn):面向過(guò)程的程序設(shè)計(jì)方法強(qiáng)調(diào)需求分析。強(qiáng)調(diào)在軟件生命周期的每個(gè)階段結(jié)束之前必須進(jìn)行評(píng)審,從而提高了開(kāi)發(fā)的成功率。面向過(guò)程編程的問(wèn)題產(chǎn)生的原因原因是:某些系統(tǒng)類型需求是模糊的,預(yù)先定義需求的策略對(duì)于某些類型的軟件系統(tǒng)是適用的。但是,對(duì)于數(shù)量占多數(shù)的一些應(yīng)用系統(tǒng),其需求往往難以預(yù)先準(zhǔn)確地指定。面向過(guò)程編程的總結(jié)

面向過(guò)程編程的思維方式易于理解、條理清晰,曾被廣泛應(yīng)用,但隨著軟件系統(tǒng)規(guī)模的擴(kuò)大和性能要求的提高,面向過(guò)程編程的缺陷日益明顯。軟件系統(tǒng)規(guī)模的擴(kuò)大,使得模塊的分解難度加大,模塊之間的聯(lián)系也更加復(fù)雜,軟件的可靠性難以提高,可維護(hù)性差。為了提高軟件系統(tǒng)的穩(wěn)定性、可修改性、可重用性。人們?cè)趯?shí)踐中逐漸創(chuàng)造出軟件開(kāi)發(fā)的新途徑:面向?qū)ο蟮某绦蛟O(shè)計(jì)方法面向?qū)ο缶幊趟^面向?qū)ο缶褪窃谔幚韱?wèn)題時(shí),從該問(wèn)題所存在的事物本身出發(fā),以類及對(duì)象作為根本構(gòu)造單元,逐步認(rèn)識(shí)事物的屬性和行為特征。面向?qū)ο缶幊坍a(chǎn)生1主要概念2

編程思想3特點(diǎn)4面向?qū)ο缶幊痰漠a(chǎn)生結(jié)構(gòu)化程序設(shè)計(jì)方法的可重用性差,使用面向過(guò)程的方法來(lái)開(kāi)發(fā)和維護(hù)此類軟件將非常困難。因此提出了面向?qū)ο缶幊?。面向?qū)ο缶幊痰母拍罡拍?大基本概念對(duì)象(Object)類(Class)抽象(Abstract)封裝(Encapsulation)繼承(Inheritance)多態(tài)(Polymorphism)面向?qū)ο缶幊趟枷朊嫦驅(qū)ο缶幊痰闹行乃枷胧?軟件模塊的分解并不是從功能上,或是從處理問(wèn)題的算法上出發(fā),而是從系統(tǒng)的組成上考慮。

優(yōu)點(diǎn)ConceptBECDA①穩(wěn)定性好②可重用性③可擴(kuò)展性⑤支持多線程編程④

可管理性面向?qū)ο缶幊痰目偨Y(jié)總體來(lái)說(shuō),較面向過(guò)程編程相比,面向?qū)ο缶幊炭梢悦枋龈鼜?fù)雜、更接近現(xiàn)實(shí)的系統(tǒng),描述方法靈活,具備良好的可重用性和可擴(kuò)展性,提高了軟件系統(tǒng)的質(zhì)量和開(kāi)發(fā)效率,保證了對(duì)系統(tǒng)工程的有效管理。面向方面編程在軟件術(shù)語(yǔ)中,面向方面的編程能夠獨(dú)立于任何繼承層次結(jié)構(gòu)而應(yīng)用改變類或?qū)ο笮袨榈姆矫?。缺點(diǎn)代碼散亂和代碼糾纏使得面向?qū)ο缶幊痰南到y(tǒng)結(jié)構(gòu)混亂,難以維護(hù)和擴(kuò)展,降低了軟件系統(tǒng)的質(zhì)量。面向方面編程的產(chǎn)生面向方面編程〔AOP〕的概念是GregorKiczaes在XeroxParc團(tuán)隊(duì)于20世紀(jì)90年代后期提出的,Filman與Friedman2000年在OOPSLA關(guān)于別離關(guān)注點(diǎn)的討論會(huì)上給出了得到公認(rèn)的面向方面的定義。雖然面向方面編程還處于不完善的階段,但它已經(jīng)受到了廣泛的關(guān)注。面向方面編程產(chǎn)生1主要概念2

編程思想3特點(diǎn)4面向方面編程的概念6大基本概念①關(guān)注點(diǎn)(Concern)②方面(Aspect)③通知(Advice)④切入點(diǎn)(Pointcut)⑤連接點(diǎn)(Joinpoint)⑥織入(Weaving)面向方面編程的思想對(duì)所分解的關(guān)注點(diǎn)的實(shí)現(xiàn),核心關(guān)注點(diǎn)可以采用面向?qū)ο缶幊碳夹g(shù),橫切關(guān)注點(diǎn)可以采用面向方面編程技術(shù)將軟件系統(tǒng)分解為核心關(guān)注點(diǎn)和橫切關(guān)注點(diǎn)通過(guò)創(chuàng)建方面來(lái)制定制定關(guān)注點(diǎn)之間的實(shí)施規(guī)則,從而得到最終的系統(tǒng)方面分解關(guān)注點(diǎn)實(shí)現(xiàn)織入面向方面編程的特點(diǎn)方面的設(shè)計(jì)使得系統(tǒng)的松散耦合性更強(qiáng),代碼冗余小,系統(tǒng)易維護(hù)、易擴(kuò)充。優(yōu)點(diǎn)及缺點(diǎn)切入點(diǎn)與基礎(chǔ)程序的耦合性較強(qiáng),基礎(chǔ)程序結(jié)構(gòu)的變化就可能導(dǎo)致意外的連接點(diǎn)丟失面向方面編程的總結(jié)較面向?qū)ο缶幊滔啾冉档土讼到y(tǒng)實(shí)施的難度,解決了代碼散亂和代碼糾纏的問(wèn)題。但其本身存在的問(wèn)題也給使用帶來(lái)了一定的困難。目前在開(kāi)發(fā)過(guò)程中,面向方面編程技術(shù)只作為面向?qū)ο缶幊碳夹g(shù)的補(bǔ)充加以運(yùn)用。面向過(guò)程VS面向?qū)ο笠砸惠v汽車為例:

用面向過(guò)程的思想去考慮它應(yīng)該是這樣的:如何啟動(dòng)汽車、如何起步、加速、剎車、熄火等一個(gè)個(gè)操作。而汽車在這里并不是我們所關(guān)心的。而面向?qū)ο竽敲匆云嚍閷?duì)象,一切由汽車開(kāi)始,以上的可用操作,即功能是汽車這個(gè)對(duì)象本身所具有的,做任何操作只要告訴汽車就可以。面向過(guò)程VS面向?qū)ο笫褂妹嫦蜻^(guò)程的語(yǔ)言,你需要告訴電腦要做什么,怎么做,一步步教它。使用面向?qū)ο蟮恼Z(yǔ)言,你只需要告訴它要做什么,不用告訴它過(guò)程。面向過(guò)程VS面向?qū)ο笥掷缥遄悠澹嫦蜻^(guò)程的設(shè)計(jì)思路就是首先分析問(wèn)題的步驟:1、開(kāi)始游戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟2,9、輸出最后結(jié)果。把上面每個(gè)步驟用分別的函數(shù)來(lái)實(shí)現(xiàn),問(wèn)題就解決了。而面向?qū)ο蟮脑O(shè)計(jì)那么是從另外的思路來(lái)解決問(wèn)題。整個(gè)五子棋可以分為:1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統(tǒng),負(fù)責(zé)繪制畫面,3、規(guī)那么系統(tǒng),負(fù)責(zé)判定諸如犯規(guī)、輸贏等。面向過(guò)程VS面向?qū)ο蠊δ苌系慕y(tǒng)一保證了面向?qū)ο笤O(shè)計(jì)的可擴(kuò)展性。因此,就實(shí)際編程情況來(lái)說(shuō)在大多時(shí)候面向?qū)ο蟾鼮閷?shí)際。程序設(shè)計(jì)語(yǔ)言的變化及開(kāi)展

1機(jī)器語(yǔ)言2匯編語(yǔ)言3高級(jí)語(yǔ)言、算法語(yǔ)言4非過(guò)程化語(yǔ)言5智能性語(yǔ)言語(yǔ)言的發(fā)展機(jī)器語(yǔ)言機(jī)器語(yǔ)言是計(jì)算機(jī)誕生和開(kāi)展初期使用的語(yǔ)言,表現(xiàn)為二進(jìn)制的編碼形式,是由CPU可以直接識(shí)別的一組由0和1序列構(gòu)成的指令碼。機(jī)器語(yǔ)言例如,下面列出的一串二進(jìn)制編碼011011000000000000000001110101

命令計(jì)算機(jī)硬件完成去除累加器,然后把內(nèi)存地址為117的單元內(nèi)容與累加器的內(nèi)容相加的操作。

可以看出,使用機(jī)器語(yǔ)言編寫程序是很不方便的,它要求用者熟悉計(jì)算機(jī)的所有細(xì)節(jié),程序的質(zhì)量完全決定于個(gè)人的編程水平。匯編語(yǔ)言匯編語(yǔ)言開(kāi)始于20世紀(jì)50年代初期,它是用助記符來(lái)表示每一條機(jī)器指令的。例如,機(jī)器指令可以表示為

CLA00017高級(jí)語(yǔ)言、算法語(yǔ)言高級(jí)語(yǔ)言起始于20世紀(jì)50年代中期,它允許人們用熟悉自然語(yǔ)言和數(shù)學(xué)語(yǔ)言編寫程序代碼,可讀性強(qiáng),編程方便。例如,在高級(jí)語(yǔ)言中寫出如下語(yǔ)句:

X=(A+B)/(C+D)與之等價(jià)的匯編語(yǔ)言程序如下:

CLACADDDSTDMCLAAADDBDIVMSTDX非過(guò)程化語(yǔ)言用戶在使用這種語(yǔ)言時(shí),不必關(guān)心問(wèn)題的解法和處理過(guò)程的描述,只需說(shuō)明所要完成的工作目標(biāo)及工作條件,就能得到所要的結(jié)果,而其他的工作都由系統(tǒng)來(lái)完成。非過(guò)程化語(yǔ)言例如,用戶想檢索出滿足一定條件的學(xué)生名單,只要通過(guò)SQL語(yǔ)言的SELECT語(yǔ)句告訴計(jì)算機(jī)查詢的范圍(查學(xué)生信息表)、查詢內(nèi)容(查出姓名和年齡)和檢索條件(查年齡小于18歲的學(xué)生)即可得到查詢結(jié)果。該語(yǔ)句形式如下:

SELECT

溫馨提示

  • 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)論