【設計模式之美4】當我們談論面向對象時都談些什麼

什麼是面向對象編程和麪向對象編程語言

面向對象編程的縮寫是OOP即Object Oriented Programming。對應的面向對象編程語言的縮寫是OOPL 即Object Oriented Programming Language.
面向對象有兩個非常重要,非常基礎的概念,那就是類(class)和對象(object)。面向對象編程的概念第一次被使用是在SmallTalk這種編程語言中,SmallTalk也被認爲是第一個真正意義上的面向對象編程語言。
如果不按照嚴格的定義來說,目前絕大多數的編程語言都是面向對象的編程語,如java/c++/go/python/c#/等等。

那到底什麼是面向對象編程?什麼語言纔算是真正的面向對象編程語言?

  • 面向對象編程是一種編程範式或者編程風格。它以類或者對象爲組織代碼的基本單元,並將封裝/繼承/多態/抽象四個特性作爲代碼設計和實現的基石。
  • 面向對象編程語言是支持類或對象的語法機制,並由現成的語法機制,能方便的實現面向對象編程的四大特性(封裝/繼承/抽象/多態)的編程語言

理解面向對象編程和麪向對象編程語言最重要的一點就是理解面現象對象編程的四大特性:封裝/抽象/繼承/多態。也有另外一種說法面向對象只有三大特性:封裝/繼承/多態。而有時候四大特性又被稱爲四大基石/四大概念/四大基礎/四大支柱等。

如何判定某種編程語言是否是面向對象編程語言

前面提到,如果不按照嚴格的定義,大多數編程語言可以稱爲面向對象的編程語言。如果按照嚴格的面向對象編程語言的定義,有些語言是並不是嚴格意義上的面向對象編程語言,例如javascript,它不支持繼承和封裝的特性。但是從某種意義上看它又可以被稱爲是面向對象的編程語言。
個人認爲,只要某種編程語言支持類或者對象的語法概念,並且以此作爲住組織代碼的基本單元,那就可hi被粗略的認爲是面向對象編程語言。至於是否由現成的機制,是否完全 的支持了面向對象的四大特性,是否對四大特性有所取捨可以不作爲判定的標準。

什麼是面向對象分析和麪向對象設計

面向對象分析的英文縮寫是OOA,Object Oriented Analysis。面向對象設計的英文縮寫是OOD,即Object Oriented Design。OOA,OOD和OOP連起來整好是面向對象分析,設計和編程,也就是軟件開發要經歷的三個階段。
分析和設計這兩個階段最終的產出是類的設計,包括程序被分解爲哪些類,每個類由哪些屬性和方法,類與類之間如何交互等。他們比其他的分析和設計更加具體,更加落地,更加貼近編碼,更能順利的過度到面向對象編程環節。面向對象分析就是要搞清楚做什麼,面向對象設計就是要搞清楚怎麼做,面向對象編程就是將分析和設計的結果翻譯成代碼的過程。

總結

  1. 什麼是面向對象編程?
    面向對象編程是一種編程範式或者編程風格。它以類或者對象爲組織代碼的基本單元,並將封裝/繼承/多態/抽象四個特性作爲代碼設計和實現的基石。
  2. 什麼是面向對象編程語言
    面向對象編程語言是支持類或對象的語法機制,並由現成的語法機制,能方便的實現面向對象編程的四大特性(封裝/繼承/抽象/多態)的編程語言。
  3. 如何判定某一個編程語言是否是面向對象的編程語言
    如果不按照嚴格的定義,大多數編程語言可以稱爲面向對象的編程語言。如果按照嚴格的面向對象編程語言的定義,有些語言是並不是嚴格意義上的面向對象編程語言。
  4. 面向對象編程和麪向對象編程語言有何關係
    面向對象編程一般使用面向對象編程語言來完成,但是不使用面向對象編程語言照樣可以完成面向對象編程,反過來,即使我們使用面向對象編程語言,寫出來的代碼也不一定是面向對象編程風格的,也由可能是面向過程編程風格的。
  5. 什麼是面向對象分析和麪向對象設計
    面向對象分析就是要搞清楚做什麼,面向對象設計就是要搞清楚怎麼做。兩個階段的產出包括類的設計,包括程序被分解爲哪些類,每個類由哪些屬性和方法,類與類之間如何交互等。
發佈了93 篇原創文章 · 獲贊 93 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章