怎樣理解或評價物件導向的程式設計技術?

時間 2021-05-08 18:39:59

1樓:神捕手

物件導向是指一種程式設計范型,同時也是一種程式開發的方法。人,車輪都可以被稱為「類」,而「物件」就是「類」的集合,是程式的基本單元,將程式和資料

封裝其中,以提高軟體的重用性、靈活性和擴充套件性。

物件導向的好處是以客觀的角度觀察問題,各個「物件」被稱為客體,任何功能的實現都有一系列的客體,解決問題的基本方式是讓這些客體之間相互驅動、相互作用,最終使每個客體按照設計者的意願改變其屬性狀態。

這裡我們看一下舊的思路,加深理解「物件導向」。舊的思路:結構化設計方法,不是將客體作為乙個整體,而是將依附於客體之上的行為抽取出來,以功能為目標來設計程式。

比如「讓車輪滾動起來」和「讓人滾動起來」這兩個功能設計思路基本一樣。不僅增加了程式設計的複雜程度,而且背離了人們觀察問題和解決問題的基本思路。另外,再仔細思考會發現,在任何乙個問題域中,客體是穩定的,而行為是不穩定的。

比如:神是乙個物件,對神祈禱是屬性,完成願望是輸出的功能。但哪天你求神保佑不掛科,但結果還是掛科了,這個時候你就會出現認知崩壞。

反思我拜的是不是乙個假「神」。結構化設計方法就是應用的是過程抽象。所謂過程抽象是將問題域中具有明確功能定義的操作抽取出來,並將其作為乙個實體看待。

這種抽象級別對於軟體系統結構的設計顯得有些武斷,並且穩定性差,導致很難準確無誤地設計出系統的每乙個操作環節。一旦某個客體屬性的表示方式發生了變化,就有可能牽扯到已有系統的很多部分。比如這個神不靈了,那我是不是要換個神呢,以前信x神要燒紙,後來信怪鴿只用大喊一聲「奧利給」就行了,這間接影響了其他產業鏈。

而資料抽象是較過程抽象更高階別的抽象方式,將描述客體的屬性和行為繫結在一起,實現統一的抽象,從而達到對現實世界客體的真正模擬。

本能察覺,物件導向是一種營銷,,,,面向過程也好,結構也好,都有很多優點,,,,,唉,又想起來卡得跟山寨似的py官網

2樓:鄧鋆

支援「UI離不了,其它應用碰不得」的說法。雖然碰不得可能有些絕對,不過從當前的常見應用來看,確實如此。

不過我不太贊成取消OO的教學。無論如何,相對於FP等模式,OO依然是最易理解和學習,而且大部分情況下掌握他也會有好處。從就業上來看,要求擁有物件導向的理解和設計思維的崗位也是大多數。

但是如果想獲得乙個高階的職位,成為乙個比較「牛」的程式設計師,僅僅掌握OO顯然是不夠的。

3樓:馮東

簡單地說,就是UI離不了,其它應用碰不得。巧合的是,大多數UI framework都是嚴格單執行緒的,比如Cocoa、Swing。Win32是one message queue per thread,其實只是一種複雜化的或者說多例項化的單執行緒模型,而且實際中很少有人真的在non-main-thread裡開闢message queue。

這也和『反並行化』相互印證了。

另外,當你試圖運用OOP的時候,就會傾向於擴大單個模組的複雜度,忽視程序分離等降低複雜度的技術。

物件導向程式設計比傳統的面向過程程式設計更有什麼好處?

Ivony 我記得OO的流行是因為GUI的流行,傳統的面向過程的語言在編寫和設計GUI應用的時候顯得非常的吃力。將GUI的介面元素抽象為控制項,再使用物件來實現之,比起傳統的面向過程能夠更好的開發和設計GUI的應用程式。物件導向也只是眾多程式設計正規化中的一種,一般認為物件導向比較適合應用於GUI開...

什麼是物件導向程式設計?它與面向過程程式設計的異同有哪些?

張昊 樓上們解釋的通俗且專業,我就說一下我的簡單理解 物件導向 物件就是物體,這種程式設計思想就是設定乙個有一定功能的物體,然後利用這個物體的功能做你想做的事情。這個物體有attributes,比如名字啊,年齡啊等等等等,有methods,比如吃喝拉撒睡等等等等,功能 methods 面向過程 你想...

如何理解 在物件導向程式設計的時候,方法或者函式的引數最好是介面或者抽象類 ?

行雲 這樣做的目的是減少函式自身模組對外部的依賴,函式的引數型別越簡單,越抽象,意味著對引數型別的依賴越小,函式內部就越不需要關注引數的型別細節。 進擊的小比克 其實他的意思是使用那個類的父類引用或者是那個類所實現或者說是繼承的介面的引用,因為這樣有利於後續程式的擴充套件,就是實現多型這種東西。比如...