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

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

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

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

先從結構化編程說起

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

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

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

結構化編程的好處是:

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

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

面向對象的由來

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

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

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

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

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

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

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

不打個分嗎?

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

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

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

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

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

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

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

《算法導論(原書第2版)》 科曼(Cormen T.H.) (作者), 等 (作者, 譯者), 潘金貴 (譯者)

《算法導論(原書第2版)》一書深入淺出,全面地介紹了計算機算法。對每一個算法的分析既易于理解又十分有趣,并保持了數學嚴謹性。本書的設計目標全面,適用于多種用途。涵蓋的內容有:算法在計算中的作用,概率分析和隨機算法的介紹。本書專門討論了線性規劃,介紹了動態規劃的兩個應用,隨機化和線性規劃技術的近似算法等,還有有關遞歸求解、快速排序中用到的劃分方法與期望線性時間順序統計算法,以及對貪心算法元素的討論。本書還介紹了對強連通子圖算法正確性的證明,對哈密頓回路和子集求和問題的NP完全性的證明等內容。全書提供了900多個練習題和思考題以及敘述較為詳細的實例研究。

更多計算機寶庫...

云南快乐十分走势一定牛 北京快中彩中奖详情 评论赚钱2元一条 股票看行情软件 网络棋牌? 篮球小游戏 急速赛车计划 网络游戏真的能赚钱 南方双彩最新版下载 平特一肖 规律 公式 好彩1开奖视频