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

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

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

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

ハードウェア・インターフェースラップトップコンピュータ:イーサネットネットワークソケット(中心)への一部左VGAの右(上)に、ポートをディスプレイポート右(下)にソケット、USB 2.0ソケット。

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

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

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

実際には

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

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

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

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

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

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

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

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

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

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

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

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

ユーザインターフェースは、コンピュータと人間との間の相互作用の点です。それは、任意の数含むモダリティ対話データは、ユーザとコンピュータシステムとの間で転送される(等グラフィック、音声、位置、動き、などを)。

も参照してください

参考文献

  1. ^ Hookway、B。(2014)。「第1章:インターフェースの主題」。インターフェースMITプレス。pp。1–58。ISBN 9780262525503
  2. ^ IEEE 100-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 参照: Patterson、David 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)。クラウドコンピューティングの習得タタマグロウヒルエデュケーション。NS。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-08-03に インターフェイスのみに依存すると、実装から切り離されます。つまり、実装は変化する可能性があり、それは健全な依存関係です。たとえば、テストの目的で、重いデータベースの実装を軽量のモック実装に置き換えることができます。幸いなことに、今日のリファクタリングサポートにより、事前にインターフェイスを考え出す必要がなくなりました。問題に対する完全な洞察が得られたら、具体的なクラスからインターフェースを抽出できます。意図されたインターフェースは、リファクタリングされた「抽出インターフェース」の1つにすぎません。..。
  8. ^ パターソン、DA; ヘネシー、JL(2004年8月7日)。コンピュータの構成と設計:ハードウェア/ソフトウェアインターフェイス(第3版)。エルゼビア。NS。656. ISBN 9780080502571
  9. ^ 「インターフェースとは」Javaチュートリアルオラクル。2012年4月12日にオリジナルからアーカイブされました2012年5月1取得
  10. ^ 「インターフェース」Javaチュートリアルオラクル。2012年5月26日にオリジナルからアーカイブされました2012年5月1取得
  11. ^ 「シリアル化のパフォーマンス改善手法」正確なJava。2011年8月24日にオリジナルからアーカイブされました取り出さ2011-08-04に最初に、Serializableインターフェイスについて説明します。これはマーカーインターフェイスであり、メソッドはありません。
  12. ^ ガンマ; 兜; ジョンソン; Vlissides(1995)。デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素アディソンウェスリー。PP。  17-18ISBN 9780201633610