面向過程?物件導向?

2021-10-25 03:24:58 字數 1746 閱讀 3885

面向過程(procedure oriented programming 縮寫 pop)和物件導向(object oriented programming 縮寫 oop)是實際程式設計中兩種應用比較廣泛的思想。雖然都是程式設計的一種思想,但面向過程注重的是通過**一步一步實現業務邏輯,物件導向更注重的是將變成過程中的屬性和方法分離,使用建構函式建立相應的物件,並且通過物件呼叫方法實現相應功能的程式設計業務邏輯。

面向過程的語言(如:c語言,pascal語言等)的程式設計採用的是過程抽象。所謂面向過程,指的是當求解乙個問題時,面向過程的程式設計是將乙個複雜的問題分解成為多個子問題,如果子問題仍然比較複雜,可再分解為多個子問題,形成層狀結構。每乙個問題就是乙個子過程,高層的過程可以將它下一層中的過程當作抽象操作來使用,而不考慮它下層過程的實現方法。最後,從底層的問題逐個求解,合併形成原問題的解。

然而,面向過程只關注操作,沒有把操作和被操作的資料作為乙個整體來看待,存在一定的弊端。

在物件導向的程式設計中,客觀世界中的事物對映為物件。物件是物件導向程式設計中用來描述客觀事物的基本單位。客觀世界中的許多物件,無論其屬性還是其行為常常有許多共同性,抽象出這些物件的共同性便可以構成類。所以,類是物件的抽象和歸納,物件時類的例項。物件導向強調把資料和操作結合為乙個不可分割的系統單位——類/物件,物件的外部只需要知道這個物件能做什麼,而不必知道它是如何做的。

下面通過編寫求長方形面積的程式例項來說明面向過程程式設計與物件導向程式設計的不同。

1.在面向過程程式設計中,把計算長方形的面積看成乙個長方形過程,在過程中給出長和寬變數及求長方形面積的語句,將長和寬的值作為長方形過程的引數,通過呼叫該過程就可以得到該長方形的面積。

//將長和寬的值作為求長方形面積函式的引數,呼叫長方形面積的函式,得到長方形的面積。

intarea

(int l,

int w)..

.t =

area(30

,20);...

2.物件導向程式設計。首先,長方形看成是乙個長方形物件,把長方形物件的共性抽象出來設計成長方形類,定義類的屬性(靜態特徵)和方法(動態特徵)。然後,建立長方形類的物件,將長和寬的值的資訊傳遞給物件的方法,引用物件的方法求物件的面積。

class

rectangle

//設計乙個長方形的類

}rectangle rec =

newrectangle()

;//建立rectangle類rec的物件

rec.

area(30

,20);

//將長和寬的值的資訊傳遞給物件的方法,引用物件的方法求物件的面積

有必要說明的一點是,無論是面向過程,還是物件導向,都是人們在程式設計中應用廣泛的思想。

業務邏輯比較簡單的適合用面向過程,一兩條語句就可以搞定的問題沒有多大必要用物件導向,也沒有必要用什麼設計模式,那樣就是簡單問題複雜化了。

業務邏輯比較複雜的適合用物件導向,這樣當需求有變化時,維護起來會比較方便。

物件導向無法取代面向過程,他們是相輔相成的。物件導向關注於從巨集觀上把握事物之間的關係,在具體到如何實現某個細節時,仍然採用面向過程的思維方式。物件導向如果離開了面向過程,就無法實現真正的落地,成為無源之水。

物件導向 面向過程

好的既然問題來了,那麼就解決它。怎麼解決呢?不要忘了聯絡具有普遍性之前了解過面向過程一些基礎,看來只能從這裡下手了。下面先把面向過程和物件導向概念列舉出來方便我們來找共性。面向過程 是分析出解決問題 所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個一次呼叫就可以 了。面向過程是一種...

面向過程 物件導向

面向過程 可以快速出結果 先 物件導向 結構清晰,方便以後的維護。重構 面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中...

物件導向 面向過程

面向過程在解決問題的時候 先考慮解決問題的邏輯 要使用變數時再定義出來 自頂向下一步一步把解決方案實現出來 物件導向在解決問題的時候 先考慮要使用到的物件,該物件要有的屬性 方法 使用物件解決這個問題 對比 物件導向解決問題符合人類的直接思路,自頂向下一步一步解決。但存在乙個問題是當 量比較大的時候...