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就是把某对象的内存首地址赋给不同的接口变量,以便根据不同的接口规范去访问不同的属性和方法。

  • 相关阅读:
    168. Excel Sheet Column Title
    171. Excel Sheet Column Number
    264. Ugly Number II java solutions
    152. Maximum Product Subarray java solutions
    309. Best Time to Buy and Sell Stock with Cooldown java solutions
    120. Triangle java solutions
    300. Longest Increasing Subsequence java solutions
    63. Unique Paths II java solutions
    221. Maximal Square java solutions
    279. Perfect Squares java solutions
  • 原文地址:https://www.cnblogs.com/aipingniu/p/6014814.html
Copyright © 2011-2022 走看看