ESRI ArcGISEngineプログラミングインターフェイスジャンプの意味を深く理解する
1.インターフェイスジャンプとは(QI-Querryインターフェイス)
QIは、ArcGIS Eingineの開発における重要な技術的詳細です。QuerryInterfaceのリテラル翻訳によると、QIはクエリインターフェースですが、その本質は、クラスの1つのインターフェースから別のインターフェースへの転送を指します。したがって、インターフェイスジャンプとも呼ばれます。
オブジェクト指向プログラミングを学ぶとき、クラスには多くの属性とメソッドが含まれる可能性があることがわかっています。これらの属性とメソッドはグループ化する必要があり、各チームがインターフェイスを定義できます。このように、各クラスには複数のインターフェイスを含めることができます。たとえば、Polygonクラスには、Ipolygon、Igeometry、Iareaなどの多くのインターフェイスが含まれます。開発者がポリゴンの周囲を知りたい場合、IpolygonインターフェースのLengthプロパティを使用する必要があります。エリアを知りたい場合は、IareaインターフェイスのAreaプロパティを使用する必要があります。つまり、オブジェクトを使用する過程で、未使用のインターフェース間をジャンプする必要があることが多く、これをインターフェースジャンプ(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は明らかに2つのインターフェイスなので、QIで記述する理由は次のとおりです。
pArea = IAreaとしてのpPolygon;
上記のステートメントの理由は正当です。次のステートメントを使用して、インターフェース変数を理解する必要があります。
IPolygon pPolygon;
これは、pPolygonという名前のインターフェイス変数を宣言します。インターフェイス変数は基本的にメモリアドレスを格納するために使用される変数ですが、インターフェイス変数を使用する場合はインターフェイスの仕様を満たす必要があるため、一般的なアドレス変数とは異なります。
次のステートメントを渡します。
pPolygon = new PolygonClass();
インターフェイス変数pPolygonは、PolygonClass()オブジェクトの最初のアドレスをメモリに格納します。pPolygonがPolygonオブジェクトを指していることがわかります。また、pPolygon変数を使用する場合は、IPolygonインターフェイスの仕様に準拠する必要があります。たとえば、AreaプロパティのないLengthプロパティのみで、Lengthプロパティは読み取り専用です(いわゆるインターフェイスは実際には仕様です)。
ステートメント:
pArea = IAreaとしてのpPolygon;
これは、ポリゴンの最初のアドレスをpAreaに割り当てることですが、pArea変数の使用は、IAreaインターフェースの仕様に準拠している必要があります。
したがって、いわゆるQIは、異なるインターフェース仕様に従って異なる属性とメソッドにアクセスするために、オブジェクトの最初のメモリアドレスを異なるインターフェース変数に割り当てることです。