AE開(kāi)發(fā)_01_COM組件與接口_第1頁(yè)
AE開(kāi)發(fā)_01_COM組件與接口_第2頁(yè)
AE開(kāi)發(fā)_01_COM組件與接口_第3頁(yè)
AE開(kāi)發(fā)_01_COM組件與接口_第4頁(yè)
AE開(kāi)發(fā)_01_COM組件與接口_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、AE開(kāi)發(fā)COM組件與接口小節(jié)內(nèi)容n COM組件對(duì)象模型簡(jiǎn)介n 如何使用COM類n接口Interfacesn多態(tài)Polymorphismn接口查詢QueryInterfacen 測(cè)試一個(gè)對(duì)象的引用的常用方法nIs it nothing?nWhat type of object is it?COM簡(jiǎn)介n COM是創(chuàng)建類的一個(gè)標(biāo)準(zhǔn)n COM類可以在不同的工程中重用n不依賴于具體的開(kāi)發(fā)語(yǔ)言n 所有的 ArcObjects 都是 COM 類n ArcObjects基于COM技術(shù)構(gòu)建n對(duì)象連接與嵌入技術(shù) (OLE)nOLE DB技術(shù)nActiveX 技術(shù)是 COM 技術(shù)的一種封裝nDCOM 和 COM+C

2、OM 類擁有接口n 對(duì)象擁有一個(gè)或多個(gè)接口 n 接口是定義了一組方法和屬性的邏輯關(guān)系n 與對(duì)象的通信是通過(guò)接口來(lái)進(jìn)行的 RaceCarRaceCarAccelerateAccelerateBrakeBrakeFuelFuel??空就?空救λ俣热λ俣菼RaceIRaceIDriveIDrive垃圾車?yán)嚰铀偌铀賱x車剎車燃料燃料拾起拾起傾倒傾倒IGarbageIGarbageIDriveIDrive通信契約接口n 接口的秘密n接口可以被看做一種定義了必要的方法和屬性的類型。作為類型而存在,是類型(Class)一般行為的定義和契約。VehicleClassVehicleClass加速加速剎車剎車燃

3、料燃料IDriveIDrive啟動(dòng)啟動(dòng)n 接口的作用n定義多個(gè)類型都需要的公共方法和屬性。n作為一種不可實(shí)例化的類型存在。 在討論COM接口時(shí),COM規(guī)范(微軟,1995)著重強(qiáng)調(diào)以下四點(diǎn): n 接口不是類。接口不能實(shí)例化自身,因?yàn)槠渖蠜](méi)有實(shí)現(xiàn)。 n 接口不是對(duì)象。接口是一個(gè)相關(guān)功能組,是客戶和對(duì)象之間通信的二進(jìn)制標(biāo)準(zhǔn)。n 接口具有很強(qiáng)的類型性。每個(gè)接口都有自己的接口標(biāo)識(shí)符,因此消除了具有人們易讀相同名字接口間可能的沖突。 n 接口是不變的。接口從來(lái)沒(méi)有版本。一旦接口被定義和公布就不能改變。 COM接口n 使用一個(gè)接口指向一個(gè)COM類n = new n接口集合了屬性和方法IDrive pGar

4、bage = new GarbageTruck();pGarbage.Fuel = Full“;pGarbage.Accelerate();使用 ArcObjects COM 類GarbageTruckAccelerateBrakeFuelPickUpDumpIGarbageIDrive更多的接口例子 n 一個(gè)組合音響的例子n一個(gè)對(duì)象可以播放收音機(jī)、磁帶、CDn必須使用適當(dāng)?shù)慕涌趎如果選擇了播放磁帶的接口,則不能收聽(tīng)收音機(jī)IRadioITapeICDITape pBBox = new BoomBox();pBBox.FM = true;/errorIDrive燃料燃料加速加速剎車剎車多態(tài)n 許

5、多不同的類可以支持相同的接口n擁有相同的所有的方法和屬性n可以有不同的執(zhí)行方式和擁有不同的屬性值多態(tài)ArcObjects 多態(tài)n 許多ArcGIS的類都表現(xiàn)出多態(tài)的特性n 所有的子類都是集成了接口nILayer: All layer types (raster, tin, feature, etc.)nIGxFile: All ArcCatalog file types (shapefile, map, table, etc.)nIActiveView: Map (data view) and PageLayout (layout view)nSeveral others 使用接口的屬性和方法

6、n 定義一個(gè)指向接口的遍歷n 實(shí)例化一個(gè)對(duì)象 n 調(diào)用方法和設(shè)置屬性n 只能使用定義的接口的屬性和方法/Create a new RaceCar with IDrive IDrive pCar = new RaceCar(); pCar.Accelerate(); pCar.Fuel = Full“; pCar.PitStop();/可以嗎?可以嗎?RaceCarAccelerateBrakeFuelPitStopLapTimeIRaceIDrive/Create a new RaceCar with the IDrive interfaceIDrive pCar = new RaceCar(

7、);pCar.Accelerate();/Switch interfacesIRace pRace = pCar as IRace;pRace.PitStop();pCar.Accelerate();/pCar 和和pRace 指向相同的對(duì)象指向相同的對(duì)象*取得其他的接口n 接口查詢 (QI) n 訪問(wèn)其它接口的屬性和方法Q IRaceCarAccelerateBrakeFuelPitStopLapTimeIRaceIDrive使用類庫(kù)命名空間n 許多類庫(kù)中有相同的類名和接口名n可以明白地引用對(duì)象庫(kù)在EsriCore庫(kù)中創(chuàng)建一個(gè)新的點(diǎn)和線對(duì)象ESRI.ArcGIS.esriCore.Ipoin

8、t pPoint = new Point(); ESRI.ArcGIS.esriCore.Iline pLine = new Line();使用 ESRI Object 瀏覽器n 列表類、接口、屬性和方法n 位置:ArcGISDeveloperKittoolsEOBrowser.exe is判斷 檢查對(duì)象是否與給定類型兼容。 如果所提供的表達(dá)式非空,并且所提供的對(duì)象可以強(qiáng)制轉(zhuǎn)換為所提供的類型而不會(huì)導(dǎo)致引發(fā)異常,則 is 表達(dá)式的計(jì)算結(jié)果將是 true。 否則為false。if (layer is IFeatureLayer)as轉(zhuǎn)換 as 運(yùn)算符用于在兼容的引用類型之間執(zhí)行轉(zhuǎn)換。 如果無(wú)法進(jìn)行

9、轉(zhuǎn)換,則 as 返回 null 而非引發(fā)異常。expression as type等效于:expression is type ? (type)expression : (type)nullIFeatureLayer ftrLayer = layer as IFeatureLayer;”non-creatable”類對(duì)象的創(chuàng)建 non-creatable類不能直接采用new創(chuàng)建對(duì)象實(shí)例。 必須通過(guò)類提供的創(chuàng)建函數(shù)或者其他類的創(chuàng)建方法來(lái)創(chuàng)建。 比如:FeatureClass類是non-creatable類,通常通過(guò)FeatureWorkspace來(lái)創(chuàng)建。FeatureClass對(duì)象創(chuàng)建IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass();IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspaceFactory.OpenFromFile(dataPath, 0);IFeatureClass

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論