“
不久前有人在微信私聊我,被問及面向物件程式設計和麵向過程程式設計的本質區別是什麼?對於這個問題菜鳥分析也沒有做過多的思考,今天在此做一個淺入深談,探求一些面向物件和麵向過程本質的區別在哪裡?
今天,我們以一個例子(如打掃房間)來說明面向過程和麵向物件在程式流程上的不同之處。
在菜鳥分析看來:
面向過程就是將程式設計當成是做一件事,要按步驟完成,每一步就是一個過程。比如菜鳥分析要打掃房間這件事,需要先取掃帚,然後仔仔細細打掃每一處,最後將掃帚放回原地。
”
程式碼實現過程
面向物件就是將程式設計當成是一個事物,對外界來說,事物是直接使用的,不用去管他內部的情況。而程式設計就是設定事物能夠做什麼事。其實有點像是將面向過程給放到事物內部了。仍然舉打掃房間為例,其實面向過程就好像自己去打掃房間,所以要講究步驟,而面向物件就好像你只要通知掃地機器人打掃房間,即發一個訊息就可以了,至於機器人怎樣打掃,是不用知道的。
程式碼實現過程
只需自己發出掃地這個訊息後,過了一會兒後,(1,2,3)掃地機器人將向您彙報結果。
面向過程:你拿掃帚去打掃房間,主體是你,取掃帚,大掃地,一系列動作都需要你自己完成;
面向物件:把掃地機器人當成主體物件,相當於個活物,機器人主動去打掃衛生,至於如何打掃完,跟你沒關係。
因此,在菜鳥分析看來,面向過程,是人在幹活。面向物件,相當於人創造機器人去幹活。
站在計算機程式角度來講,面向過程和麵向物件的本質理解為:
-
面向過程的程式設計把計算機程式視為一系列的命令集合,即一組函式的順序執行。為了簡化程式設計,面向過程把函式繼續切分為子函式,即把大塊函式透過切割成小塊函式來降低系統的複雜度。
-
而面向物件的程式設計把計算機程式視為一組物件的集合,而每個物件都可以接收其他物件發過來的訊息,並處理這些訊息,計算機程式的執行就是一系列訊息在各個物件之間傳遞。
總的來說:面向物件是將事物高度抽象化,面向物件必須先建立抽象模型,之後直接使用模型就行了;面向過程是一種自頂向下的程式設計
一句話,秒懂!若還不懂,來私信我,直到你懂為止!