物件導向與面向過程最根本的不同是什麼?

時間 2021-05-05 17:03:36

1樓:TED

最根本不同就是考慮問題的思路或者說方式不同。

物件導向是通過物件構建「虛擬世界」,解決問題是順帶的事情;

面向過程則是尋求解決問題的方法,問題解決,別的可以忽略。

TED:我用 Python 物件導向做演算法題,她說要先給兔子找上物件

2樓:丁長老

只提一點,有時候,用了物件,不代表就是用了OOP。看上去是OOP,實際上卻一直在用面向過程的程式設計方法,這樣的情況不少的。

物件導向的封裝,物件,繼承,組合,多型這些概念中,要學會概念,也要學會如何去應用。

多做實驗,多重構!

3樓:賑早見琥珀主

創始之初,世界上的一切事務都由全知全能的上帝親自處理。上帝利用自己完備的知識,按部就班地解決乙個又乙個問題。亞當和夏娃只需要把上帝的操作步驟一步一步的記錄下來,就是一段程式了。

比如,計算直角三角形的斜邊長度問題。上帝說:目測直角邊a長度為3,直角邊b長度為4,得出斜邊長度為5.

後來她倆被趕出伊甸園,世界上林林總總的問題都只能靠自己來解決了。但是自己不像上帝那麼全知全能——好在亞當夏娃還記得上帝的操作步驟。於是他倆造了一堆機器,每台機器完成其中一部分工作。

然後亞當夏娃只要按順序啟動、關停機器就ok了。

這時候的程式就是機器開關的順序。

比如,計算直角三角形的斜邊長度問題。亞當開啟機器α,測量得直角邊a長度為3;亞當開啟機器α,測量得直角邊b長度為4;亞當開啟機器β,計算得斜邊長度為5.

但是問題越來越多,機器也越來越多。光靠亞當夏娃兩個人可忙不過來了。好在男女搭配,子子孫孫無窮匱。

於是他們生了幾個孩子,讓他們各自分管一部分工作,也就是各自操作一台機器。為了讓每個人都能把自己的那部分工作做好,同時盡量少受到其他人的干擾,亞當夏娃在教他們機器的操作步驟的同時,也告訴了他們一些關於機器和操作步驟的知識。然後,把孩子們組織一下,就可以解決問題了。

這時候的程式就是孩子們的組織方式了。

比如,計算直角三角形的斜邊長度問題。夏娃塞給該隱乙個直角三角形;該隱開啟機器α,測量得斜邊長度為5;該隱告訴夏娃這個直角三角形斜邊長度為5.

4樓:Sting

最根本的不同是思維方式的不同。物件導向程式設計的思考方法是,我要做的東西包含哪些概念,我要設計哪些類來表示這些概念,這些類有哪些屬性,應該提供什麼樣的訪問介面,設計什麼樣的繼承體系等。然後用這些類像搭積木一樣把程式搭出來。

《C++沉思錄》講的明白,「所謂物件導向程式設計,就是使用繼承和多型機制來程式設計」。物件導向設計的核心,是「用類來表示概念」。

面向過程開發的思維方式是,程式=演算法+資料結構。你要思考的是程式涉及到哪些演算法,設計什麼樣的資料結構去配合這些演算法。

怎麼理解JAVA的物件導向?

hk12345 我認為物件就是一樣東西嗎,比如一塊石頭,乙個手機等等,那麼我們可以使用屬性和方法來說明這個東西的特點。比如石頭的材質,大小,堅硬程度。手機的型號,解析度,當前電量等等 AboBack 物件導向,就是來使用這個物件的屬性方法來做事情!比如你去吃飯,直接對廚師說我要吃某某炒菜就行,具體的...

物件導向程式設計的本意是什麼?

藍彼得 物件導向是抽象問題 分解問題 組織程式的一種方式。面向過程把問題抽象分解為乙個乙個的函式或者過程,然後通過呼叫這些函式來改變程式的狀態。物件導向把問題抽象分解為乙個乙個物件,然後物件之間發生關係 方法呼叫 改變物件的狀態,從而改變整個程式的狀態。本質上沒啥大的區別,物件導向又封裝了乙個層次而...

怎樣完全掌握c 的物件導向部分?

扶餘城裡小老二 好問題常見,但有深度的問題不常見。既然我來了,說明你得好好思考一下了。乙個函式可以對應乙個只有建構函式的class。引數都一樣。你試試效果是不是一樣。此時這個函式已經跟類掛靠上了。那乙個模板函式對應的就是乙個模板class建構函式。cpp最新版本設定,可以class提供部分模板,成員...