面向?qū)ο蟪绦蛟O(shè)計與面向過程程序設(shè)計的區(qū)別 (2)_第1頁
面向?qū)ο蟪绦蛟O(shè)計與面向過程程序設(shè)計的區(qū)別 (2)_第2頁
面向?qū)ο蟪绦蛟O(shè)計與面向過程程序設(shè)計的區(qū)別 (2)_第3頁
面向?qū)ο蟪绦蛟O(shè)計與面向過程程序設(shè)計的區(qū)別 (2)_第4頁
面向?qū)ο蟪绦蛟O(shè)計與面向過程程序設(shè)計的區(qū)別 (2)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、面向過程程序設(shè)計和面向?qū)ο蟪绦蛟O(shè)計的區(qū)別面向過程程序設(shè)計我個人的理解簡單來說,他考慮問題的方式是面向流程的,一個程序的設(shè)計思路就是解決一個問題的流程。就好比游戲先登入界面,再輸入密碼,然后選擇角色,在然后進入游戲玩耍,結(jié)束. . 這把這些步樣就是面向過程。面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)驟一步調(diào)用就可以了一步實現(xiàn),使用的時候一個一個依次??梢钥闯雒嫦蜻^程化程序設(shè)計是先確定算法,再確定數(shù)據(jù)結(jié)構(gòu)。而面向?qū)ο蟪绦蛟O(shè)計是面向問題中的各種獨立個體的,程序的析設(shè)分計過程就是將程序分解成不同對象(不同概念體)之間的交互的過程。這就好比在針對某個工程或游戲設(shè)計程序時先不考慮,游戲是怎么玩的,

2、工作是怎么做的,而先會去找,游戲或工程中有哪些人或事物參與(一般選擇:用戶,玩家,角色等等),然后再看他們都有什么用,都干了些什么,針對這個區(qū)設(shè)計方法。最后在通過這些千絲萬縷的聯(lián)系把他們分門別類的,組裝在一起。可以看出面向過程化程序設(shè)計是先確定數(shù)據(jù)結(jié)構(gòu)再確定算法。 從上面很容易看出,面向過程的程序上一步和下一步環(huán)環(huán)相扣,他只考慮實現(xiàn)客戶的需求不考慮以后擴展,如果以后客戶的需求有變化 那代碼量要改變非常大 耗費的時間也相當(dāng)多。從本質(zhì)上說,面向過程基本上是一種狀態(tài)機,不利于修改,當(dāng)新狀態(tài)出現(xiàn)的時候,甚至可能需要重設(shè)每一個狀態(tài)解決實現(xiàn)。所以說面向過程是一種直接的編程方法,它是按照編程語言的思路考慮問

3、題。尤其是想C語言這種過程式語言,它就是通過順序執(zhí)行一組語句來實現(xiàn)一個功能,這些語句的執(zhí)行過程就是整個程序。不同的語言解決同一個問題的過程是不一樣的。而面向?qū)ο蟮某绦蛟O(shè)計很多東西都是獨立的,每個對象都可以重復(fù)使用。而面向?qū)ο蟪绦蛟O(shè)計強調(diào)“封裝”,“繼承“和“多態(tài)”。數(shù)據(jù)和與數(shù)據(jù)相關(guān)的操作被包裝成對象(嚴格的說是“類”),每一種對象是相對完整和獨立的。對象可以有派生的類型,派生的類型可以覆蓋(或重載)原本已有的操作。所有的這些,是為了達成更好的內(nèi)聚性,即一種對象做好一件(或者一類相關(guān)的)事情,對象內(nèi)部的細節(jié)外面世界不關(guān)心也看不到;以及降低耦合性,即不同種類的對象之間相互的依賴盡可能降低。而所有的

4、這些,都有助于達成一個崇高的目標,就是可復(fù)用性。下面舉個例子來說明面向過程的程序和面向?qū)ο蟮某绦蛟O(shè)計的區(qū)別:用面向過程的思想去考慮它應(yīng)該是這樣的:如何啟動汽車、如何起步、加速、剎車、熄火等一個個操作。面向過程是把所有的功能全部在一個大的類里定義出來,當(dāng)系統(tǒng)龐大時,功能多了,各種操作之間的調(diào)用關(guān)系也很復(fù)雜,當(dāng)需要修改一個功能時就可能引發(fā)一連串的改動,使修改和維護成本增加,而不利于修改。 而面向?qū)ο髣t以汽車為對象,一切由汽車開始,以上的可用操作,即功能是汽車這個對象本身所具有的,做任何操作只要告訴汽車就可以了。面向?qū)ο蟪绦蛟O(shè)計需求用繼承/封裝/多態(tài)/抽象 等去設(shè)計程序 代碼量比面向過程化程序設(shè)計是

