Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
目次 索引 前ページ次ページ

付録A IDL定義

A.3 インタフェース宣言

 インタフェース宣言では、インタフェースの実体を定義します。インタフェース宣言は、C++言語のクラス宣言と同様に他のインタフェース宣言を継承して、新しいインタフェース宣言を行うことができます。他のインタフェース宣言を継承すると、その継承したインタフェース宣言のオペレーション宣言や型宣言などを、あたかも自分で宣言したと同じに扱えるようになります。

 インタフェースの継承では、新しいインタフェースを宣言する際に、他のインタフェース宣言を使用して、差分だけを定義することができます。また、複数のインタフェースを継承することができます。これを多重継承と呼びます。すべてのインタフェース定義は、明示的に記述しなくてもObjectインタフェースを継承します。そのため、オブジェクト自身にインタフェース情報を問い合わせるメソッドget_interfaceDefなどのObjectインタフェースを使用できます。

 以下に、インタフェース宣言の書式を示します。

  interface インタフェース名 ;   // フォワード宣言

  interface インタフェース名 [:継承するインタフェース] {  // ヘッダ
       オペレーション宣言 ;      // 本体
       属性宣言 ;
       定数宣言 ;
       型宣言 ;
       例外宣言 ;
  };

 [ ]内は省略可能です。

 最初の書式(インタフェース名だけ)はフォワード宣言であり、インタフェースの実体を定義する前にインタフェース名だけを定義するものです。フォワード宣言により、相互参照するインタフェースを定義することが可能になります。フォワード宣言されたインタフェースは、それより後方でその実体を定義しなければなりません。同じインタフェース名を複数箇所でフォワード宣言することも可能です。
 2行目以降の書式は、インタフェースの実体を宣言するものです。"継承するインタフェース"を指定すると、他のインタフェースを継承することができます。継承するインタフェースの指定方法については、“インタフェースの継承”を参照してください。インタフェースは、1つまたは複数のオペレーション宣言、属性宣言、定数宣言、型宣言から構成され、空のインタフェース(何も宣言しない)とすることもできます。各宣言についての詳細は、以降に説明します。
 以下にインタフェース宣言の例を示します。

 この例では、インタフェースFunc2がインタフェースFunc1を継承する際の定義を示します。この場合、クライアントは、インタフェースFunc2のオブジェクトにOpenメソッドの呼び出しができます。

  module Module1 {
      typedef Object  otype;
      interface  Func1 {                             // インタフェース宣言
          exception  FuncException {                 // 例外宣言
              string  reason; 
          };
          Module1::otype  Open(in string name)       // オペレーション宣言
                  raises(FuncException); 
          readonly attribute long  data;             // 属性宣言
          typedef Object  FuncObject;                // 型宣言
      };
    
      interface  Func2 : Func1 {                     // インタフェース宣言
          Module1::otype  Reopen(in string name);    // オペレーション宣言
          oneway void Close(in Module1::otype obj);  // オペレーション宣言
      };
  };

下へA.3.1 インタフェースの継承

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005