<strong id="1mzrt"></strong>
  • <strong id="1mzrt"></strong>

  • 歡迎訪問邯鄲翱翔電腦學校

    邯鄲翱翔學校地址:河北省邯鄲市邯鄲學院北路滏西大街交口西北角  咨詢熱線:15333301535
    熱門文章
    行業新聞您當前所在位置:首頁 > 新聞中心 > 行業新聞

    你真的知道面向過程和面向對象的區別嗎?

    點擊次數:196次
    導讀:首先說說我對面向對象以及面向過程的理解,我認為面向過程是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。

    面向過程:面向過程性能比面向對象高。

    因為類調用時需要實例化,開銷比較大,比較消耗資源,所以當性能是最重要的考量因素的時候,比如單片機、嵌入式開發、Linux/Unix等一般采用面向過程開發。但是,面向過程沒有面向對象易維護、易復用、易擴展。

    面向對象:面向對象易維護、易復用、易擴展。

    因為面向對象有封裝、繼承、多態性的特性,所以可以設計出低耦合的系統,使系統更加靈活、更加易于維護。但是,面向對象性能比面向過程低。

    當然,上面是一種總結性的說法,這種回答想必大部分同學都很難理解,接下來,我舉一個通俗易懂的例子方便大家學習;

    首先說說我對面向對象以及面向過程的理解,我認為面向過程是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。

    而面向對象則是把構成問題的事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事務在整個解決問題的步驟中的行為。

    重點來了,舉個例子:

    象棋想必大家都玩過,網上也有許多的象棋游戲;

    制作一個象棋程序,使用面向過程的設計思路就是首先分析問題的步驟:1、開始游戲,2、紅旗先走,3、繪制畫面,4、判斷輸贏,5、輪到黑旗,6、繪制畫面,7、判斷輸贏,8、返回步驟2,9、輸出最后結果。把上面每個步驟用分別的函數來實現,問題就解決了。

    而面向對象的設計則是從另外的思路來解決問題。整個五子棋可以分為 1、黑紅雙方,這兩方的行為是一模一樣的,2、棋盤系統,負責繪制畫面,3、規則系統,負責判定諸如犯規、輸贏等。

    第一類對象(玩家對象)負責接受用戶輸入,并告知第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的變化就要負責在屏幕上面顯示出這種變化,同時利用第三類對象(規則系統)來對棋局進行判定。

    可以明顯地看出,面向對象是以功能來劃分問題,而不是步驟。同樣是繪制棋局,這樣的行為在面向過程的設計中分散在了總多步驟中,很可能出現不同的繪制版本,因為通常設計人員會考慮到實際情況進行各種各樣的簡化。而面向對象的設計中,繪圖只可能在棋盤對象中出現,從而保證了繪圖的統一。

    功能上的統一保證了面向對象設計的可擴展性。比如我要加入悔棋的功能,如果要改動面向過程的設計,那么從輸入到判斷到顯示這一連串的步驟都要改動,甚至步驟之間的循序都要進行大規模調整。

    如果是面向對象的話,只用改動棋盤對象就行了,棋盤系統保存了黑白雙方的棋譜,簡單回溯就可以了,而顯示和規則判斷則不用顧及,同時整個對對象功能的調用順序都沒有變化,改動只是局部的。

    當然,要達到改動只是局部的需要設計的人有足夠的經驗,使用對象不能保證你的程序就是面向對象,初學者或者很蹩腳的程序員很可能以面向對象之虛而行面向過程之實,這樣設計出來的所謂面向對象的程序很難有良好的可移植性和可擴展性。

    Copyright (c) 2006-2021 邯鄲翱翔