1. 程式人生 > >面向函式程式設計和麵向物件程式設計的區別和使用

面向函式程式設計和麵向物件程式設計的區別和使用

簡述面向函式程式設計和麵向物件程式設計的區別?
什麼時候使用面向函式程式設計?什麼時候使用面向物件程式設計?

函數語言程式設計,顧名思義,這種程式設計是以函式思維做為核心,在這種思維的角度去思考問題。
這種程式設計最重要的基礎是λ演算,接受函式當作輸入和輸出。

面向物件程式設計,這種程式設計是把問題看作由物件的屬性與物件所進行的行為組成。基於物件的概念,
以類作為物件的模板,把類和繼承作為構造機制,以物件為中心,來思考並解決問題。

優點:

函數語言程式設計:
支援閉包和高階函式,閉包是一種可以起函式的作用並可以如物件般操作的物件;
而高階函式是可以以另一個函式作為輸入值來進行程式設計。支援惰性計算,這就可以在求值需要表示式的值得時候進行計算
,而不是固定在變數時計算。還有就是可以用遞迴作為控制流程。函數語言程式設計所程式設計出來的程式碼相對而言少很多,而且更加簡潔明瞭。
 面向物件程式設計:
面向物件有三個主要特徵,分別是封裝性、繼承性和多型性。類的說明展現了封裝性,類作為物件的模板,
含有私有資料和公有資料,封裝效能使資料更加安全依賴的就是類的特性,使得使用者只能看到物件的外在特性,
不能看到物件的內在屬性,使用者只能訪問公有資料不能直接訪問到私有資料。
類的派生功能展現了繼承性,繼承性是子類共享父類的機制,但是由於封裝性,繼承性也只限於公有資料的繼承(還有保護資料的繼承),
子類在繼承的同時還可以進行派生。而多型性是指物件根據接收的資訊作出的行為的多型,不同物件接收同一資訊會形成多種行為。

缺點

函數語言程式設計:所有的資料都是不可以改變的,嚴重佔據執行資源,導致執行速度也不夠快。

面向物件程式設計:為了編寫可以重用的程式碼導致許多無用程式碼的產生,並且許多人為了面向物件而面向物件導致程式碼給後期維護帶來很多麻煩。