ArcGIS Engine 10 开发手册(2-3)ArcGIS Engine 中的类、接口及属性方法

本文目录
  • 正文

ArcGIS Engline 组件库的每一个组件中定义有不同的类,类下面定义了不同接口,接口中包含不同的 属性和方法。类之间有类型继承(Typelnheritance)关系,接口之间有互相调用(Querylnterface)及相互继承(Interfacelnheritance)关系。

类与接口的概念

类与对象在面向对象编程中,类和对象是两个非常重要的概念,可以这么说类就是创建对象的蓝 本,而对象是指具有属性和动作的实体,它封装了一个客观实体的属性与行为。ArcObjcets 中有三类 class, 分别是抽象类(AbstractClass)、组件类(CoClass)和普通类(Class)。抽象类的主要目的是为它的子类定 义公共接口,一个抽象类将把它的部分或全部实现延迟到子类中,因此,一个抽象类不能被实例化。一个 组件类对象可以被直接创建,普通类对象虽然不能直接创建,但它可以可以作为其它类的一个属性或者从 其它类的实例化来创建。

接口和类接口定义了一组方法和属性

在 ArcObjects 中接口名称都以”I”开始,如 IMap, Ilayer 等。类实现了接口中的方法。一个类可以有多个接口,如 FeatureLayerClass 类有 IFeatureLayer, IFeatureSelection 等不同接口,而一个接口也可被多个类所拥有,如 CadFeatureLayer 类和 FeatureLayer 类都 有 IFeatureLayer 接口。接口定义了能做什么,而定义了该怎么做(The interfacedefines what an object can do, and the class defines how it is done.79 页 Explroing ArcObjects V9.0),在 AO 开发的时候,和对象间的通信是 通过接口完成的,而不是我们在一些其他面向对象语言如(Java)中和对象的通信是通过对象完成的.

接口查询(QueryInterface)

一个类可以有多个接口,声明了接口变量并且指向一个对象的时候,这个变量只能使用该接口内的方法和属性,而不能访问其他接口中的方法和属性,如:

IMap pMap
pMap = New MapClass();
pMap.Clear();

这里会产生错误此时的 pMap 只能使用 IMap 接口中定义的方法和属性,比如获取图层的个数,添加图层等,但是不能清空视图上的内容(因为这个方法是在 IActiveView 中定义的) QueryInterface(QI)很方便的让我们在一个类的不同接口间进行切换:

IActiveView pView
pView= pMap ‘QI 

现在 mView 就可以使用 IActiveView 中定义的方法了.

类之间的接口类型的继承

类类型继承类型继承是指类之间的接口类型的继承,而不是继承其实现。继承过来的接口只是名 称相同,具体的实现则不同。比如 ShpfileWorkspaceFactry 和 AccessWorkspaceFactry 都继承 WorkspaceFactry, 而他们的打开(OpenFromFile)方法却不一样,ShpfileWorkspaceFactry 的(OpenFromFile)方法需要一个文件目录位置作为参数,而 AccessWorkspaceFactry 的(OpenFromFile)方法需要一个数据库(mdb)位置 作为参数。

接口继承

接口继承如 ImapFrame 接口和 IMapSurroundFrame 接口继承于 IFrameElement 接口,则父类接口IFrameElement 所具有的方法和属性对派生接口 ImapFrame 和 IMapSurroundFrame 都有效。

ArcGIS Engine 10 开发手册全集

ArcGIS Engine 10 开发手册全集: ArcGIS Engine 10 开发手册

如您有疑问,可在文末留言,或到QQ群提问。

本站QQ群:291616564 麻辣GIS

微信公众号:malagis,扫描右边二维码直接关注。

微信捐助麻辣GIS 支付宝捐助麻辣GIS

如果本文对您有所帮助,欢迎对我们团队进行打赏捐助,让我们在传播3S的路上可以走得更远。


作者:,GIS爱好者。
分享本文,请您带上本文链接

发表评论