計算機語言可以歸為面向過程語言和物件導向語言,那麼到底什麼是物件導向,什麼是面向過程呢?
答:面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了;物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
可以拿生活中的例項來理解面向過程與物件導向,例如五子棋,面向過程的設計思路就是首先分析問題的步驟:1、開始遊戲,2、黑子先走,3、繪製畫面,4、判斷輸贏,5、輪到白子,6、繪製畫面,7、判斷輸贏,8、返回步驟2,9、輸出最後結果。把上面每個步驟用不同的方法來實現。
如果是物件導向的設計思想來解決問題。物件導向的設計則是從另外的思路來解決問題。整個五子棋可以分為1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統,負責繪製畫面,3、規則系統,負責判定諸如犯規、輸贏等。第一類物件(玩家物件)負責接受使用者輸入,並告知第二類物件(棋盤物件)棋子布局的變化,棋盤物件接收到了棋子的變化就要負責在螢幕上面顯示出這種變化,同時利用第三類物件(規則系統)來對棋局進行判定。
可以明顯地看出,物件導向是以功能來劃分問題,而不是步驟。同樣是繪製棋局,這樣的行為在面向過程的設計中分散在了多個步驟中,很可能出現不同的繪製版本,因為通常設計人員會考慮到實際情況進行各種各樣的簡化。而物件導向的設計中,繪圖只可能在棋盤物件中出現,從而保證了繪圖的統一。
概念面向過程是一種以過程為中心的程式設計思想,它是一種基礎的順序的思維方式,物件導向方法的基礎實現中也包含面向過程思想。
特性:模組化 流程化
優點:效能比物件導向高,因為類呼叫時需要例項化,開銷比較大,比較消耗資源;比如微控制器、嵌入式開發、linux/unix等一般採用面向過程開 發,效能是最重要的因素。
缺點:沒有物件導向易維護、易復用、易擴充套件
概念物件導向是按人們認識客觀世界的系統思維方式,採用基於物件(實體)的概念建立模型,模擬客觀世界分析、設計、實現軟體的辦法。通過物件導向的理念使計算機軟體系統能與現實世界中的系統一一對應。
特性:抽象 封裝 繼承 多型
優點:易維護、易復用、易擴充套件,由於物件導向有封裝、繼承、多型性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易於維護
缺點:效能比面向過程低
物件導向與面向過程具體而言,有如下幾個方面的不同:
1、出發點不同
物件導向方法是用符合常規思維的方式來處理客觀世界的問題,強調把問題域的要領直接對映到物件之間的介面上。而面向過程的方法則強調的則是過程的抽象化與模組化,它是以過程為中心構造或處理客觀世界問題的。
2、層次邏輯關係不同
物件導向的方法則是用計算機邏輯來模擬客觀世界中的物理存在的,以物件的集合類作為處理問題的單位,盡可能地使計算機世界向客觀世界靠攏,以使問題的處理更清晰直接,物件導向方法是用類的層次結構來體現類之間的繼承與發展。面向過程方法處理問題的基本單位是能清晰準確地表達過程的模組,用模組的層次結構概括模組或模組間的關係與功能,把客觀世界的問題抽象成計算機可以處理的過程。
3、資料處理方式與控制程式方式不同
物件導向方法將資料與對應的**封裝成乙個整體,原則上其他物件不能直接修改其資料,即物件的修改只能由自身的成員函式完成,控制程式方式上是通過「事件驅動」來啟用和執行程式。而面向過程方法是直接通過程式來處理資料,處理完畢後即可顯示處理的結果,在控制方式上是按照設計呼叫或返回程式,不能自由導航,各模組之間存在著控制與被控制,調動與被呼叫的關係。
4、分析設計與編碼轉換方式不同
物件導向方法貫穿於軟體生命週期的分析,設計及編碼中,是一種平滑過程,從分析到設計再到編碼是採用一致性的模型表示,即實現的是一種無縫連線。而面向過程方法強調分析、設計及編碼之間按規則進行轉換貫穿於軟體生命週期的分析、設計及編碼中,實現的是一種有縫的連線。
物件導向與面向過程區別
物件導向是以事物為中心的程式設計思想,把構建問題事務分解成各個物件,建立物件的目的是為了描述某個事物在整個解決問題的步驟中的行為 面向過程是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用時依次呼叫就可以了 區別 物件導向程式設計,往往是從問題的一部分著手,一點一點地構建出整個程式...
物件導向與面向過程的區別
面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。例如五子棋,面向過程的設計思路就是首先分析問題的步驟 1 開始遊...
面向過程與物件導向的區別
面向過程 1 現實世界是物件,分析階段是物件,在設計及開發階段是方法與方法之間的呼叫,與現實世界 分析階段不統一,容易出現偏差,增加了開發的難度,容易 出問題。2 因為方法與方法之間的直接呼叫,讓我們系統依賴底層具體實現,而不是 依賴高層概念及巨集觀的商業邏輯。3 方法與方法之間有呼叫 的藕合度太,...