5、多出了很多 但以后的擴展性和維護性是相當(dāng)?shù)母咝?。下面我們來著重的來討論面向?qū)ο蟮某绦蛟O(shè)計中的幾個重要概念和編程思想: 抽象性程序有能力忽略正在處理中信息的某些方面,即對信息主要方面關(guān)注的能力。類具有相同或相似性質(zhì)的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象封裝也叫做信息封裝:確保組件不會以不可預(yù)期的方式改變其它組件的內(nèi)部狀態(tài);只有在那些提供了內(nèi)部狀態(tài)改變方法的組件中,才可以訪問其內(nèi)部狀態(tài)。每類組件都提供了一個與其它組件聯(lián)系的接口,并規(guī)定了其它組件進行調(diào)用的方法。(4)多態(tài)性(多形性) 多態(tài)性是指相同的操作或函數(shù)、過程可作用于多種類型的對象上并獲得不同的結(jié)

6、果。不同的對象,收到同一消息可以產(chǎn)生不同的結(jié)果,這種現(xiàn)象稱為多態(tài)性。 多態(tài)性允許每個對象以適合自身的方式去響應(yīng)共同的消息。 多態(tài)性增強了軟件的靈活性和重用性。 (3)繼承性。 繼承性是子類自動共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機制,這是類之間的一種關(guān)系。在定義和實現(xiàn)一個類的時候,可以在一個已經(jīng)存在的類的基礎(chǔ)之上來進行,把這個已經(jīng)存在的類所定義的內(nèi)容作為自己的內(nèi)容,并加入若干新的內(nèi)容。 繼承性是面向?qū)ο蟪绦蛟O(shè)計語言不同于其它語言的最重要的特點,是其他語言所沒有的。 在類層次中,子類只繼承一個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為單重繼承。 在類層次中,子類繼承了多個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為多重繼承。 在軟件開發(fā)

7、中,類的繼承性使所建立的軟件具有開放性、可擴充性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的創(chuàng)建工作量,增加了代碼的可重性。 采用繼承性,提供了類的規(guī)范的等級結(jié)構(gòu)。通過類的繼承關(guān)系,使公共的特性能夠共享,提高了軟件的重用性。把相關(guān)對象的共同部分(屬性和動作)進行抽象,形成一個類。也就是說,不同對象通過繼承(extends)可以共享這部分內(nèi)容。通過不斷歸納共同部分,就可形成不同層次的類(父類、子類)。這就形成了JAVA的編程思想。面向過程編程的程序員,習(xí)慣于建立數(shù)據(jù)結(jié)構(gòu)存放數(shù)據(jù)并定義方法(函數(shù))來操作數(shù)據(jù);面向?qū)ο缶幊痰某绦騿T則構(gòu)造一個對象模型,將數(shù)據(jù)與方法組織在一起。下面以求長方形

8、的周長和面積為例分析: 面向過程的程序設(shè)計方式思考:1、確定長方形的周長和面積的算法;2、編寫兩個方法(函數(shù))分別計算長方形的周長和面積;3、求周長的方法(函數(shù))和求面積的方法(函數(shù))需要兩個參數(shù),分別是長方形的長和寬。 面向?qū)ο蟮某绦蛟O(shè)計方式思考:1、一個長方形可以看成一個長方形對象;2、一個長方形對象有兩個狀態(tài)(長和寬)和兩個行為(求周長和求面積);3、將所有長方形的共性抽取出來,設(shè)計一個長方形的類;4、通過長方形對象的行為,就可以求出某個具體的長方形對象的周長和面積。比較面向?qū)ο蟪绦蛟O(shè)計和面向過程程序設(shè)計,還可以得到面向?qū)ο蟪绦蛟O(shè)計的優(yōu)點: 1)數(shù)據(jù)抽象的概念可以在保持外部接口不變的情況下改變內(nèi)部實現(xiàn),從而減少甚至避免對外界的干擾; 2)通過繼承大幅減少冗余的代碼,并可以方便地擴展現(xiàn)有代碼,提高編碼效率,也減低了出錯概率,降低軟件維護的難度; 3)結(jié)合面向?qū)ο蠓治?、面向?qū)ο笤O(shè)計,允許將問題域中的對象直接映射到程序中,減少軟件開發(fā)過程中中間環(huán)節(jié)的轉(zhuǎn)換過程; 4)通過對對象的辨別、劃分可以將軟件系統(tǒng)分割為若干相對為獨立的部分,在一定程度上更便于控制軟C,C+,Java這些都是語言,他們之間并沒有是不是面向?qū)ο蟮膮^(qū)別。用C同樣可以寫面向?qū)ο蟮某绦颍纯碙inux的內(nèi)核代碼就知道了。C+,Java一樣可以寫面向過程的程序,他們之所以叫面向?qū)ο蟮木幊陶Z言是因為

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論