您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 1.1 基于COM接口编程基础
河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑AO/AE编程基础(1)引言1.1组件对象模型(COM)1.2理解对象模型图(OMD)1.3Mapsandlayers1.4Dataaccessandcreation1.5Geometryandgeoprocessing1.6Workingwithsubsetsandselections河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-2引言ArcObjects与ArcEngie关系河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-3AOAE区别和联系ArcObjects(简称AO)是美国ESRI(EnvironmentalSystemsResearchInstitute)公司提供的一个GIS技术框架,它是基于微软的COM技术开发的一套COM组件对象集,这个组件集提供了大量的GIS功能,例如地图的显示、查询、专题地图生成、空间分析及输出等。基于AE中的系列组件所开发GIS应用系统,在发布时,客户电脑上不需要安装ArcGISDeskTop,只需购买单独的Runtime就可以了。相比于AO,在灵活性和费用上有优势。AE还提供了JAVAAPI,供JAVA程序员使用。目前,使用AE进行GIS应用系统开发,已成为一种流行的GIS二次开发方式。河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-41.1组件对象模型(COM)(1)概念(2)特点(3)Testinganobjectreference(4)UsingtheESRIObjectBrowserandHelp(5)例子——点类和线段类的使用河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-5(1)概念1.“软件重用”2.组件(Component)标准来实现二进制级别上的共用3.COM、JavaBean和CORBA4.微软提出的COM被认为是开发高效、交互式桌面程序和服务器/客户端程序的较好选择5.COM模型可以看作是一种客户端/服务器的关系河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-6(2)特点遵循COM标准的类的实例称为COM对象,COM对象有三个特点:抽象、继承和多态。抽象是指COM对象被很好地封装起来,程序员无法获得对象的内部实现细节。垃圾车加速刹车燃料拾起倾倒河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-7接口接口就是将类的相关属性和方法进行分类,不同的类别代表不同的接口。垃圾车加速刹车燃料拾起倾倒IGarbageIDriveRaceCarAccelerateBrakeFuel停靠站圈速度IRaceIDrive河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-8继承继承分为实现继承和接口继承两种类型。COM对象只支持接口继承垃圾车加速刹车燃料拾起倾倒IGarbageIDriveRaceCarAccelerateBrakeFuel停靠站圈速度IRaceIDrive河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-9GettingotherinterfacesQueryInterface(QI)AccessothermethodsandpropertiesRaceCarAccelerateBrakeFuelPitStopLapTimeIRaceIDrive'CreateanewRaceCarwiththeIDriveinterfaceIDrivepCar;pCar=newRaceCar();pCar.Accelerate();'SwitchinterfacesIRacepRace;pRace=(IRace)pCar;pRace.PitStop();pCar.Accelerate();'**pCarandpRacepointtothesameobject**IAreapArea;IPointpPt;pArea=(IArea)pPolygon;//QIforIAreaonpPolygonpPt=pArea.Center;河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-10IDrive燃料加速刹车多态许多不同的类可以支持相同的接口拥有相同的所有的方法和属性可以有不同的执行方式和拥有不同的属性值河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-11ArcObjects多态许多ArcGIS的类都表现出多态的特性GeneralinterfacesforallsubtypesILayer:Alllayertypes(raster,tin,feature,etc.)IGxFile:AllArcCatalogfiletypes(shapefile,map,table,etc.)IActiveView:Map(dataview)andPageLayout(layoutview)Severalothers…河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-12(3)TestinganobjectreferenceIsanobjectNothing?if(pLayer==null){MessageBox.show(“null”);return;}If(pLayerIsIFeatureLayer)MessageBox.show(“YouselectedaFeatureLayer.”);WhatTypeOfobjectisit?河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-13(4)UsingtheESRIObjectBrowserandHelpListsclasses,interfaces,properties,andmethodsArcGIS\DeveloperKit\Tools\EOBrowser.exe河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-14(5)例子查看ArcEngine中的PointClass类的成员;编写程序创建一个点,坐标为(100,200);实现坐标的平移;创建一条线段(LineClass),并赋值(100,200)和(150,150)将两者存放到一个数组中(IGeometry),实现GeometryType调用,了解多态性的概念。河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-15代码(1)//IPoint接口类型的对象pPt,并初始化IPointpPt=newPointClass();//调用IPoint接口下的PutCoords方法pPt.PutCoords(100.0,200.0);//QIITransform2DpTransform2D=(ITransform2D)pPt;//调用ITransform2D接口下的Move方法pTransform2D.Move(100,200);河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-16代码(2)IPointpPt=newPointClass();pPt.PutCoords(1000.0,200.0);//点坐标IPointpPt1=newPointClass();pPt1.PutCoords(100,100);IPointpPt2=newPointClass();pPt2.PutCoords(150,150);ILinepL=newLineClass();pL.PutCoords(pPt1,pPt2);//线段有两个点构成IGeometry[]pGeo={pPt,pL};for(inti=0;ipGeo.Length;i++)MessageBox.Show(pGeo[i].GetType().ToString());//多态河南信阳师范学院城市与环境科学学院张兴国根据网上AOVBA开发教程(esri版权所有)编辑6-17Exercise1overview有一个类FeatureLayer,该类有2个接口(1)IFeatureLayer,该接口下有Name属性.(2)IFeatureSelection,该接口下有Clear方法.试编写代码,访问Name属性和Clear方法.通过ESRIObjectBrowser或者开发Help,查阅哪些类实现了IFeatureLayer接口,体会接口的多态性.
本文标题:1.1 基于COM接口编程基础
链接地址:https://www.777doc.com/doc-3666160 .html