物件導向和基於物件

2021-06-03 02:37:12 字數 907 閱讀 3225

物件導向大家都很熟悉,可是基於物件就不一定了。兩個聽起來好象是同一回事,而事實上它們卻千差萬別。基於物件是指:我們採用物件封裝技術,將資料和操作**在一起,但是並沒有合理地使用多型、繼承等物件導向技術進行軟體設計。其中的「沒有合理使用」這一修飾非常重要,它道出了物件導向和基於物件的本質區別。

雖然,聽起來物件導向我們很是熟悉,但就我的觀察,很多以前從事c程式開發的人,當他採用物件導向的程式語言(如c++)進行開發時,寫出來的程式卻是基於物件的。或者說他們是採用物件導向的語言編寫面向過程的程式!

要掌握物件導向技術不是一件容易的事,這要求我們對於所有的程式設計事務從「物件」的角度來考慮,是一種全新的思考問題的方法。我想錯用最近面試過的一位工程師的話來說明什麼是物件導向開發,他說「現實世界是什麼,那麼程式當中就應當是什麼」。

從我的學習經驗來看,一開始其實並不明白為什麼要用物件來封裝。記得2023年剛從c轉向c++時,只覺得c++是另一種形式的「c」,那時並沒有深刻地領悟到c++語言中所蘊涵的物件導向的強大表達能力。後來,因為工作的需要,需對來自microsoft msdn中的drawcli例程進行擴充套件,這一工作使得自己對物件導向程式設計這一技術的知識有了很好的掌握,但仍沒有達到隨心所欲地運用的境界。這好比我們學會了一套軍體拳,但卻不用會用其中的各個招式去格鬥。

學習物件導向程式設計需要一段時間通過模仿好的設計(比如前面提到的drawcli例程),並隨著模仿的深入而逐漸掌握。對物件導向程式設計的真正掌握,是從我們體會到其好處開始的。在我的成長經歷中,曾在某一專案上對乙個複雜管理問題程式設計很是苦惱,當時突然想到了從其中抽象出乙個類來做管理,那一刻所有的複雜度似乎都消失了。之前之所以複雜是因為採用面向過程的思考方式去解決問題,而當換成物件導向的方式時無形中簡化了問題。從這一經歷開始,我真正領悟到了物件導向設計的好處,這也是我從模糊的理解到真正掌握的乙個根本轉折點。

本文出自 「李雲」 部落格,請務必保留此出處 

物件導向 面向過程 基於物件

基於物件是使用物件,但是無法利用現有的物件模板產生新的物件型別,繼而產生新的物件,也就是說 基於物件 沒有繼承的特點。而 多型 表示為父類型別的子類物件例項,沒有了繼承的概念也就無從談論 多型 面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以...

物件導向和基於物件的區別

很多人沒有區分 物件導向 和 基於物件 兩個不同的概念。物件導向的三大特點 封裝,繼承,多型 卻一不可。通常 基於物件 是使用物件,但是無法利用 現有的物件模板產生新的物件型別,繼而產生新的物件,也就是說 基於物件 沒有繼承的特點。而 多型 表示為父類型別的子類物件例項,沒有了繼承的概念也 就無從談...

物件導向和基於物件的區別

以我現在的認知,只是知道的是vb是基於物件的程式語言 c 是物件導向的程式語言。那我們如何區分什麼是基於物件,什麼是物件導向?根據上述的兩種程式語言我們就可以知道 物件導向 和 基於物件 是兩個不同的概念了吧!基於物件是使用物件,意味著它們有像c 的結構加函式這樣的物件,然而這只是到達物件導向語言的...