基於對象和物件導向的區別,對象物件導向區別

來源:互聯網
上載者:User

基於對象和物件導向的區別,對象物件導向區別

基本上每個程式員都聽過物件導向(Object-oriented)和基於對象(Object-based)這兩個概念。其實這兩個概念並沒有很明顯的界線,不過現在業界比較統一的認為只有完全具有封裝、繼承、多態三大特點的才能夠叫做物件導向,否則即使設計中蘊含了一些對象的概念,也頂多稱為基於對象。

基於對象是過程化語言自然演化而來,隨著ADT思想的成熟而成熟,七十年代到八十年代初曾經非常流行,但是很快被風頭更盛的物件導向給遮蓋了,最典型的代表是Ada83。一貫被人認為是過程化語言代表的C語言,在實際應用中基本上使用的是基於對象的思想。雖然默默無聞,但是基於對象思想下開發的軟體,實際上構成了我們現在的軟體工業基礎。

物件導向發源於60年代的挪威,第一個物件導向語言是Simula,思想成熟於80-90年代。其標誌就是繼承和多態。物件導向思想的主要曆史貢獻是催生了面向組件思想,簡化了日常編程。從嚴肅的軟體工程意義上來講,物件導向究竟是不是“一個曆史性的進步”,還有待曆史檢驗,但是這種思想方法現在已經成為主流,所以無論是不是進步,已經成為現實。

通常基於對象是使用對象,意味著它們有像C++的結構加函數這樣的對象,然而這隻是到達物件導向語言的一部分,停留在把函數捆綁在結構內部的語言是基於對象的。但是無法利用現有的對象模板產生新的物件類型,繼而產生新的對象,也就是說基於對象一般沒有繼承的特點。沒有了繼承的概念也就無從談論多態。現在的很多流行技術都是基於對象的,它們使用一些封裝好的對象,調用對象的方法,設定對象的屬性。但是它們無法讓程式員派生新物件類型。他們只能使用現有對象的方法和屬性。所以當你判斷一個新的技術是否是物件導向的時候,通常可以使用後兩個特性來加以判斷。例如:C++是物件導向的,而VB只是基於對象的。當然,搜尋現在國內大量的書籍與資料(包括大量教材)的作者都無法分清兩者之間的區別,把VB稱為物件導向,誤人子弟。


教 基於對象與物件導向的不同

物件導向的三大特點(封裝,繼承,多態)缺一不可。
通常“基於對象”是使用對象,但是無法利用現有的對象模板產生新的物件類型,繼而產生新的對象,也就是說“基於對象”沒有繼承的特點。而“多態”表示為父類類型的子類對象執行個體,沒有了繼承的概念也就無從談論“多態”。
現在的很多流行技術都是基於對象的,它們使用一些封裝好的對象,調用對象的方法,設定對象的屬性。但是它們無法讓程式員派生新物件類型。他們只能使用現有對象的方法和屬性。
所以當你判斷一個新的技術是否是物件導向的時候,通常可以使用後兩個特性來加以判斷。“物件導向”和“基於對象”都實現了“封裝”的概念,但是物件導向實現了“繼承和多態”,而“基於對象”沒有實現這些,的確很饒口。

簡單地說:基於對象不能繼承,更談不上多態.

另外:
VC++是物件導向的,而VB只是基於對象的!當然,現在國內大量的書籍與資料(包括大量教材)的作者都無法分清兩者之間的區別,把VB稱為物件導向,誤人子弟!
 
完全物件導向編程與基於物件導向編程有什不同?

應該是一個意思,
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.