不透明(OPAQUE)データ型

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

コンピュータサイエンスでは、不透明(OPAQUE)データ型具体的なデータ構造がインターフェイスで定義されていないデータ型です。不足している情報にアクセスできるサブルーチンを呼び出すことによってのみを操作できるため、これにより情報の隠蔽が強制されます。タイプの具体的な表現はそのユーザーから隠されており、目に見える実装は不完全です。表現が表示されるデータ型は、transparentと呼ばれます。[1]不透明(OPAQUE)データ型は、抽象データ型を実装するために頻繁に使用されます

不透明(OPAQUE)データ型の典型的な例には、オペレーティングシステムからアプリケーションソフトウェアに提供されるリソースハンドルが含まれます。たとえば、スレッドのPOSIX標準は、スレッドまたはミューテックス条件変数などの同期プリミティブを表すいくつかの不透明(OPAQUE)型に基づいてアプリケーションプログラミングインターフェイスを定義します[2]

不透明( OPAQUE)ポインターは、不透明(OPAQUE)データ型の特殊なケースであり、指定されていないデータ型のレコードまたはデータ構造へのポインターとして宣言されたデータ型です。たとえば、 Cプログラミング言語の仕様の一部を形成する標準ライブラリは、ファイルストリームを表す「ポインタ」タイプの値を返すまたは受け取るファイル入出力用の関数を提供します( Cファイルの入出力を参照)。タイプの具体的な実装は指定されていません。[3] FILEFILE

さまざまな言語での使用

Cなどの一部の言語では、サイズとフィールドがクライアントから隠されている不透明なレコード(構造体)の宣言が許可されています。クライアントがそのようなタイプのオブジェクトで実行できる唯一のことは、そのメモリアドレスを取得して、不透明なポインタを生成することです。

インターフェイスによって提供される情報が型のサイズを決定するのに十分である場合、クライアントはその型の変数フィールド、および配列を宣言し、それらの値を割り当て、場合によってはそれらが等しいかどうかを比較できます。これは通常、不透明なポインタの場合です。

Javaなどの一部の言語では、提供される不透明(OPAQUE)型は不透明(OPAQUE)ポインターのみです。実際、Java(および他のいくつかの言語)では、レコードは常にポインターを介して処理されます。

一部の言語では、部分的に不透明(OPAQUE)型を使用できます。たとえば、すべてのクライアントが認識してアクセスできるパブリックフィールドや、インターフェイスに表示されない非表示フィールドを持つレコードなどです。このようなタイプは、オブジェクト指向プログラミングで基本的な役割を果たします

インターフェイスに欠落している情報は、その実装または別の「友達専用」インターフェイスで宣言される場合があります。この2番目のオプションを使用すると、非表示の情報を2つ以上のモジュールで共有できます。

も参照してください

参考文献

  1. ^ フリードマン、ダニエルP。; ワンド、ミッチェル; ヘインズ、クリストファーT.(2001)。プログラミング言語の要点(第2版)。MITプレス。p。42. ISBN 978-0-262-06217-6
  2. ^ Butenhof、David R.(1997)。POSIXスレッドを使用したプログラミングアディソン-ウェスリー。p。31. ISBN 978-0-201-63392-4
  3. ^ Kernighan、Brian W .; リッチー、デニスM.(1988)。Cプログラミング言語(第2版)。プレンティスホール。ISBN 0-13-110362-8