以前上物件導向這門課的時候,我是沒有特別注意這些。
但現在發現物件導向和面向過程的設計思想是很重要的
1.物件導向和面向過程有什麼區別?
物件導向程式設計和面向過程程式設計的區別實際就是解決問題的方式不同。
先解釋面向過程,你得先分析出解決問題的步驟,然後用函式把這些步驟一步一步地實現,解決的時候就是乙個乙個函式地呼叫。
物件導向,首先你需要知道物件的概念。
物件,就是類中某個具體的例項,比如人類張三,李四就是類的某個物件,他們有自己獨特的個性。
物件導向,看名字它是注重物件的。當解決乙個問題的時候,物件導向會把事物抽象成物件的概念,就是說這個問題裡面有哪些物件,然後給物件賦一些屬性和方法,然後讓每個物件去執行自己的方法,問題得到解決。
不懂別急,舉個例子你就明白了,不懂都難^_^
面臨的問題: 洗衣機裡面放有髒衣服,怎麼洗乾淨?
面向過程:
1 執行加洗衣粉方法;
2.執行放洗滌劑方法
3執行加水方法;
5 執行放衣服,洗衣服方法;
6執行清洗方法;
7. 執行烘乾方法;
----------解決問題
拆成乙個個方法,是沒有物件去呼叫的。 通過乙個個方法的執行解決問題。
物件導向: 我先搞個洗衣機物件和人物件
洗衣機: 加入一些屬性和方法
洗衣服方法
清洗方法
烘乾方法
人:加洗衣粉方法
加水方法
然後 人
.加洗衣粉 人.加水
洗衣機.
洗衣服 洗衣機.清洗
洗衣機.
烘乾
----------同樣解決問題
先抽象出物件,然後用物件執行方法的方式解決問題。
關於兩者的優缺點,根據你的需要來判斷。並不能一概而論
網上很多關於二者優缺點,我認為最形象的解釋是蛋炒飯和蓋澆飯的比較
蛋炒飯:
蓋澆飯:
蛋炒飯的好處就是入味均勻,吃起來香。如果恰巧你不愛吃雞蛋,只愛吃青菜的話,那麼唯一的辦法就是全部倒掉,重新做乙份青菜炒飯了。蓋澆飯就沒這麼多麻煩,你只需要把上面的蓋菜撥掉,更換乙份蓋菜就可以了。蓋澆飯的缺點是入味不均,可能沒有蛋炒飯那麼香。
到底是蛋炒飯好還是蓋澆飯好呢?其實這類問題都很難回答,非要比個上下高低的話,就必須設定乙個場景,否則只能說是各有所長。如果大家都不是美食家,沒那麼多講究,那麼從飯館角度來講的話,做蓋澆飯顯然比蛋炒飯更有優勢,他可以組合出來任意多的組合,而且不會浪費。
蓋澆飯的好處就是」菜」「飯」分離,從而提高了製作蓋澆飯的靈活性。飯不滿意就換飯,菜不滿意換菜。用軟體工程的專業術語就是」可維護性「比較好,」飯」 和」菜」的耦合度比較低。蛋炒飯將」蛋」「飯」攪和在一起,想換」蛋」「飯」中任何一種都很困難,耦合度很高,以至於」可維護性」比較差。軟體工程追求的目標之一就是可維護性,可維護性主要表現在3個方面:可理解性、可測試性和可修改性。物件導向的好處之一就是顯著的改善了軟體系統的可維護性。
面向過程:
優點:效能比物件導向高,因為類呼叫時需要例項化,開銷比較大,比較消耗資源;比如微控制器、嵌入式開發、 linux/unix等一般採用面向過程開發,效能是最重要的因素。
缺點:沒有物件導向易維護、易復用、易擴充套件
物件導向:
優點:易維護、易復用、易擴充套件,由於物件導向有封裝、繼承、多型性的特性,可以設計出低耦合的系統,使系統 更加靈活、更加易於維護
缺點:效能比面向過程低
需要解釋一下耦合度,以我的理解可能不是那麼準確
低耦合,就是說事物相關性低,其中某乙個的改變,並不會使另外的有很大的改變,獨立性高
物件導向和面向過程區別
原文 面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。例如五子棋,面向過程的設計思路就是首先分析問題的步驟 1 ...
物件導向和面向過程的區別
面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。例如五子棋,面向過程的設計思路就是首先分析問題的步驟 1 開始遊...
物件導向和面向過程的區別
面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。例如五子棋,面向過程的設計思路就是首先分析問題的步驟 1 開始遊...