問題タブ [interface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3608 参照

vb.net - VB.NET でインターフェイス プロパティをオプションで読み取り専用にするにはどうすればよいですか?

これは、インターフェースに関する以前の質問へのフォローアップです。気に入った回答がありましたが、VB.NET での実装方法がわかりません。

前の質問:

このプロパティは、オブジェクトのインターフェイスの一部にする必要がありますか?

VB.NET 構文でこれを実現するにはどうすればよいですか? 私の知る限り、私の唯一のオプションは、プロパティを ReadOnly としてマークする (セッターを実装できない) か、マークしない (セッターを実装する必要がある) ことです。

0 投票する
19 に答える
31579 参照

oop - インターフェイスを使用する理由

メソッドなどの実装を強制することは理解していますが、なぜそれらを使用したいのか理解できません。なぜ私がこれを実装したいのかについて、誰かが私に良い例や説明を与えることができますか.

0 投票する
6 に答える
6183 参照

java - Java で必須の複製可能なインターフェース

私はJavaで小さな問題を抱えています。Modifiable というインターフェイスがあります。このインターフェースを実装するオブジェクトは変更可能です。

また、2 つの Modifiable オブジェクトを受け取る ModifyCommand クラス (Command パターンを使用) もあります (リスト内でそれらをさらに交換する - それは私の質問ではありません。私はすでにそのソリューションを設計しています)。

ModifyCommand クラスは、Modifiable オブジェクトのクローンを作成することから始めます。論理的には、Modifiable インターフェイスが Cloneable を拡張するようにしました。次に、インターフェースは、その実装クラスが再定義する必要がある clone() メソッドを定義します。

次に、ModifyCommand で、firstModifiableObject.clone() を実行できます。私の論理では、Modifiable を実装するクラスは、Cloneable になるため、Object から clone メソッドを再定義する必要があります (それが私がやりたいことです)。

問題は、Modifiable を実装するクラスを定義し、clone() をオーバーライドしたい場合、Object クラスの clone() メソッドが Modifiable のメソッドを非表示にしていると言って、それができないということです。

私は何をすべきか?「やり方が間違っている」と思い込んでいる…

ありがとう、

ギヨーム。

編集: clone() のことを忘れると思います。a) Modifiable オブジェクト (インターフェースを実装する) に渡されたオブジェクトが既に複製されていると仮定するか、b) 基本的に Modifiable オブジェクトのディープコピーを行う copy() などと呼ばれる別のメソッドを作成します (または、一般的なソリューションが機能する可能性があります...)。

0 投票する
3 に答える
314 参照

c# - フレームワーク/API 設計と TDD のバランスをどのように取っていますか

私たちは他の開発者が使用するフレームワークを構築しており、今のところ多くの TDD プラクティスを使用しています。どこにでもインターフェースがあり、インターフェースを模擬するよく書かれた単体テストがあります。

ただし、入力クラスのプロパティ/メソッドの一部を内部にする必要があり、フレームワーク ユーザーには表示されないようにする必要があります (オブジェクト Id など)。問題は、インターフェイスがアクセシビリティを記述していないため、これらのフィールド/メソッドをインターフェイスに配置できないことです。

我々は出来た:

  1. メソッドの最初の行で引き続きインターフェイスとアップキャストを使用しますが、それはインターフェイスの目的を無効にしているようです。
  2. クラスを入力パラメーターとして使用する -すべてがインターフェイスでなければならないという TDD ルールを破る
  3. パブリック インターフェイスと内部インターフェイスの間で何らかの変換を行う別のレイヤーを提供する

これに対処するための既存のパターン/アプローチはありますか? TDDの人々は何をすべきだと言っていますか?

0 投票する
3 に答える
13476 参照

c# - インターフェイスの属性

属性を持ついくつかのメソッドを定義するインターフェースがあります。これらの属性は呼び出し元のメソッドからアクセスする必要がありますが、私が持っているメソッドはインターフェイスから属性を取得しません。私は何が欠けていますか?

0 投票する
5 に答える
8307 参照

c# - C# インターフェイスの実装関係は単なる「できる」関係ですか?

今日、C# でのインターフェイスの実装は、「Is-A」の関係ではなく、単なる「Can-Do」の関係であると誰かが私に言いました。これは、LSP (Liskov Substitution Principle) に対する私の長年の信念と矛盾します。私は常に、すべての継承は「Is-A」の関係であるべきだと考えています。

したがって、インターフェースの実装は単なる「できること」の関係です。「IHuman」と「IEngineer」というインターフェースがあり、「IHuman」と「IEngineer」を継承するクラス「Programmer」が1つあるとしたら?確かに、「プログラマー」は「IHuman」と「IEngineer」です。

単なる「Can-Do」関係であれば、IHuman として扱う場合と IEngineer として扱う場合で「Programmer」インスタンスの挙動が異なることは期待できないということでしょうか?

0 投票する
1 に答える
3074 参照

c# - 別のインターフェースがすでに継承しているインターフェースの再実装

私はこのようなものをたくさん見ます:

B が既に A を継承しているのに、なぜ C がインターフェイス A を実装すると指定するのでしょうか? 意味的な違いはありますか、それとも単にスタイルの問題ですか?

(多くの例の 1 つは と の実装List<T>ですが、からも派生しています)。IList<T>ICollection<T>IList<T>ICollection<T>


更新:セマンティックな違いはないという私の推測を確認していただきありがとうございます。

すでに継承ツリーにあるインターフェイスに明示的に名前を付けることが違いを生む、関連する状況を思いつきました。

Bクラスの場合、' ' の後に明示的に名前が付けられている場合にCのみ、からのインターフェイス メンバーを (再) 実装します。AA:

[編集] オブジェクトがインターフェイスとしてキャストされる場合にメンバーの使用を制限する、明示的に実装されたインターフェイス メンバーとの混乱を避けるために、質問の文言を変更しました。

0 投票する
8 に答える
3193 参照

java - Javaインターフェースは抽象クラスですか?

私はいくつかの宿題に取り組んでおり、以前の試験問題で、特定の UML ダイアグラム内のすべての抽象クラスに名前を付けるよう求められています。かなり簡単だと思います。1 つの抽象クラスと 3 つのインターフェイスがあります。一般に、これらのインターフェイスは抽象クラスとして認められますか?

0 投票する
3 に答える
2640 参照

wpf - WPF HiercharchicalDataTemplate.DataType:インターフェイスに反応する方法は?

問題

のコレクションがあり、IThingの を作成したいと考えてHierarchicalDataTemplateいますTreeView。おそらく、WPF 作成者が可能なDataType={x:Type local:IThing}あいまいさを処理したくなかったためです。

これはIThing異なるソースからの s を同時に処理する必要があるため、実装クラスを参照することは問題外です。

現在のソリューション

今のところ、具体的な実装を通じて IThing をプロキシする ViewModel を使用しています。

質問

より良い (つまり、プロキシがない) 方法はありますか?

0 投票する
1 に答える
432 参照

delphi - これは Delphi 2009 のバグですか?

確かにバグっぽいのですが、試用版しか持っていないので直ったのかもしれません。

上記は正しくコンパイルされません。しかし、次はそうです!

編集: TTest をインスタンス化しようとすると失敗することがわかりました。少し一貫性がありませんが、それほど悪くはありません。