為什么會有面向對象編程的產生?

從結構化編程說起
服務器君一共花費了158.905 ms進行了5次數據庫查詢,努力地為您提供了這個頁面。
試試閱讀模式?希望聽取您的建議

眾所周知,面向對象三大思想:封裝,繼承,多態。

但面向對象到底是怎么產生的,產生他的原因是什么呢?且聽我慢慢道來~

先從結構化編程說起

很久以前,軟件開發的世界還是一片渾渾噩噩,不管開發什么軟件都面臨著復雜性這個問題,代碼里面到處是goto語句,程序的流程隨意跳轉。眾生寫代碼時,越寫到后面越不知道自己寫的是什么。這時候出現一位巨人,它就是結構化編程

結構化編程的基本思想是:

  • 有序地控制流程,即把程序的執行順序限制為順序、分支和循環這三種;
  • 把共通的處理歸結為例程(函數)。

結構化編程的好處是:

  • 三大限制:大大降低了程序的自由度,減少了各種組合,使得程序不至于太過復雜。對于這一點,結構化編程的順序、分支和循環可以實現一切算法,雖然降低了程序的復雜性和靈活性,但是程序的實現能力并沒有降低。
  • 例程(函數):我們只需要知道過程(函數)的名字,而不需要知道過程的內部細節,即“黑盒化”。?

雖然結構化解決了程序控制流的復雜問題,但程序里面不僅包括控制結構,還包括要處理的數據。隨著處理數據的增加,程序的復雜性也會上升。這時候,面向對象編程來了!

面向對象的由來

“分別管理程序處理內容和處理數據對象所帶來的復雜性”問題是,為了得到正確的結果,必須保持處理和數據的一致性,這在結構化編程中是非常困難的,解決這一問題的方案就是數據抽象技術。?

數據抽象是數據和處理方法的結合。這便是最初“對象”一詞的得來。面向對象編程也因此得名。

然后,從抽象原則來說,多個相同事物出現時,應該組合在一起,即DRY原則(Don't Repeat Yourself),便又引出了類這一概念。

根據數據類型來進行合適的處理(調用合適的方法),本來就應該是編程語言這種工具應該完成的事。這便是多態的引出了。

而對于繼承,大部分的觀點是“繼承是隨著程序的結構化和抽象化自然進化而來的一種方式”。結構化和抽象化,意味著把共通部分提取出來生成父類的自底向上的方法。(如果繼承是這樣誕生的話,那么最初,有多個父類的多重繼承就會成為主流,而實際上最初引入繼承的Simula語言只提供單一繼承。松本行弘認為繼承的原本目的實際是逐步細化)?

這就是面向對象編程的由來。

本文地址:http://www.snpmgr.live/librarys/veda/detail/2455,歡迎訪問原出處。

不打個分嗎?

轉載隨意,但請帶上本文地址:

http://www.snpmgr.live/librarys/veda/detail/2455

如果你認為這篇文章值得更多人閱讀,歡迎使用下面的分享功能。
小提示:您可以按快捷鍵 Ctrl + D,或點此 加入收藏

大家都在看

閱讀一百本計算機著作吧,少年

很多人覺得自己技術進步很慢,學習效率低,我覺得一個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6米吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞并他的知識結構體系的話,讀到他言語中的一個詞我們就已經知道他要表達什么,我們可以讓他坐“上位”畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

《Python在Unix和Linux系統管理中的應用》 Noab Gift (作者), Jeremy M.Jones (作者)

《Python在Unix和Linux系統管理中的應用(影印版)》作者們還構建了一個可以免費下載的Ubuntu虛擬機。該虛擬機包含了這《Python在Unix和Linux系統管理中的應用(影印版)》的源代碼,還可以用來運行書中的實例,包括SNMP、IPython、SQLAlchemy和許多其他工具。《Python在Unix和Linux系統管理中的應用》展示了Python語言如何提供一種更加高效的方式來處理Unix和Linux服務器管理工作中的各種任務。《Python在Unix和Linux系統管理中的應用(影印版)》的每一章都會提出一個特定的管理問題,例如并發或數據備份,然后通過實際的例子提供基于Python的解決方案。

更多計算機寶庫...

燃烧吧足球登陆