1. 程式人生 > >[18/11/23]面向物件和麵向過程

[18/11/23]面向物件和麵向過程

1、區別與聯絡

 面向過程(C和C++): 關心的是“怎麼按步驟實現?”   並將步驟對應成方法,一步一步,最終完成。 這個適合簡單任務(通俗講:就是不需要過多協作的情況下)。

         如:如何開車?  (單人就可以做)     步驟:1. 發動車點火 2. 掛擋 3.踩油門 4. 走  。 不去關心車是怎麼造出來的!

 面向物件(java):  關心的是 “怎麼設計這個事物?”   此時需要多人協作 (單人是無法完成的),是個系統工程。

        如:如何造車?(需要多人協作)    想到一輛車由  1. 輪胎  2. 發動機  3. 車殼  4. 座椅  5. 擋風玻璃 等組成。為了協作,可以找輪胎廠完成造輪胎的步驟,發動機廠完成造發動機的步驟。而且各個廠可以同時開工,最終組裝,大大提高了效率。

【聯絡】具體到一個輪胎的製造,在流水線上還是有步驟的,這就是面向過程的思想。

2、總結

       (1).面向物件具有三大特徵:封裝性、繼承性和多型性,而面向過程沒有繼承性和多型性,並且面向過程的封裝只是封裝功能,而面向物件可以封裝資料和功能。所以面向物件優勢更明顯。

  (2).一個經典的比喻:面向物件是蓋澆飯、面向過程是蛋炒飯。蓋澆飯的好處就是“菜”、“飯”分離,從而提高了製作蓋澆飯的靈活性。飯不滿意就換飯,菜不滿意換菜。用軟體工程的專業術語就是“可維護性”比較好,“飯” 和“菜”的耦合度比較低。

 【擴充套件】物件發展簡史

        為了便於協作和管理,我們“將相關資料和相關方法封裝到一個獨立的實體”,於是“物件”產生了。 比如,我們的一個學生物件:

                 有屬性(靜態特徵):年齡:18,姓名:高淇,學號:1234

                 也可以有方法(動態行為):學習,吃飯,考試

     1.物件說白了也是一種資料結構(對資料的管理模式),將資料和資料的行為放到了一起。

   2.在記憶體上,物件就是一個記憶體塊,存放了相關的資料集合!

   3.物件的本質就一種資料的組織方式!

連結:http://www.sxt.cn/Java_jQuery_in_action/Object_evolutionary_history.html