從面向過程到物件導向,面向過程物件導向

來源:互聯網
上載者:User

從面向過程到物件導向,面向過程物件導向

從 IBM 公司的約翰·巴庫斯在 1957 年開發出世界上第一個進階程式設計語言 Fortran 至今,進階程式設計語言的發展已經經曆了整整半個世紀。在這期間,程式設計語言主要經曆了從面向過程(如 C 和 Pascal 語言)到物件導向(如:C++、Java、Objective-C),再到面向組件編程(如 .NET 平台下的 C# 語言),以及正在快速發展的面向服務架構技術(如 SOA 和 WebService)。


約翰•巴庫斯

面向過程編程

結構化編程思想的核心:功能分解(自頂向下,逐層細化)。


結構化編程思想主要是將一個大的問題劃分為幾個小的問題,再將幾個小的問題劃分為更小的問題,我們解決大問題非常困難,但是解決劃分後的最小的問題卻比較容易。


面向過程編程把編程任務劃分成一個一個的步驟,然後按照步驟分別去執行。其中每完成一個步驟就像是完成一個任務中的單個過程一樣。


尼古拉斯•沃思(Niklaus Wirth):結構化編程思想的創始人。因發明了 Euler、Alogo-W、Modula 和 Pascal 等一系列優秀的程式設計語言並提出了結構化編程思想而在 1984 年獲得了圖靈獎。


尼古拉斯•沃思


尼古拉斯•沃思教授在編程界提出了一個著名的公式:

程式 = 資料結構 + 演算法


在面向過程編程或結構化程式設計語言當中,進階程式設計語言種類非常繁多,很多剛接觸編程的人不知道應學習哪一門語言。其實語言不能用好壞來區分,任何一門程式設計語言只要它存生,就有它自己的特色和用途。在面向過程編程領域最流行的兩種語言應該是 C 和 Pascal 語言,特別是 C 語言。C 語言的文法曾影響了其後所出現的所有程式設計語言(如 Javascript、Java、C# 等)。


面向過程編程最重要的原則:高內聚,低耦合

內聚是指模組內部各成員之間關聯的緊密程度。

耦合是指模組與模組之間關聯的緊密程度。


不管是面向過程還是物件導向,我們都強調模組的獨立性。只有模組獨立,才能實現重用。也只有實現弱耦合,模組與模組之間才不會產生太多的關聯關係。

面向過程程式設計語言存在的主要缺點是不符合人的思維習慣,而是要用電腦的思維方式去處理問題,而且面向過程程式設計語言重用性低,維護困難,無法編寫大型的應用程式。


物件導向編程

物件導向編程(Object-Oriented Programming)簡稱 OOP 技術,是開發電腦應用程式的一種新方法、新思想。過去的面向過程編程常常會導致所有的代碼都包含在幾個模組中,使程式難以閱讀和維護。在做一些修改時常常牽一動百,使以後的開發和維護難以為繼。而使用 OOP 技術,常常要使用許多代碼模組,每個模組都只提供特定的功能,它們是彼此獨立的,這樣就增大了代碼重用的幾率,更加有利於軟體的開發、維護和升級。 


在物件導向中,演算法與資料結構被看做是一個整體,稱作對象,現實世界中任何類的對象都具有一定的屬性和操作,也總能用資料結構與演算法兩者合一地來描述,所以可以用下面的等式來定義對象和程式: 

對象=(演算法+資料結構),程式=(對象+對象+……)。 

從上面的等式可以看出,程式就是許多個物件在電腦中相繼表現自己,而對象則是一個個程式實體。 


物件導向編程思想的核心:應對變化,提高複用。


物件導向編程思想主要是複用性和靈活性(彈性)。複用性是物件導向編程的一個主要機制。靈活性主要是應對變化的特性,因為客戶的需求是不斷改變的,怎樣適應客戶需求的變化,這是軟體設計靈活性或者說是彈性的問題。


阿倫•凱(Alan Kay):物件導向編程思想的創始人。2003 年因在物件導向編程上所做的巨大貢獻而獲得圖靈獎。


阿倫•凱


阿倫•凱:麻省理工學院的院長。阿倫•凱是 Smalltalk 物件導向程式設計語言的發明人之一,也是物件導向編程思想的創始人之一,同時,他還是膝上型電腦最早的構想者和現代 Windows GUI 的建築師。最早提出 PC 概念和互連網的也是阿倫•凱,所以人們都尊稱他為“預言大師”。他是當今 IT 界屈指可數的技術天才級人物。


面向過程與物件導向編程的聯絡

面向過程其實是最為實際的一種思考方式,就算是物件導向的方法也是含有面向過程的思想。可以說面向過程是一種基礎的方法,它考慮的是實際地實現。一般的面向過程是從上往下步步求精,所以面向過程最重要的是模組化的思想方法。對比面向過程,物件導向的方法主要是把事物給對象化,對象包括屬性與行為。當程式規模不是很大時,面向過程的方法還會體現出一種優勢,因為程式的流程很清楚,按著模組與函數的方法可以很好的組織。


比如拿學生早上起來的事情來說說這種面向過程吧,粗略的可以將過程擬為:

(1)起床

(2)穿衣

(3)洗臉刷牙

(4)去學校


而這 4 步就是一步一步地完成,它的順序很重要,你只須一個一個地實現就行了。而如果是用物件導向的方法的話,可能能就只抽象出一個學生的類,它包括這四個方法,但是具體的順序就不能體現出來。


參考資料:

百度百科

豆丁


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.