インターフェース(コンピューティング)

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

コンピューティングでは、インターフェイスは、コンピュータシステムの2つ以上の個別のコンポーネントが情報を交換するための共有境界です。交換は、ソフトウェアコンピュータハードウェア周辺機器、人間、およびこれらの組み合わせの間で行うことができます。[1]タッチスクリーンなどの一部のコンピューターハードウェアデバイスは、インターフェイスを介してデータを送受信できますが、マウスやマイクなどの他のデバイスは、特定のシステムにデータを送信するためのインターフェイスのみを提供する場合があります。[2]

ハードウェアインターフェース

ラップトップコンピュータのハードウェアインターフェイス:イーサネットネットワークソケット(中央)、左側にVGAポートの一部、右側(上)にディスプレイポートソケット、右側(下部)にUSB2.0ソケット。

ハードウェアインターフェイスは、さまざまなバスストレージデバイス、その他のI / Oデバイスなど、多くのコンポーネントに存在します。ハードウェアインターフェイスは、インターフェイスの機械的、電気的、論理的な信号と、それらをシーケンスするためのプロトコル(シグナリング)。[3] SCSIなどの標準インターフェースは、I / Oデバイスなどのコンピューティングハードウェアの設計と導入を、コンピューティングシステムの他のコンポーネントの設計と導入から切り離し、ユーザーとメーカーが実装に大きな柔軟性をもたらすことを可能にします。コンピューティングシステムの。[3]ハードウェアインターフェイスは並列化できますデータの一部を同時にまたはシリアルに伝送する複数の電気接続を使用して、データが一度に1ビット送信されます。[4]

ソフトウェアインターフェース

ソフトウェアインターフェイスは、さまざまな「レベル」でさまざまな種類のインターフェイスを指す場合があります。オペレーティングシステムは、ハードウェアの一部とインターフェイスする場合があります。オペレーティングシステムで実行されているアプリケーションまたはプログラムは、データストリーム、フィルター、およびパイプラインを介して対話する必要がある場合があります。[5]およびオブジェクト指向プログラムでは、アプリケーション内のオブジェクトはメソッドを介して相互作用する必要がある場合があります。[6]

実際には

設計の重要な原則は、デフォルトですべてのリソースへのアクセスを禁止し、明確に定義されたエントリポイント、つまりインターフェイスを介したアクセスのみを許可することです。[7]ソフトウェアインターフェイスは、基盤となるコンピュータシステムのコンピュータリソース(メモリ、CPU、ストレージなど)へのアクセスを提供します。ソフトウェアによるそのようなリソースへの直接アクセス(つまり、適切に設計されたインターフェースを介さない)は、機能と安定性に大きな影響を与える可能性があります。[要出典]

ソフトウェアコンポーネント間のインターフェイスは、定数データ型プロシージャの種類、例外仕様、およびメソッドシグネチャを提供できます。パブリック変数もインターフェースの一部として定義される場合があります。[8]

ソフトウェアモジュールAのインターフェイスは、そのモジュールの実装とは別に意図的に定義されています。後者には、インターフェイスに記述されているプロシージャとメソッドの実際のコード、およびその他の「プライベート」変数、プロシージャなどが含まれます。Aと対話する別のソフトウェアモジュールBたとえばAクライアント、強制的に実行されます。公開されたインターフェースを介してのみ。この配置の実際的な利点の1つは、Aの実装を同じインターフェイスの別の実装に置き換えても、 Bが失敗することはないということですインターフェイスの要件を内部的に満たしているのは、インターフェイスの仕様にのみ関係するBには関係ありません。リスコフの置換原則も参照してください。)[要出典]

オブジェクト指向言語の場合

一部のオブジェクト指向言語、特に完全な多重継承がない言語では、インターフェイスという用語は、データを含まないが動作をメソッド署名として定義する抽象型を定義するために使用されます。そのインターフェースに対応し、そのように宣言するすべてのメソッドのコードとデータを持つクラスは、そのインターフェースを実装すると言われます[9]さらに、単一継承言語でも、複数のインターフェースを実装できるため、同時に異なるタイプにすることができます。[10]

したがって、インターフェースは定義です。オブジェクトを交換できる場所であればどこでも(たとえば、関数メソッドの呼び出しで)、交換するオブジェクトのタイプは、特定のクラスを指定するのではなく、実装されたインターフェイスまたは基本クラスの1つで定義できますこのアプローチは、そのインターフェイスを実装するすべてのクラスを使用できることを意味します。[要出典]たとえば、ダミーの実装を使用して、最終的な実装が利用可能になる前に開発を進めることができます。別のケースでは、偽物またはモックテスト中に実装を置き換えることができます。このようなスタブ実装は、開発プロセスの後半で実際のコードに置き換えられます。

通常、インターフェイスで定義されたメソッドにはコードが含まれていないため、それ自体を呼び出すことはできません。呼び出されたときに実行するには、非抽象コードで実装する必要があります。[要出典] ""というインターフェースStackは2つのメソッドを定義するかもしれません:push()pop()たとえば、さまざまな方法で実装できますFastStack。1GenericStackつ目は高速で、固定サイズのデータ​​構造を処理し、2つ目はサイズ変更可能なデータ構造を使用しますが、速度は多少低下します。

