1. 程式人生 > >關於面向物件的一點想法

關於面向物件的一點想法

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

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

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

相關推薦

Java 知識點整理-4.面向物件(包、許可權修飾符、內部類1~38)+ 面向物件一點補充

1、包package的概述:Ⅰ.將位元組碼(.class)進行分類存放。 Ⅱ.包其實就是資料夾。 2、包的命名:域名倒著寫。 3、定義包的格式:package 包名; 多級包用.分開即可。 4、定義包的注意事項:ⅰ.package語句必須是程式的第一條可執行的程式碼。ⅱ.pac

關於面向物件一點想法

C++等語言的“面向物件”是原始碼級別的,是由編譯器為你呈現的“一片‘面向物件’的假象” ,它只限於編譯器的這一頭(輸入),編譯器的另一頭(輸出)同樣是一堆十分“physical”的二進位制指令序列,和C等面向過程的語言的編譯輸出沒有本質區別。所以NewB程式設計師說,“我能

面向過程與面向物件一點感悟

面向過程與面向物件的本質區別 一位計算機界的大師曾說過,“我認為,面向物件的目標從來都不是複用和擴充套件,而是提供一種處理複雜問題的方法”。 面向過程講究自頂向下逐步求精。找到一個系統的入口然後順藤摸瓜,分析出每一步以及影響這一步的其他因素,我們就能夠定義這個系統。 面

對《寫給大家看的面向物件程式設計書》的一點收穫

最近讀了matt weisfeld寫的《寫個大家看的面向物件程式設計書》,這本書主要講了面向物件的一些主要的思想。側重於向讀者解釋面向物件中的一些概念和思想。 我對面向物件的一些認識:面向物件主要是來自與人類世界自己的一種思考方式,當我們考慮一個事物時,一般是將事物作為一個

關於面向物件一點牢騷

究竟什麼是面向物件?這個問題很困擾著我。上次面試專門被問了這個問題,最後說了實際分鐘又問又答的,最後自己都不知道自己在說什麼了。最近又重新思考這個問題,企圖做 一點總結。 有過這樣一句話:“面向物件就是,以類的方式組織程式碼,以物件的方式封裝資料”。以為現在的水平來說,這句話我還體會不出太多的意味

關於面向物件程式設計中很多人用get()和set()方法,而不用public的一點總結

在很多程式中,都喜歡定義一個privata變數,然後為這個私有變數加上get(),set()方法。那為什麼不直接定義一個public變數呢?這樣做到底有什麼好處和意義呢?難道真的僅僅只是為了程式碼規範?別逗了,不管你信不信,反正我是不信!帶著這個問題我在網上尋找答案,真是眾

面向物件機制一點認識

面向物件機制是一種觀察應用程式的方式.利用面向物件方法,把應用程式分成許多小塊(或物件),這些物件是相互獨立的.然後可以組合這些物件.建立應用程式.可以把它看到砌磚牆.第一步要建立或購買基本物件(各種磚塊).有了磚塊後.

關於買桃問題的一點想法

不足 比較 hang price 數學問題 數量 分析 個數 write 初學C#,這幾天初步了解了下循環問題,遇到了買桃問題這個案例:“桃子3元一個,3個桃核可以換一個桃子,擁有100元,最多可以吃多少個桃子?”; 這樣一個數學問題,想要用代碼來實現,首先分析這個問題的思

關於職業規劃的一點想法

自己的 專家 提高 方向 提高自己 保持 log 菜鳥 語言 最近在烏魯木齊出差,為項目解決幾個難纏的需求。昏天黑地的幹了幾天,有些問題仍然沒有頭緒,到了周六,心情郁悶,遂想去散散心。正巧賓館樓下有個旅行團報名,這不正是瞌睡了,別人遞給了你一個枕頭麽,哈哈哈,直接報名了天山

關於Miller-Rabbin的一點想法

