前言
有過編程的經歷的讀者可能經常會聽到面向過程編程和面向對象編程,然後你是否去深入了解過這兩個概念,它們之間有什麼區別,下面我就來簡單介紹一下。
舉例1
首先用一個十分簡單的例子來對這兩個概念有一個宏觀的認識
假設明天我要從上海出發前往北京,面向過程的我會這樣做:打開地圖搜索一下,自己開車走哪一條路比較近,選擇哪一條國道,走哪一座橋,過哪一個隧道,都是我需要需要考慮的,最後我一步一步的實現它,到達了北京。
而面向對象的我會這樣做:開打出行APP選擇坐飛機還是火車,選擇哪一班車,選擇完畢,去車站坐車,到達目的地。
面向過程會要求去掌控每一個細節,而面向對象則只需要挑選合適的工具即可。
舉例2
我是一名NBA的數據分析師,我的工作是記錄球隊的統計數據,顯然,我需要計算機的幫助。
過程性的程序員可能會這樣考慮:
我要輸入每名球員的姓名,投籃次數,命中次數,命中率以及其它的一些基本統計數據,籃板,助攻等。為了簡化工作我需要計算機來計算數據,並且我還希望程序能夠顯示這些數據,那麼我應該如何做呢?我可能會想到調用函數來完成輸入的工作,調用另外一個函數完成計算的工作,然後調用第三個函數完成顯示的工作。那麼,獲得下一場比賽的數據後,又應該怎麼做呢?我可不想再從頭開始了,這時候我會選擇調用一個更新數據的函數。在這些基礎上,我會想做一個菜單,選擇是輸入、計算、顯示還是更新。那麼這些數據如何存儲呢?這時我會用字符串數組來存放名字,另外一個數組存放投籃次數,以及其它數組存放其它數據,這樣做好像太麻煩了,可以直接設計一個結構來存儲每位球員的所有信息,然後再用這個結構組成的數組來表示整個球隊。
總之,採用過程性編程方法時,首先考慮要遵循的步驟,然後考慮如何存放這些數據。
這個時候OOP(面向對象程序設計(Object Oriented Programming))程序員會怎麼做呢?
首先考慮的是數據,不僅是考慮如何表示數據,還要考慮如何使用數據:
我要追蹤的是什麼?當然是選手。因此需要一個對象表示整個選手的各個方面(不僅僅是投籃次數或命中率)。這將是數據的基本單元——一個表示選手姓名和統計數據的對象。我需要一些處理該對象的方法。首先需要一種將基本信息加入到該單元中的方法;其次,計算機應計算一些東西,如命中率,因此需要添加一些執行計算的方法。程序應自動完成這些計算,而用戶無需干涉。另外,還需要一些更新和顯示信息的方法。所以,用戶與數據交互的方式有三種:初始化、更新和報告——這就是用戶接口。
總之,採用OOP方法時,首先從用戶的角度考慮對象——描述對象所需要的數據以及描述用戶與數據交互所需要的的操作。完成對接口的描述後,需要確定如何實現接口和數據存儲。最後,使用新的設計方案創建出程序。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/252718.html
微信掃一掃
支付寶掃一掃