13.1.26.1 概要
オブジェクト、より具体的にはオブジェクトがサポートするインタフェース・タイプはIDLインタフェースで定義され、任意の実装を可能にします。分散オブジェクト・システムでは、実装上の制約がほとんどないので、大きな値が入ります。ただし、リファレンスよりも値でオブジェクトを渡すことが可能な方が望ましい場合が多くあります。これは、オブジェクトの主要な「目的」がデータをカプセル化する場合や、アプリケーションでオブジェクトの「コピー」を明示的に作成するのが好ましい場合に、特に便利です。
値でオブジェクトを渡すセマンティクスは、標準のプログラミング言語のセマンティクスとほぼ同じです。値で渡されるパラメータの受信側は、オブジェクトの「状態」の記述を受信します。次に、受信側は新しいインタンスをその状態でインスタンス化します。その際、送信側のインスタンスのIDを個別に付けます。パラメータ渡しの操作が完了すると、2つのインスタンス間には何の関係もないものと見なされます。
受信側はインスタンスをインスタンス化する必要があるため、オブジェクトの状態と実装に関する情報を認識している必要があります。そこで、値型では、CORBA構造体とCORBAインタフェースをブリッジする、次のセマンティクスを備えています。
- 再帰やサイクルを伴った任意のグラフなど、複雑な状態の記述をサポートします。
- インスタンスはリモート呼出しへのパラメータとして渡されるときに常にコピーされるので、使用されるコンテキストに対してインスタンスは常にローカルです。
- 実装に対してパブリック・データ・メンバーとプライベート・データ・メンバーの両方をサポートします。
- オブジェクト実装の状態の指定に使用できます。つまり、インタフェースをサポートできます。
- サポートする値型の継承は1つのみです。また、インタフェースをサポートできます。
- 抽象にもなることができます。
親トピック: 値型