編程語言面向對象和面向過程的區別

通俗地說,就是以 事 為中心,還是以 物 為中心 。
面向過程
面向過程的編程思想,聚集于解決問題的方法,也就是干了什么事(即上面所說的事) 。
采用這種思想進行編程時 , 重點是構建一個個函數 。

  • 舉例

比如說,你要在窗口上繪制鮮花 。
編程語言面向對象和面向過程的區別

文章插圖
面向過程的思路多半是這樣的,書寫一個繪制鮮花函數(比如取名為 DrawFlower ),帶兩個參數,一個參數用于指定鮮花的顏色,另一個參數用于指定鮮花的大小 。
編程語言面向對象和面向過程的區別

文章插圖

函數寫好后 , 每當需要畫花時,就調用一次 DrawFlower 函數 。
現在,我們要在窗口繪制一朵紅花,一朵黃花,那就分別調用 DrawFlower 函數兩次 , 一次畫紅花 , 一次畫黃花 。那么 , 如果要畫 1 億朵五顏六色的花呢,那就調用 1 億次函數,并分別傳入五花八門的顏色和大小 。

編程語言面向對象和面向過程的區別

文章插圖
面向對象
而面向對象的方法,則聚焦于實施動作的對象,也就是這事兒是誰干的(即上面所說的物) 。
采用這種思想進行編程時 , 重點是抽象提煉出一個個物對象,再根據需要構建一個個類 。
  • 舉例

同樣的,我們還是要在窗口上繪制鮮花 。采用面向對象的方法,我們可以先構造一個 Flower 鮮花類 , 并為這個鮮花類添加兩個屬性:
  • 顏色
  • 大小
然后實現一個方法:
  • 繪制

編程語言面向對象和面向過程的區別

文章插圖
【編程語言面向對象和面向過程的區別】
當我們要繪制鮮花時,需要首先實例化一個 Flower 鮮花對象(在創建鮮花對象時,我們為它指定顏色和大?。?。然后,當需要在窗口上繪制時,我們再調用這個鮮花對象的繪制方法 。
區別
  • 當我們使用面向過程的思想時,由于需要編寫處理事情的函數,所以我們要明確解決問題的過程和要素 。
  • 當我們使用面向對象的思想時,由于首先需要構建類 , 所以我們要提取出來這個物類的共性 。例如,鮮花都有顏色,也都有一定的大小 。而且,我們構建該物類的最終目的是為了繪制鮮花,所以還必須創建一個繪制方法 。

總結
面向過程的主要優點是性能好,省資源(因為無需構建對象),缺點是不直觀 , 與日常生活中的觀念相差較大,不易于理解,也不利于復用 , 工程復雜時管理起來難度頗大 。
編程語言面向對象和面向過程的區別

文章插圖
面向對象的主要優點是易于理解和維護、擴展方便(因為面向對象有繼承、多態等),復用率高,可根據需要隱藏內部實現,僅暴露必要的接口,缺點是總的來說比面向過程占用略大,性能略低 。
利用面向過程的語言的結構體和指針完全可以模擬面向對象的過程 。而面向對象的語言就是把這部分代碼抽象化了,提供了代碼的利用率 。我個人覺得面向過程能解決的簡單單次問題就面向過程解決 。如果要反復用,參數會有變化的代碼,那就模塊化 , 用面向對象 。