冒號課堂節選:對象範式

對象範式

OOP 是一種計算機編程模式,它以對象作爲問題空間的基本元素,利用對象和對象間的相互作用來設計程序。所謂對象,是實際問題中實體的抽象,具有一定的屬性和功能。 OOP 的三個基本特性是:封裝性、繼承性和多態性。

OOP 雖然是在命令式的基礎上發展起來的,但其基本思想可泛化爲:以數據爲中心組織邏輯,將系統視爲相互作用的對象集合,並用繼承與多態來增強重用性。 這種思想也能應用到函數式和邏輯式中,只不過對象的方法從命令式中的過程分別換成函數式中的函數和邏輯式中的斷言罷了。大致說來,命令式、函數式和邏輯式互相平行,而 OOP 與它們正交。

 

過程式編程與 OOP 在設計理念上有什麼區別?

過程式編程理念是重在過程,自頂向下,逐步求精。 OOP 則正相反,重在數據,自底向上,逐步實現。

如果把整個流程看作一顆倒長的大樹,過程式編程自樹根向下,逐漸分支,直到每片樹葉,類似數學證明中的分析法,即執果索因的逆推法; OOP 則從每片樹葉開始,逐漸合併,直到樹根,類似數學證明中的綜合法,即執因索果的正推法。

倘若把樹根看成主函數,離樹根越近,離用戶需求也越近。如果用過程式編程,由於是逆推法,樹幹改變容易導致樹枝相應改變,因此一旦用戶需求發生變化,可能會從樹根波及到樹枝甚至樹葉,維護起來殊爲不易。相反 OOP 從樹葉開始設計,離用戶需求較遠,抽象程度較高,受波及的程度較小,因此更易維護和重用。

“OOP 以對象爲基本模塊單位,而對象是現實中具體事物和抽象概念的模擬,這使得編程設計更自然更人性化。

OOP 流行的主因:更接近人類的認知模式;表現是其接口簡潔易記;更具易用性 ( 更簡潔的接口 ( 封裝數據,自帶狀態 ) ,更高的抽象層次,更高層次的重用 )

 

新視點:過程式編程的模塊以函數爲單位, OOP 的模塊以對象爲單位,二者的區別是:函數是被動的實體,對象是主動的實體。過程式程序的世界是君主制的,主函數是國王,其他函數是臣民,等級分明,所有臣民在聽命於上級的同時也對下級發號施令,最終爲國王服務; OO 程序的世界是民主制的,所有對象都是獨立而平等的公民,有權力保護自己的財產和隱私並向他人尋求服務,同時有義務爲他人提供承諾的服務,公民之間通過信息交流來協作完成各種任務。

 

發佈了74 篇原創文章 · 獲贊 4 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章