zoukankan      html  css  js  c++  java
  • 深刻理解ESRI ArcGISEngine编程接口跳转的含义

    深刻理解ESRI ArcGISEngine编程接口跳转的含义

       

    1、何为接口跳转(QI-Querry Interface)

    QI是ArcGIS Eingine 开发中的一个重要技术细节,按Querry Interface直译,即为查询接口,但其实质是指从类的一个接口转到另外一个接口。因此,也称为接口跳转。

    在学习面向对象编程时,已经知道类可能包含很多属性和方法,需要对这些属性和方法进行归队,每队可定义一个接口。这样每个类就可能包含多个接口,例如Polygon类就包含了Ipolygon、Igeometry和Iarea等许多接口。当开发人员想知道某个多边形的周长时,就必须使用Ipolygon接口下的Length属性。若要想知道面积,则需使用Iarea接口下的Area属性。即在对象(Object)的使用过程中,经常需要在不用接口之间跳来跳去,这就是所谓的接口跳转(QI)。

    2、如何QI

    下面通过一个具体实例进行说明:

    IPolygon pPolygon;

    pPolygon = new PolygonClass();

    double curveLength;

    curveLength = pPolygon.Length;

    IArea pArea;

    pArea = pPolygon as IArea;//这里发生了QI

    double shapeArea;

    shapeArea = pArea.Area;

    3、QI的实质

    IPolygon和Iarea明明是两个接口,为何在QI时写:

    pArea=pPolygon as IArea;

    上述语句之所以合法,需要理解接口变量,通过语句:

    IPolygon pPolygon;

    就申明了一个名为pPolygon的接口变量,接口变量实质就是用于存放某个内存地址的变量,但又和一般的地址变量不同,因为在使用接口变量时必须符合该接口的规范。

    通过语句:

    pPolygon=new PolygonClass();

    接口变量pPolygon就存放了PolygonClass()对象在内存中的首地址,可以理解为pPolygon指向了某Polygon对象。并且在使用pPolygon变量时,必须符合IPolygon接口的规范,比如只有Length属性,而没有Area属性,且Length属性为只读(所谓接口,其实就是一种规范而已)。

    语句:

    pArea = pPolygon as IArea;

    就是把某Polygon的首地址赋给pArea,但pArea变量的使用由必须符合IArea接口的规范。

    因此所谓QI就是把某对象的内存首地址赋给不同的接口变量,以便根据不同的接口规范去访问不同的属性和方法。

  • 相关阅读:
    python分析文本文件/json
    python中文件操作
    python异常处理
    socket网络模块
    层模型--固定定位
    层模型--相对定位
    层模型--绝对定位
    什么是层模型?
    浮动模型
    流动模型/a标签换行问题
  • 原文地址:https://www.cnblogs.com/aipingniu/p/6014814.html
Copyright © 2011-2022 走看看