連載:麵向對象葵花寶典:思想、技巧與實踐(3) - 麵向過程 vs 麵向對象
麵向過程
在介紹麵向對象之前,我們首先要介紹“麵向過程“,首先是因為”麵向過程“是軟件思想中的鼻祖;其次是因為隻有了解了麵向過程,你才能更好的了解麵向對象!正所謂:知己知彼百戰百勝!
麵向過程是一種以“過程”作為中心的編程思想,其中過程的含義就是“完成一件事情的步驟”。
麵向過程其實是一種“機械的思想”,它就像流水線一樣,一個階段銜接一個階段,每個階段都有自己的輸入、處理、輸出,而在流水線上流動的就是我們的原料或者中間產品,每個階段都有一個機械進行處理,最後的輸出就是我們的產品。
在運用麵向過程的方法時,你也需要設計這樣一條程序流水線:將程序劃分為不同的階段,設計好各個階段如何銜接,然後定義好每個階段需要處理的數據。
但凡學過編程的都知道這麼一個說法:程序=算法 + 數據結構,這個總結其實正好契合了機械化的特征,“算法”=“流水線”,“數據結構”= “原料/中間產品”,“程序”= “產品”。
麵向過程的這種特征其實是和計算機的本質相關的,計算機本質上是一台機器,其核心-CPU處理的是指令流水,簡單點說就是01串,要讓計算機跑起來,按照CPU的特點進行思考和處理是理所當然的。
即使我們使用麵向對象的語言進行開發,最後轉換為CPU能執行的指令,還是麵向過程的,所以說,麵向過程無處不在,是計算機的基石。
如下圖片是啤酒生產線的全流程圖,形象的說明了麵向過程的處理方式:
麵向對象
麵向對象是一種以“對象”作為中心的編程思想,其中對象的含義可以理解為“存在的東西”。
與麵向過程的方法相比,麵向對象不再局限於計算機的機器本質,而更加側重於對現實世界的模擬。麵向過程的方法中,有一套設計嚴格的操作順序,有一個類似中央控製器的角色來進行統一調度;而麵向對象的方法中,並沒有明確的中央控製的角色,也不需要指定嚴格的操作順序,而是設計了很多對象,並且指定了這些對象需要完成的任務,以及這些對象如何對外界的刺激做出反應。
如果說麵向過程像一條流水生產線,那麼麵向對象就像是一個足球隊。沒有哪個人能夠在一場比賽開始的時候,就精確指定每個隊員的每一次跑動,每一次出腳,每一次傳球。。。。。。而隻能指定隊員的角色(前鋒、中場、後衛、門將),然後由隊員門自己根據情況做出反應。所以世界上有兩個一樣的生產線,但絕對不會存在兩場一模一樣的比賽。
麵向對象這種對現實世界的模擬的思想,其本質上就是“人的思想”,這是一個質的飛躍,意味著程序員可以按照人的思想來觀察、分析、設計係統。
什麼叫做“人的思想”?你可以放下書本,關上電腦,站起來,環顧四周,你看到的是什麼?可能是你的同事、桌子、牆、電腦、花盆;或者是電話、窗子、書本。。。。。。怎麼樣,這些都是“對象”吧?除了觀察目標聚焦於“對象”外,當我們觀察人類世界各種事情的運作的時候,我們也不知不覺的聚焦於“對象”。例如,一個公司的運作,由董事長、經理、主管、員工等人分工合作,根據不同的任務或者外界競爭而去做各種各樣的事情。
人大部分的時間都是按照麵向對象的方式進行思考的,而且人類世界主要也是按照麵向對象的方式進行運轉的,所以說,“麵向對象”其實更加符合人的思維習慣。
麵向過程中有“程序=算法+數據結構”的經典總結,麵向對象也有類似的總結:“程序=對象 + 交互”。其中對象就是具體存在的事物,而交互則是事物之間的相互作用、互動等。
如下是一張醫院的組織結構圖,形象的說明了麵向對象的處理方式:

==============================================================
轉載請注明出處:https://blog.csdn.net/yunhua_lee/article/details/17305945
==============================================================
最後更新:2017-04-03 12:53:47