インタフェースの疑問

私はInterfaceに関する質問があります:

インターフェイスはオブジェクト(異なるオブジェクト)とアクション(同じアクションを実行しようとする異なるオブジェクトタイプ)の間のレイヤーですか?インターフェイスはどのような種類のオブジェクトで、どのように特定のアクションを実行できるかをチェックします。

前もって感謝します

0

3 答え

私は、インタフェースを約束として考える方が良いと言いたいと思います。 Javaでは、APIの継承を可能にするインタフェース構造がありますが、動作を指定するものではありません。しかし、一般的に、インタフェースは、オブジェクトがオブジェクトと対話するために提示するメソッドで構成されます。

アヒル型言語では、オブジェクトが特定のクラスに固有の特定のメソッド(インタフェース)のセットを提示する場合、そのオブジェクトは指定クラスと同じです。

動作の基準のいくつかを指定する必要があるため、インタフェースの強制は複雑です。興味深い例は、エッフェル塔のデザインによる契約の考え方です。

2
追加された
つまり、2つのオブジェクト(従業員と顧客)がアクション(購読)を実行しようとしているとします。ここで従業員は直接購読することができ、顧客は支払ってから購読する必要があります。私たちには、どのような人物かを確認するインタフェースIPersonがあります。従業員クラスと顧客クラスには独自の購読メソッドがありますか?
追加された 著者 user793468,
継承関係がない場合は、独自の方法があります。だから、IPersonは購読方法も持っていますか?それはどうしますか?そしてどうやって? Interface IPersonのSubscribeメソッドには何が含まれますか? EmployeeとCustomerクラスの個別のサブスクライブメソッドが既に存在するため
追加された 著者 user793468,
ありがとう! Interfaceのコンセプトを実装することは、プログラミング言語によって異なる可能性があることを理解しています。私は一般的にインターフェースを理解しようとしています。 「インターフェイスを約束として考える」と言うとき、クラスが特定のインターフェイスを実装したい場合、クラスはどのタイプの約束を達成する必要がありますか?あなたはそれをより良く理解するための例を挙げることができますか?
追加された 著者 user793468,
場合によります。あなたは3つの道を持っています。 1)従業員と顧客は、インターフェースを共有する以外は関係ありません。彼らは独自の方法を持っています。 2)1つは他から継承するか、3)共通の基底クラスから継承する。彼らは独自の方法を持っているかもしれません。
追加された 著者 John Percival Hackworth,
今は言語の詳細になっています。 Java(または同様のインターフェース概念を持つ言語)を仮定すると、EmployeeとCustomerはそれぞれ独自のsubscribeメソッドを持っています。 IPersonは、Javaインターフェイスの場合、実装ではなく署名のみを指定します。しかし、IPersonがJavaのようなインターフェースではなく、別のクラスであれば、IPerson subscribeメソッドにはあなたが望むものが含まれます。
追加された 著者 John Percival Hackworth,
Javaの場合、AWTのイベントハンドラを見てください。マウスのイベントハンドラを構築する際に便利ないくつかのインターフェイスを実装するMouseAdapter relo nofollow noreferrer"> goo.gl/HBasg イベント。より興味深い例は、PythonのStringIOクラス goo.gl/aMkr です。これはPythonのファイルのようなオブジェクトです文字列に対するファイル操作をサポートしています。 StringIOオブジェクトはファイルのようなものなので、通常はファイルを使用する場所で使用できます。ファイルのようなクラスでは、テストやデフォルトのためにファイルの代わりに文字列を使うなどの作業を行うことができます。
追加された 著者 John Percival Hackworth,

.netまたはJavaのインターフェースを理解するためには、まず継承が2つの概念を組み合わせていることを認識しなければなりません。

  1. Implementations of the derived type will include all fields (including private ones) of the base type, and can access any and all public or protected members of the base type as if it were its own.
  2. Objects of the derived type may be freely used in place of objects of the base type.

オブジェクトで複数の基本型のメンバーを独自のものとして使用できるようにすることは複雑です。いくつかの言語ではそうした方法が提供されていますが、特に基本オブジェクトのどの部分が参照されているかについて混乱が生じることがあります。特に、3つ目から独立して継承する2つのクラスから継承する場合。したがって、多くのフレームワークでは、オブジェクトは1つの基本オブジェクトから継承することしかできません。

On the other hand, allowing objects to be substitutable for more than one other type of object does not create these difficulties. An object representing a database table may, for example, allow itself to be passed to a routine that wants a "thing that can enumerate contents, which are of type T (IEnumerable in .net)", or a routine that wants a "thing that can have things of type T added to it" (ICollection in .net), or a thing that wants a "thing that wants to know when it's no longer needed (IDisposable in .net)". Note that there are some things that want notification when they're no longer needed that do not represent enumerable collections, and there are other things that represent enumerable collections that can be abandoned without notification. Thus, neither type of object could inherit from the other, but if one uses an interface to represent "things which can enumerate their contents, which are of type T", or "things that want to know when they are no longer needed", then there's no problem having classes implement both interfaces.

0
追加された

特定の言語(JavaやObjective-Cなど)で使用されている「インタフェース」という用語、またはその用語の総称的な意味について質問していますか?

後者の場合、「インターフェース」はほとんど何でもかまいません。油を水に注ぎます - それらの間の線は "インターフェース"です。インタフェースとは、2つの別々のものが会合して相互作用する任意の点です。

この用語は、コンピューティングにおいて厳格な定義を持っていませんが、2つの比較的異なるドメインが相互作用する任意の場所を指します。

0
追加された
私は一般的に、コンピューティング/プログラミングの概念としてのインターフェースについて話しています。
追加された 著者 user793468,
したがって、基本的にインターフェイスは、2つのドメインが許容される方法で相互作用しているかどうかをモニタするレイヤですか?ドメインが相互作用していると言うと、それはオブジェクトがオブジェクトとやり取りすることを意味しますか?
追加された 著者 user793468,
さて、それは2つのドメインが相互作用する場所です。それは「明確に定義された」または「臨機応変」かもしれません。インターフェイスでのパラメータの厳密なチェックがあるか、チェックされていない可能性があります。それは、命名規則、標準的なリターンコードなどの標準化されたパターンに従うか、個々の機能を別の方法で定義することができます。
追加された 著者 Hot Licks,
基本的には、「インターフェース」はあなたの言うことです。お互いに相互作用する2つのオブジェクトは、「インターフェース」と呼ぶことができます。 「UI」 - 「ユーザーインターフェース」 - は「インターフェース」です。ハードウェアとソフトウェアの境界は「インターフェース」です。このフォーラムは「インターフェース」です。
追加された 著者 Hot Licks,