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

2021-08-26 23:16:59 字數 2251 閱讀 2409

1.面向過程 procedure oriented programming pop

以事件為中心的程式設計思想。就是分析出解決問題所需的各個步驟,然後用函式把這些步驟按順序實現,並按順序呼叫。

特性:模組化 流程化

2.物件導向 object oriented programming oop

把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。

特性:抽象 封裝 繼承 多型

以五子棋遊戲為例。

面向過程的設計思路就是首先分析問題的步驟:

開始遊戲,

黑子先走,

繪製畫面,

判斷輸贏,

輪到白子,

繪製畫面,

判斷輸贏,

返回步驟2,

輸出最後結果

把上面每個步驟用不同的方法來實現。

物件導向的設計則是從另外的思路來解決問題。整個五子棋可以分為:

黑白雙方,這兩方的行為是一模一樣的,

棋盤系統,負責繪製畫面,

規則系統,負責判定諸如犯規、輸贏等。

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

如果要加乙個悔棋功能,面向過程則需要改動很多地方,黑子撤回棋,棋盤變化,然後載繪製,再判斷,可能很多要變化;隨著功能的越來越多,系統無法應付功能需求的規則的複雜而膨脹,最終導致奔潰;但是物件導向只需要得到悔棋命令後,繪製棋盤系統將棋盤重新繪製,呼叫規則系統判定即可,減少了大的改動;保證了物件導向程式的可擴充套件性;

所以從上可以看出,物件導向是以功能來劃分問題,而不是步驟。物件導向會從巨集觀的角度思考要解決的問題,將問題抽象成乙個系統,進而分析系統中相互作用的各個物件,將問題的解決看做的系統中的物件相互作用的結果。而面向過程則更加「直截了當」,聚焦於某乙個特殊問題的解決,用程式語言實現解決問題的方法步驟。

簡言之,面向過程,效率更高;物件導向,通用更好。

1.面向過程

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

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

2.物件導向

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

缺點:效能比面向過程低

1、出發點不同

物件導向方法是用符合常規思維的方式來處理客觀世界的問題,強調把問題域的要領直接對映到物件之間的介面上。

面向過程方法則強調的則是過程的抽象化與模組化,它是以過程為中心構造或處理客觀世界問題的。

2、層次邏輯關係不同

面向過程的方法則是用計算機邏輯來模擬客觀世界中的物理存在的,以物件的集合類作為處理問題的單位,盡可能地使計算機世界向客觀世界靠攏,以使問題的處理更清晰直接。

物件導向方法是用類的層次結構來體現類之間的繼承與發展。面向過程方法處理問題的基本單位是能清晰準確地表達過程的模組,用模組的層次結構概括模組或模組間的關係與功能,把客觀世界的問題抽象成計算機可以處理的過程。

3、資料處理方式與控制程式方式不同

面向過程方法是直接通過程式來處理資料,處理完畢後即可顯示處理的結果,在控制方式上是按照設計呼叫或返回程式,不能自由導航,各模組之間存在著控制與被控制,調動與被呼叫的關係。

物件導向方法將資料與對應的**封裝成乙個整體,原則上其他物件不能直接修改其資料,即物件的修改只能由自身的成員函式完成,控制程式方式上是通過「事件驅動」來啟用和執行程式。

4、分析設計與編碼轉換方式不同

面向過程方法強調分析、設計及編碼之間按規則進行轉換貫穿於軟體生命週期的分析、設計及編碼中,實現的是一種有縫的連線。

物件導向方法貫穿於軟體生命週期的分析,設計及編碼中,是一種平滑過程,從分析到設計再到編碼是採用一致性的模型表示,即實現的是一種無縫連線。

面向過程與物件導向不是完全對立的,不是在程式設計的時候必須要選擇某一種思想作為唯一的。實際問題的解決中,往往是要首先對問題進行分析,建立模型,構建系統,設計物件,具體進行類的設計,這都是物件導向的思想的體現。而具體到類的設計過程中,具體到類的某一種方法的實現,還是需要面向過程的思想來參考的。

物件導向與面向過程區別

物件導向是以事物為中心的程式設計思想,把構建問題事務分解成各個物件,建立物件的目的是為了描述某個事物在整個解決問題的步驟中的行為 面向過程是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用時依次呼叫就可以了 區別 物件導向程式設計,往往是從問題的一部分著手,一點一點地構建出整個程式...

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

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

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

面向過程 1 現實世界是物件,分析階段是物件,在設計及開發階段是方法與方法之間的呼叫,與現實世界 分析階段不統一,容易出現偏差,增加了開發的難度,容易 出問題。2 因為方法與方法之間的直接呼叫,讓我們系統依賴底層具體實現,而不是 依賴高層概念及巨集觀的商業邏輯。3 方法與方法之間有呼叫 的藕合度太,...