インターフェイスには多くのメソッドを含めることができますが、メソッドを1つだけ含めることも、まったく含まないこともあります。たとえば、Java言語はReadable、単一のメソッドを持つインターフェースを定義します。、、、、、、などさまざまな実装がさまざまな目的で使用さますのようなマーカーインターフェイスにはメソッドがまったく含まれておらず、Reflectionを使用して一般的な処理に実行時情報を提供するのに役立ちます。[11]read()BufferedReaderFileReaderInputStreamReaderPipedReaderStringReaderSerializable

インターフェイスへのプログラミング

インターフェイスを使用すると、インターフェイスへのプログラミングと呼ばれるプログラミングスタイルが可能になりますこのアプローチの背後にある考え方は、内部実装の詳細ではなく、使用されるオブジェクトのインターフェイスに基づいてプログラミングロジックを作成することです。インターフェイスへのプログラミングは、実装の詳細への依存を減らし、コードをより再利用可能にします。[12]

このアイデアを極端に推し進めると、制御の反転により、作業を実行するために使用されるインターフェイスの特定の実装をコードに挿入する コンテキストが残ります。

ユーザーインターフェイス

ユーザーインターフェイスは、コンピューターと人間の間の相互作用のポイントですこれには、ユーザーとコンピューターシステム間でデータが転送されるインタラクションモダリティ(グラフィックス、サウンド、位置、動きなど)がいくつも含まれます。

も参照してください

参考文献

  1. ^ Hookway、B。(2014)。「第1章:インターフェースの主題」。インターフェースMITプレス。pp。1–58。ISBN 9780262525503
  2. ^ IEEE100-IEEE標準用語の信頼できる辞書NYC、NY、USA:IEEEPress。2000. pp。574–575。ISBN 9780738126012
  3. ^ a b Blaauw、Gerritt A。; Brooks、Jr.、Frederick P.(1997)、 "Chapter 8.6、Device Interfaces"、Computer Architecture-Concepts and Evolution、Addison-Wesley、pp。489–493、ISBN  0-201-10557-8 参照: パターソン、デビッドA。; Hennessey、John L.(2005)、「第8.5章、I / Oデバイスとプロセッサ、メモリ、およびオペレーティングシステムとのインターフェイス」、コンピュータの構成と設計-ハードウェア/ソフトウェアインターフェイス、第3版、Morgan Kaufmann、  pp。588–596ISBN 1-55860-604-1
  4. ^ Govindarajalu、B。(2008)。「3.15ペリフェラルインターフェースとコントローラー-OG」IBM PCとクローン:ハードウェア、トラブルシューティング、およびメンテナンスTata McGraw-Hill Publishing Co. Ltd. pp。142–144。ISBN 97800704831182018年6月15日取得
  5. ^ Buyya、R。(2013)。クラウドコンピューティングをマスターするタタマグロウヒルエデュケーション。p。2.13。ISBN 9781259029950
  6. ^ うんち、D。; キオン、D。; Ashok、S。(2008)。「第2章:オブジェクト、クラス、メッセージ、およびメソッド」。オブジェクト指向プログラミングとJavaSpringer-Verlag。pp。7–15。ISBN 9781846289637
  7. ^ ビルベナーズ(2005-06-06)。「最先端のJava:デザインパターンからの設計原則:実装ではなく、インターフェイスへのプログラム-Erich Gammaとの会話、パートIII」http://www.artima.com/index.jsp:artima開発者。2011年8月5日にオリジナルからアーカイブされました2011年8月3日取得 インターフェイスのみに依存すると、実装から切り離されます。つまり、実装は変化する可能性があり、それは健全な依存関係です。たとえば、テストの目的で、重いデータベースの実装を軽量のモック実装に置き換えることができます。幸いなことに、今日のリファクタリングサポートにより、事前にインターフェイスを考え出す必要がなくなりました。問題に対する完全な洞察が得られたら、具体的なクラスからインターフェースを抽出できます。意図されたインターフェースは、リファクタリングされた「抽出インターフェース」の1つにすぎません。..。 {{cite web}}:(ヘルプ外部リンク|location=
  8. ^ パターソン、DA; ヘネシー、JL(2004年8月7日)。コンピュータの構成と設計:ハードウェア/ソフトウェアインターフェイス(第3版)。エルゼビア。p。656. ISBN 9780080502571
  9. ^ 「インターフェースとは」Javaチュートリアルオラクル。2012年4月12日にオリジナルからアーカイブされました2012年5月1日取得
  10. ^ 「インターフェース」Javaチュートリアルオラクル。2012-05-26にオリジナルからアーカイブされました2012年5月1日取得
  11. ^ 「シリアル化のパフォーマンス改善手法」正確なJava。2011年8月24日にオリジナルからアーカイブされました2011年8月4日取得最初に、Serializableインターフェイスについて説明します。これはマーカーインターフェイスであり、メソッドはありません。
  12. ^ ガンマ; 兜; ジョンソン; Vlissides(1995)。デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素アディソンウェスリー。pp。17–18  _ ISBN 9780201633610