關於物件導向的一點想法

來源:互聯網
上載者:User
C++等語言的“物件導向”是原始碼層級的,是由編譯器為你呈現的“一片‘物件導向’的假象” ,它只限於編譯器的這一頭(輸入),編譯器的另一頭(輸出)同樣是一堆十分“physical”的二進位指令序列,和C等面向過程的語言的編譯輸出沒有本質區別。所以NewB程式員說,“我能用C寫出和C++同樣編譯結果的東東來”,NewC程式員也說,“My Code可以通過C++的類封裝檢查,但執行結果完全可以破壞對象封裝,管你是不是私人成員。。。”

  COM規範的“物件導向”是二進位層級的,介面形式的封裝介面,很好地隔離了對象的內部知識,互動完全基於對既定契約的查詢。這些優點同時也為它自己埋下了“禍根”,事實證明,COM組件的封裝太過Physical,而且它所用的用於自我描述的機理(typelib)卻不能完備地描述自己,這種描述於人於己都是那麼無力蒼白,使COM無法擺脫介面泛濫、Dll地獄等等早就存在的困擾。。。

  那麼怎麼辦,技術要進步!某位大師說過,“所有的軟體問題都可以通過引入一個中介層來解決。” 微軟的精英們在二進位系統的上面又為我們建造了一個“上層建築”的平台(CLR),把軟體組件封裝從“物理空間”架到了“邏輯空間”,基於metadata的類型描述形式和基於IL的指令描述,對象只有通過CLR的ClassLoader才能按需進入二進位指令序列的“物理世界”。由此可見,.Net Framework 的CLR提供的Assembly是一種更高層次的物件模型,它是屬於邏輯空間的並且是本地完善描述的。  絕妙的設計,沒有問題了嗎?呵呵,問題會有的,不然技術怎麼進步?

 

聯繫我們

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