物件導向和面向過程的區別

2021-08-30 13:38:55 字數 1957 閱讀 4860

其實在半年之前就對這個問題抱有疑問,但是遲遲沒有學習,但是今天打算認真的把這裡學習一下,雖然會花費一些時間,但是收穫也會非常大,對今後的計算機學習有一定的幫助。 

是一種以過程為中心的程式設計思想,一般的面向過程最重要的是模組化的思想方法,

面向過程是圍繞功能進行的,為每乙個功能寫乙個函式,需要考慮其中的每乙個細節,以步驟劃分

則像是組裝,先確定乙個系統是由哪些物件組成,再去分別設計這些物件,將他們像零件一樣組裝起來形成有完整功能的系統。

物件導向=「物件+類+繼承+通訊」

物件

物件是物件導向開發模式的基本成分

每個物件可以用它本身的一組屬性和他可以執行一組操作來定義

類是一組具有相同資料結構和相同操作的物件的集合

繼承

繼承是使用已存在的定義作為基礎建立新定義的技術

面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就ok

物件導向是把構成問題事物分解成各個物件

有人這樣比喻:

1、開始遊戲,2、黑子先走,3、繪製

畫面,4、判斷輸贏,5、輪到白子,6、繪製畫面,7、判斷輸贏,8、返回步驟2,9、輸出最後結果。把上面每個步驟用分別的函式來實現,問題就解決了。

而物件導向的設計則是從另外的

思路來解決問題。整個五子棋可以分為 1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統,負責繪製畫面,3、

規則系統,負責判定諸如犯規、輸贏等。第一類物件(玩家物件)負責接受使用者輸入,並告知第二類物件(棋盤物件)棋子布局的變化,棋盤物件接收到了棋子的i變化就要負責在螢幕上面顯示出這種變化,同時利用第三類物件(規則系統)來對棋局進行判定。

物件導向的特點

封裝性把過程和資料報圍起來,對資料的訪問只能通過已定義的介面,這些物件通過乙個受保護的介面訪問其他物件

繼承性是一種聯結類的層級模型,物件的乙個新類可以從現有的類中派生,這個過程稱為類繼承

多型性多型性是指允許不同類的物件對同一訊息作出響應

抽象抽象就是忽略乙個主題中與當前目標無關的方面

在網上有很多他們的對比,但是在看完之後並沒有特別清晰,偶然發現一篇文章裡面用乙個通俗易懂的故事告訴了我們

用面向過程的方法寫出來的程式是乙份蛋炒飯,而用物件導向寫出來的程式是乙份蓋澆飯。所謂蓋澆飯,北京叫蓋飯,東北叫燴飯,廣東叫碟頭飯,就是在一碗白公尺飯上面澆上乙份蓋菜,你喜歡什麼菜,你就澆上什麼菜。我覺得這個比喻還是比較貼切的。

蛋炒飯製作的細節,我不太清楚,因為我沒當過廚師,也不會做飯,但最後的一道工序肯定是把公尺飯和雞蛋混在一起炒勻。蓋澆飯呢,則是把公尺飯和蓋菜分別做好,你如果要乙份紅燒肉蓋飯呢,就給你澆乙份紅燒肉;如果要乙份青椒土豆蓋澆飯,就給澆乙份青椒土豆絲。

蛋炒飯的好處就是入味均勻,吃起來香。如果恰巧你不愛吃雞蛋,只愛吃青菜的話,那麼唯一的辦法就是全部倒掉,重新做乙份青菜炒飯了。蓋澆飯就沒這麼多麻煩,你只需要把上面的蓋菜撥掉,更換乙份蓋菜就可以了。蓋澆飯的缺點是入味不均,可能沒有蛋炒飯那麼香。

到底是蛋炒飯好還是蓋澆飯好呢?其實這類問題都很難回答,非要比個上下高低的話,就必須設定乙個場景,否則只能說是各有所長。如果大家都不是美食家,沒那麼多講究,那麼從飯館角度來講的話,做蓋澆飯顯然比蛋炒飯更有優勢,他可以組合出來任意多的組合,而且不會浪費。

面向過程

優點:效能比物件導向高,因為類呼叫時需要例項化,開銷比較大,比較消耗資源;比如微控制器、嵌入式開發、linux/unix等一般採用面向過程開發,效能是最重要的因素。 

缺點:沒有物件導向易維護、易復用、易擴充套件 

物件導向

優點:易維護、易復用、易擴充套件,由於物件導向有封裝、繼承、多型性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易於維護 

缺點:效能比面向過程低  

物件導向和面向過程區別

原文 面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。例如五子棋,面向過程的設計思路就是首先分析問題的步驟 1 ...

物件導向和面向過程的區別

面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。例如五子棋,面向過程的設計思路就是首先分析問題的步驟 1 開始遊...

物件導向和面向過程的區別

面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。例如五子棋,面向過程的設計思路就是首先分析問題的步驟 1 開始遊...