http://esunxingjian.blog.163.com/blog/static/4809450820070252551576/
面向過程就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。
物件導向是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
-----------------------------------------------
面向過程的思維方式是分析綜合。物件導向的思維方式是構造。
就是對C語言過程式解決問題時。一般是將現有的資料結構先定義出來。然後想辦法構造出演算法了。
而用C++這樣的物件導向求解時,先是將對象抽出來。構造成一個模擬的環境,然後在這個環境裡,把與最終要解決的問題間建立一個方法。
所以面向過程的程式設計有挑戰性,技巧性強。
而物件導向主要在於對象抽象有技術性,抽象完了後,任何人都可以做後面的工作了。
-------------------------------------------------
物件導向和面向過程的主要區別就是資料是單獨儲存還是與操作儲存在一起。對面向過程而言,資料是獨立的。而在物件導向中,對象本身就提供了儲存資料的空間(類的資料成員),這樣就是函數的參數傳遞簡單多了,而且提供了資料封裝後,資料的訪問也變可靠了。
------------------------------------------
面向過程就是將編程當成是做一件事,要按步驟完成,每一步就是一個過程。比如作菜,先放油,接著是放菜進去炒,然後放水,最後菜就做好了。
這裡面放油,炒,放水就是三個步驟。
物件導向就是將編程當成是一個事物,對外界來說,事物是直接使用的,不用去管他內部的情況。而編程就是設定事物能夠做什麼事。其實有點像是將面向過程給放到事物內部了。仍然舉作菜為例,其實面向過程就好像你是個廚師,要自己炒菜,所以要講究步驟,而物件導向就好像你是個食客,你只要通知廚師作菜,即發一個訊息就可以了,至於廚師怎樣作菜,是不用知道的。
---------------------------------------------------
兩句話:
物件導向是將實物高度抽象化
面向過程是一種自頂向下的編程。
而物件導向是自下先建立抽象模型然後再使用模型。