nbsp sca hide ace mil cnblogs n) bin stream   在好久之後終於搞完了miller-rabbin素性測試,談談自己的理解   要判斷的數設為 a,   主要思想就是運用費馬小定理來搞,隨機幾個數x(x<=a-1),判斷x^

關於後綴數組的一點想法

none event font 越界 gif 時間 定義 src .cn   後綴數組大概就是用後綴排名來搞一些事情,因為字符串中的每一個子串都可看做某一後綴的前綴   可用倍增法求出後綴排名 一、數組意義(對於字符串 s)   sa[i]:排名為i的後綴

有關雙網卡同時上內外網的一點想法

同時 路由表 路由 del ima 記得 以管理員身份運行 清空 比較 因為工作原因,我是要同時用內外網的,以前是只有筆記本自帶網卡,要進內外網就要不停的切換,很麻煩 最近實在忍不住了,又去某寶買了一張網卡前幾天到的貨,按網上的教程寫如下路由表 route delelte

關於java中用itext導出word的一點想法

車輛 ++ 沒有 map 自己 前臺 i++ 出錯 https 這幾天在項目組只做了很少的事情,主要還是自己不認真地說.我的部分是要負責用itext導出word文檔這一塊,之前看到大佬們做出了EXCEL部分覺得很是驚奇,就像剛剛接觸HTML一樣的感覺。但是畢竟自己的任務就要

[待完善]關於辛普森公式的一點想法

16px 意思 onclick 自己 很大的 play 更多 ble turn [吐槽]   嗯一開始接觸到這個東西其實是因為某道凸包的題目好像可以用這個奇妙的方法來算   但其實了解也不是很深,只是覺得這個東西十分有意思,   所以先稍微寫一下自己的想法,了解更多之

C# ADO.NET面向對象想法

pub 修改 類型 一個 數據 邏輯思維 增加 分開 清晰 我認為的面向對象就是把各種問題拆分開來 逐一解決, 我想的是先是數據庫,到底有什麽, 然後新建一個類,類裏面先是private的私有的,但是可以有無數個可以連接private的pubilc的屬性 可以在這裏面

關於工作的一點想法

支付功能 基於 style 得出 文檔 平臺 設計 服務 關於 最近基於spring cloud在做一個支付網關的功能。 基於“兩”個服務: 格式化服務與子支付服務。 格式化服務:   接受所以平臺的請求,提供公共接口,實現在內部調用不同平臺的子服務接口。 子支付服務:  

關於電商網站購物車功能如何與登錄賬號相關聯的一點想法

客戶 實體類 數據庫 後來 購物 賬號登錄 就是 解決 過程 最近在試著做電商網站,自然也需要涉及到實現購物車的功能。然後就想到去用cookie來完成購物車的功能。 實現過程是新建一個cookie,把購物車實體類的list放進去,每次給購物車新增商品和刪除商品的時候就new

關於項目管理的一點想法

團隊 方式 目的 經歷 們的 完成 關系 時間 自己的 在項目管理中,主要還是兩個因素--人和事。 主要包含: 工作任務的安排:了解項目中的各項任務,知道什麽人能勝任什麽工作,各項任務的輕重緩急,完成各項任務所需的時間,各項任務需要跟誰配合。 進度的

C# Ioc、DI、Unity、TDD的一點想法和實踐

stc 映射 rac 下載 性能 ole HA manager 單元 面向對象設計(OOD)有助於我們開發出高性能、易擴展以及易復用的程序。其中,OOD有一個重要的思想那就是依賴倒置原則(DIP)。 依賴倒置原則(DIP):一種軟件架構設計的原則(抽象概念) 控制反轉(

最近做項目的一點想法

裁判 進行 支持 設計 warn 時鐘 周期 壓力 匯報 最近半個月,做個的項目。開始做測試,機器跑著,整個項目前後做了半年,有些小想法,分享於諸位: 1.前期的設計工作應該做到面面俱到,否則在未來的開發中,大概率將會遇到一些問題: 一,性能不滿足需求,然後為了提升