AE开发_01_COM组件与接口.pptxVIP

  • 34
  • 0
  • 约2.96千字
  • 约 22页
  • 2016-11-28 发布于重庆
  • 举报
AE开发_01_COM组件与接口

AE开发COM组件与接口小节内容COM组件对象模型简介如何使用COM类接口Interfaces多态Polymorphism接口查询QueryInterface测试一个对象的引用的常用方法Is it nothing?What type of object is it?COM简介COM是创建类的一个标准COM类可以在不同的工程中重用不依赖于具体的开发语言所有的 ArcObjects 都是 COM 类ArcObjects基于COM技术构建对象连接与嵌入技术 (OLE)OLE DB技术ActiveX 技术是 COM 技术的一种封装DCOM 和 COM+垃圾车RaceCarIDrive燃料IDriveFuel加速Accelerate刹车BrakeIGarbage倾倒IRace圈速度拾起停靠站COM 类拥有接口对象拥有一个或多个接口 接口是定义了一组方法和属性的逻辑关系与对象的通信是通过接口来进行的 VehicleClass燃料IDrive加速刹车通信契约——接口接口的秘密接口可以被看做一种定义了必要的方法和属性的类型。作为类型而存在,是类型(Class)一般行为的定义和契约。启动接口的作用定义多个类型都需要的公共方法和属性。作为一种不可实例化的类型存在。COM接口 在讨论COM接口时,COM规范(微软,1995)着重强调以下四点: 接口不是类。接口不能实例化自身,因为其上没有实现。 接口不是对象。接口是一个相关功能组,是客户和对象之间通信的二进制标准。接口具有很强的类型性。每个接口都有自己的接口标识符,因此消除了具有人们易读相同名字接口间可能的冲突。 接口是不变的。接口从来没有版本。一旦接口被定义和公布就不能改变。 GarbageTruckFuelIDriveAccelerateBrakeIGarbageDumpPickUp使用 ArcObjects COM 类使用一个接口指向一个COM类some interface variable = new coClass接口集合了属性和方法IDrive pGarbage = new GarbageTruck();pGarbage.Fuel = Full“;pGarbage.Accelerate();IRadioITapeICD更多的接口例子 …一个组合音响的例子一个对象可以播放收音机、磁带、CD必须使用适当的接口如果选择了播放磁带的接口,则不能收听收音机ITape pBBox = new BoomBox();pBBox.FM = true;//error多态许多不同的类可以支持相同的接口拥有相同的所有的方法和属性可以有不同的执行方式和拥有不同的属性值IDrive 燃料 加速 刹车多态ArcObjects 多态许多ArcGIS的类都表现出多态的特性所有的子类都是集成了接口ILayer: All layer types (raster, tin, feature, etc.)IGxFile: All ArcCatalog file types (shapefile, map, table, etc.)IActiveView: Map (data view) and PageLayout (layout view)Several others …RaceCarFuelIDriveAccelerateBrakeIRaceLapTimePitStop使用接口的属性和方法定义一个指向接口的遍历实例化一个对象 调用方法和设置属性只能使用定义的接口的属性和方法//Create a new RaceCar with IDrive IDrive pCar = new RaceCar(); pCar.Accelerate(); pCar.Fuel = Full“; pCar.PitStop();//可以吗?取得其他的接口接口查询 (QI) 访问其它接口的属性和方法//Create a new RaceCar with the IDrive interfaceIDrive pCar = new RaceCar();pCar.Accelerate();//Switch interfacesIRace pRace = pCar as IRace;pRace.PitStop();pCar.Accelerate();//pCar 和pRace 指向相同的对象**RaceCarFuelIDriveQ IAccelerateBrakeIRaceLapTimePitStop使用类库命名空间许多类库中有相同的类名和接口名可以明白地引用对象库在EsriCore库中创建一个新的点和线对象ESRI.ArcGIS.esriCore.Ipoint pPoint = new Point(); ESRI.ArcGIS.esriC

文档评论(0)

1亿VIP精品文档

相关文档