『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

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

ArcGIS Engine 10 开发手册(2-3)ArcGIS Engine 中的类、接口及属性方法
ArcGIS Engline 组件库的每一个组件中定义有不同的类,类下面定义了不同接口,接口中包含不同的 属性和方法。

    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 都有效。

      京ICP备2025132830号-1 京公网安备 号