25.C++:最通俗的講解,什麼是面向過程?什麼是面向物件?
網上關於這兩個的回答真的很多,但是都有一個共同特點:------------不容易懂。我今天就簡單通俗的說一下(當然,如果你要非常深入的瞭解,這篇不適合你。如果你只是為了瞭解什麼是面向過程和麵向物件,怎麼面對考試,面對面試,怎麼和別人說兩者區別,看我下面幾段話夠了。)
先來兩小段通俗解釋面向過程(Procedure Oriented 簡稱PO :像C語言):
看名字它是注重過程的。當解決一個問題的時候,面向過程會把事情拆分成: 一個個函式和資料(用於方法的引數) 。然後按照一定的順序,執行完這些方法(每個方法看作一個個過程),等方法執行完了,事情就搞定了。
面向物件(Object Oriented簡稱OO :像C++,JAVA等語言):
看名字它是注重物件的。當解決一個問題的時候,面向物件會把事物抽象成物件的概念,就是說這個問題裡面有哪些物件,然後給物件賦一些屬性和方法,然後讓每個物件去執行自己的方法,問題得到解決。
舉個栗子:
冰箱裡面放有髒衣服,怎麼洗乾淨?
面向過程:
1 執行加洗衣粉方法; 2 執行加水方法; 3 執行洗衣服方法; 4 執行清洗方法; 5 執行烘乾方法;----------解決問題
拆成一個個方法,是沒有物件去呼叫的。 通過一個個方法的執行解決問題。
面向物件:
我先搞個洗衣機物件和人物件
洗衣機: 加入一些屬性和方法 洗衣服方法 清洗方法 烘乾方法
人:加洗衣粉方法 加水方法
然後 人.加洗衣粉 人.加水 洗衣機.洗衣服 洗衣機.清洗 洗衣機.烘乾----------同樣解決問題
先抽象出物件,然後用物件執行方法的方式解決問題。
然後在來一個我以前知乎看到的例子 :
男女親密例子 man gril
面向過程: make_love(man,gril) ---------解決問題 拆成一個動作,把資料丟進去
面向物件: man.make_love(gril) 或者 gril.make_love(man) -----解決問題 抽象出物件,物件執行動作 。
當然,你面試的時候,你不要做make_love ....你可以說是打牌 。
面向過程就是 打牌 (你,我,他)
面向物件就是 我.打牌(你,他) or 你.打牌(我,他) or 他.打牌(我,你)
我覺得算是很通俗啦,希望對大家有用。