版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、C類的動態(tài)組件化技術類的動態(tài)組件化技術0640303401蔣浩平關鍵詞關鍵詞COM組件接口生命周期C類ATL組件類C基類ATL模板基類繼承摘要摘要在組件化編程的時代,如何復用歷史累積的大量沒有組件特性的C類?本文從工程的角度對這一問題進行探討,利用現(xiàn)有組件技術,提出了一套將C類平滑過渡到COM組件的完整解決方案。1.問題的提出問題的提出自從Microsoft公布了COM(ComponentObjectModel,組件對象模型,簡稱COM
2、)技術以后,Windows平臺上的開發(fā)模式發(fā)生了巨大的變化,以COM為基礎的一系列組件技術將Windows編程帶入了組件化時代,傳統(tǒng)的面向對象的軟件開發(fā)方法已經(jīng)逐漸被面向組件的方法所取代。COM標準建立在二進制可執(zhí)行代碼級的基礎上,不論何種工具、語言開發(fā)的組件,只要符合COM規(guī)范,就可復用于VC、VB、Delphi、BC等各種開發(fā)環(huán)境中。COM的語言無關性將軟件復用的層次從源代碼級推進到了二進制級,復用更方便,也更安全。然而,COM技術
3、帶來全新的軟件設計和開發(fā)模式的同時,也帶來了新的問題。許多軟件公司在開發(fā)自己的軟件產(chǎn)品過程中,都累積了大量C類,這些代碼設計精良,功能完備,以面向對象的標準來檢驗無可挑剔。然而,這些代碼不支持COM,將無法在COM時代繼續(xù)被復用。如果它們在軟件組件化的趨勢中被淘汰,那對軟件公司和開發(fā)人員來說都是極大的損失。COM專家DonBox曾說過,“COMisasuperC”。這給了我們一個啟示,是否可以實現(xiàn)一種技術,能夠動態(tài)的為普通C類加上一層C
4、OM的封裝呢?這樣,既可以保持這些代碼自身的完整和特性,使它們能繼續(xù)應用于原來的系統(tǒng),也可以在需要作為組件使用的時候,把它們動態(tài)轉變成組件,復用于新系統(tǒng)。一個自然而然的想法是,為每一個C類開發(fā)一個只暴露一個接口的COM組件,將原C類的每個public方法都對應于該接口的一個方法,接口方法的實現(xiàn)可以簡單的調(diào)用相對應的C類方法即可。這樣,程序邏輯由原有的C類控制,但COM層的封裝則由組件提供?;舅悸啡缦聢D所示:指向調(diào)用調(diào)用暴露接口ATL組
5、件類(CATL)接口(IItf)Method1Method2CImplementm_pCPPObjLink2CPPObj(CImplementpObj)應用C類(CImplement)public:Method1public:Method22.2.集合型集合型C類的組件化類的組件化集合型C類的情況有所不同。集合型C類以數(shù)組(array)、列表(list)、映射表(map)的形式管理其它C對象。集合對象和它管理的元素對象都被包裝成組件后,
6、集合型ATL對象可能調(diào)用一個“Destroy”方法,期望刪除某一個元素ATL對象;這一操作的實質卻是,集合型C對象的“Destroy”方法被調(diào)用,將元素C對象刪除了,而元素ATL對象卻不知道。這一操作的結果導致了元素的ATL對象存在,而其綁定的C對象卻被刪除的情況,兩者的生命周期出現(xiàn)了不一致。為了解決這個問題,我們需要在C對象被刪除時,能將ATL對象同時刪除;而在ATL對象的引用計數(shù)為0需要刪除自身時,也能把C對象刪除??尚械慕鉀Q方案是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++ bitset類的使用及簡介
- c++課程設計——矩陣類
- c++動態(tài)優(yōu)先級調(diào)度算法
- c++類對象的復制-拷貝構造函數(shù)
- c++程序動態(tài)切片系統(tǒng)的研究與實現(xiàn)
- C++程序動態(tài)切片系統(tǒng)的研究與實現(xiàn).pdf
- c++課程設計——日期類設計報告
- 實例解析c++、cli的串行化
- c++主要的技術領域應用
- c++課程設計---棧類的設計與使用
- 未來網(wǎng)絡組件行為的動態(tài)感知與組件聚類機制研究.pdf
- 基于SoPC系統(tǒng)的C++類模塊硬件實現(xiàn).pdf
- c++課程設計---字符串類的設計
- 《c++程序設計課程設計——復數(shù)類》
- c++論文
- c++講解
- c++字典
- c++建議
- 指針(pointer)——c c++的精髓
- c++(20122013c)
評論
0/150
提交評論