重新思考面向過程與物件導向

2022-02-16 00:29:50 字數 1411 閱讀 9523

部落格:blog.shinelee.me | | csdn

目錄面向過程物件導向的差異主要體現在思考方式上,面對同樣乙個任務,

面向過程的思考方式,首先想的是一步步該怎麼做

物件導向的思考方式,首先想的是任務中利益相關方都有誰

如果以開公司為例的話:

面向過程的思考方式是,要採購原材料、生產產品、賣產品、管理入賬出賬,因此需要生產人員、銷售人員、財務等,將他們串起來,公司就運轉起來了。

物件導向的思考方式是,公司要分為生產部門、銷售部門、財務等,分別有各自的職責,生產的要記錄生產資料、接收原材料、產出產品,銷售的要記錄銷量、賣出產品……

面向過程的思考方式偏邏輯、偏動作、偏執行,更符合人類的思考方式,像員工視角,把人做事的步驟函式化**化

物件導向的思考方式偏抽象、偏資料、偏象形,像上帝模式,像老闆視角,各個利益相關方彷彿具有了生命,它們之間通過相互配合完成任務

在我看來,思考方式是面向過程與物件導向的最大差異,而不在於多型等語言特性。

面向過程 和 物件導向並不是對立的。在問題複雜後,面向過程也會模組化,把同一類操作以及共有的資料結構整理在一起,朝物件導向邁進,就像公司從混亂的小作坊做大後就會形成部門;物件導向在執行具體工作時,仍是面向過程的,也是有步驟的,就像公司生產線上質檢員工,仍需要第一步檢查什麼、第二步檢查什麼。

此外,再談談語言層面面向過程語言(比如c語言),可以是流程化的,乙個函式乙個函式地呼叫,但也能表達物件導向思想,比如模組化後,將結構體和函式規劃好所屬類別,使用時類和物件的思想在腦袋裡;支援物件導向的語言(比如c++),是在語言層面對類和物件的思想提供了支援,將腦袋裡的類別用語言中的class具現出來,將類別間的衍生關係用語言中的繼承具現出來,同時在編譯器(編輯器)上提供了訪問的邊界,並有相應的語法來界定。

兩種程式設計思路並無明顯優劣之分,一切只看適不適合。面向過程模組化做得好,也可以很清晰。物件導向設計過度,也會噁心人。如何選擇呢?

這裡直接貼上sigai丁老師的建議,

一般而言:

以上。

物件導向過程與物件導向

物件導向過程與物件導向 1 程式的發展經歷了兩個階段 面向過程 物件導向。2 對於物件導向與面向過程可以用乙個例子解釋,如乙個木匠要做乙個盒子,那麼這個盒子的出發點會有兩種方式 物件導向 先想好要做的盒子,之後在去找相應的工具去做。面向過程 不去想要做什麼樣的盒子,隨需取工具。物件導向三大特徵 封裝...

物件導向與面向過程

分析出解決問題所需要的步驟,然後用函式把步驟分解開,使用時再呼叫這些函式。面向過程強調流程化 線性化 步驟化的思考方式 把構成問題事務分解成各個物件,描述各個事務在問題中的行為。強調整體性和差異性。具有抽象 封裝,繼承,多型 面向過程效率高 流程明確,具體步驟清楚 但耗費精力,重用率低 擴充套件能力...

物件導向與面向過程

一 面向過程程式設計 面向過程程式設計是一種以過程為中心的程式設計思想,分析出解決問題的步驟,然後用函式把這些步驟一步一步實現。面向過程程式設計,資料和對資料的操作是分離的。二 物件導向程式設計 物件導向程式設計是將事物物件化,通過物件通訊來解決問題。物件導向程式設計,資料和對資料的操作是繫結在一起...