函式式程式設計和物件導向程式設計的區別和優劣

2021-08-07 10:57:29 字數 759 閱讀 5340

是什麼

在敘述區別和優劣之前,簡單介紹一下兩者。

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

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

函式式程式設計:支援閉包和高階函式,閉包是一種可以起函式的作用並可以如物件般操作的物件;而高階函式是可以以另乙個函式作為輸入值來進行程式設計。支援惰性計算,這就可以在求值需要表示式的值得時候進行計算,而不是固定在變數時計算。還有就是可以用遞迴作為控制流程。函式式程式設計所程式設計出來的**相對而言少很多,而且更加簡潔明瞭。

物件導向程式設計:物件導向有三個主要特徵,分別是封裝性、繼承性和多型性。類的說明展現了封裝性,類作為物件的模板,含有私有資料和公有資料,封裝效能使資料更加安全依賴的就是類的特性,使得使用者只能看到物件的外在特性

,不能看到物件的內在屬性,使用者只能訪問公有資料不能直接訪問到私有資料。類的派生功能展現了繼承性,繼承性是子類共享父類的機制,但是由於封裝性,繼承性也只限於公有資料的繼承(還有保護資料的繼承),子類在繼承的同時還可以進行派生。而多型性是指物件根據接收的資訊作出的行為的多型,不同物件接收同一資訊會形成多種行為。

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

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

面向程式設計和物件導向的區別

面向過程 站在程式設計師的角度,按照 自頂而下,逐步求精 的模組化思想去解決問題,適合解決小規模的問題,在解決問題中,注意的是解決問題的每乙個步驟和過程。物件導向 按照 由下而上 的思想,站在使用者的角度先考慮系統由什麼物體 物件 組成,物件之間如何互動的,它比較適合大規模的問題,注重的是在問題中涉...

函式式和物件導向程式設計有什麼區別?

左列 int,add,negate 是三個變式 variant eval,tostring,haszero 是三種操作,這裡要做的是填滿這個 分別實現三個變式的三種操作。函式式程式設計是寫三個函式代表三個方法。然後資料作為引數傳人。物件導向程式設計是資料是主體,然後每個主體上繫結三個方法 函式式程式...

面向過程式程式設計和物件導向程式設計的區別。

c語言是一種面向過程式的計算機語言。在c語言中,我們解決問題的方式是,把問題分成一步步來完成,對應於計算機就是一步步執行。c 語言是一種物件導向的計算機語言。在c 中,我們解決問題的方式是,把問題看作乙個物件,可能是乙個乙個巢狀乙個,我們執行的是對物件操作。總結來說就是,面向過程是一種基礎的方法,它...