Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]() ![]() |
付録A IDL定義 |
インタフェース宣言では、インタフェースの実体を定義します。インタフェース宣言は、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); // オペレーション宣言 }; };
目次
索引
![]() ![]() |