什麼是物件導向?什麼又是面向過程呢?對於這兩大程式設計思想,一直貫穿在我們的學習和生活中。我們知道物件導向和面向過程,但是讓你真正說出來的時候,你也許就會發現,我真的不知道怎樣描述它。傳統的面向過程的程式設計思想總結起來就八個字——自頂向下,逐步細化舉乙個簡單的例子,給你乙個任務,你要思考怎樣完成它?如果你的思維方式是:
我先做什麼,再做什麼……這叫面向過程;
我先做乙個什麼東西來做這件事,再做乙個什麼東西來做那件事,然後它們怎麼相互配合……這叫物件導向。
下面我將要講解一下我是怎樣理解這兩大思想的。
!實現步驟如下:
1. 將要實現的功能描述為乙個從開始到結束按部就班的連續的步驟(過程);
2. 依次逐步完成這些步驟,如果某一步的難度較大,又可以將該步驟再次細化為若干個子步驟,以此類推,一直到結束得到想要的結果;
3. 程式的主體是函式,乙個函式就是乙個封裝起來的模組,可以實現一定的功能,各個子步驟往往就是通過各個函式來完成的,從而實現**的重用和模組化程式設計!
大神部落格中看到的例子.
案例:學生到校報道註冊
面向過程流程圖:
面向過程,就是按照我們分析好了的步驟,按部就班的依次執行就行了!所以當我們用面向過程的思想去程式設計或解決問題時,首先一定要把詳細的實現過程弄清楚。一旦過程設計清楚,**的實現簡直輕而易舉。
採用物件導向的思想,解決上面的報名問題,應該如下:
*學生提出報名
*學生繳費
*機構收費
*教師分配教室
*班級增加學生資訊
於是,在整個過程中,一共有四個實體:
學生、機構、教師、班級!
在現實中的乙個具體的實體,就是計算機程式設計中的乙個物件!
屬性就是實體在現實世界中的一些特徵表現。如:
人的屬性:姓名、性別、身高、三圍、體重、**號碼、家庭住址、籍貫等
手機的屬性:品牌、**、顏色、尺寸、待機時間等
功能就是能完成的動作,在物件導向的術語中,動作就叫作方法或者函式。如:
人的動作(功能):吃飯、睡覺、學習、打遊戲、走路、跑步、繳費!
下圖顯示了在上述例項中出現的實體以及相應的屬性和功能:
- 學生提出報名
- 學生繳費
- 學校收費
- 教師分配教室
- 班級增加學生資訊
所以說,面向過程主要是針對功能,而物件導向主要是針對能夠實現該功能的背後的實體。物件導向實質上就是面向實體,所以當我們使用物件導向進行程式設計時,一定要建立這樣乙個觀念:萬物皆物件!
在我們將面向過程和物件導向討論完後,會明顯的感覺兩者之間有著很大的區別。面向過程簡單直接,易於入門理解,模組化程度較低。而物件導向相對於面向過程較為複雜,不易理解,模組化程度較高。
可總結為下面三點:
1.都可以實現**重用和模組化程式設計,但是面對物件的模組化更深,資料更封閉,也更安全!因為物件導向的封裝性更強!
2.面對物件的思維方式更加貼近於現實生活,更容易解決大型的複雜的業務邏輯
3.從前期開發角度上來看,面對物件遠比面向過程要複雜,但是從維護和擴充套件功能的角度上來看,面對物件遠比面向過程要簡單!
如何選擇物件導向還是面向過程,對於乙個有著豐富開發經驗的老手來說,這是個得心應手的過程。而對於乙個新手而言,其實從兩者的對比就可以看出,當我們的業務邏輯比較簡單時,使用面向過程能更快的實現。但是當我們的業務邏輯比較複雜時,為了將來的維護和擴充套件,還是物件導向更為靠譜點!當然,當我們被經理催著上交專案時,不要再選擇糾結了,哪個能讓你更快的完成專案就用哪個吧
物件導向和面向過程
面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。例如五子棋,面向過程的設計思路就是首先分析問題的步驟 1 開始遊...
物件導向和面向過程
物件導向和面向過程的區別 面向過程 更加關注整個程式的實現流程 物件導向 更加關注整個程式中有哪些類,每個類有哪些屬性,有哪些行為,它將整個功能劃分為許多小功能,分散到不同的類中,使用時,僅需命令相應的類完成相應的事情 物件導向的優勢 1.更高的容錯率 2.更易閱讀的 3.更易擴充套件 物件導向的劣...
物件導向和面向過程
面向過程 顧名思義,其中心意義在於 過程 二字,比如你要吃飯,那麼首先是要選地,播種,施肥,成熟,收穫,煮飯,然後才能吃飯,那麼面向過程就是從開始到結束,分析出解決問題的需要的每乙個步驟,然後用函式將這些步驟乙個乙個實現,使用的時候乙個乙個一次呼叫就行了。物件導向 同樣的,你去飯店吃飯的時候,只需要...