問題タブ [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.
java - インターフェイスのメソッド実装を @Override する必要がありますか?
インターフェイス メソッドを実装するメソッドには、アノテーションを付ける必要があり@Override
ますか?
注釈のjavadoc は次のOverride
ように述べています。
メソッド宣言が、スーパークラスのメソッド宣言をオーバーライドすることを意図していることを示します。メソッドにこの注釈型の注釈が付けられているが、スーパークラス メソッドをオーバーライドしていない場合、コンパイラはエラー メッセージを生成する必要があります。
インターフェイスが技術的にスーパークラスだとは思いません。またはそれは?
class - インターフェイス コントラクト、クラス オブジェクト?
オブジェクトがクラスにあるように、インターフェースへの契約はありますか?
コードから実行コードまで、このような同一のものを区別する必要は何ですか? クラスにクラスと名前を付け、インスタンス化された実行クラスにオブジェクトと名前を付ける背後にあるアイデアはある程度理解できますが、全体として、これらの半冗長な用語の唯一の理由はそれだけですか?
c# - オブジェクトをジェネリックインターフェイスにキャストする
私は次のインターフェースを持っています:
そして、それを実装する(すべき)クラスの束。
私はこれらの3つが同じではないことを理解しています:
それでも、すべてIRelativeToを実装する必要があるAdminRateShift(およびFXRateShift、DetRateShift)などのさまざまなクラスすべてを操作する方法が必要です。AdminRateShiftをオブジェクトとして返す関数があるとしましょう。
インターフェイスに対してプログラミングすることで、必要なことを実行できますが、実際にはオブジェクトをIRelativeToにキャストできないため、使用できます。
些細な例ですが、私がやろうとしていることを明確にしてくれることを願っています。
naming-conventions - ISomething / ISomethingable インターフェイスの確立された代替手段はありますか?
インターフェイス名の前に I を付ける .NET 標準は広く普及しているようで、もはや .NET だけに限定されているわけではありません。私は、この規則を使用する多くの Java コードに出くわしました (したがって、Java が C# よりも前にこの規則を使用していたとしても驚かないでしょう)。Flexもそれを使用します。名前の先頭にある I の配置は、ハンガリー語の表記法に似ているため、使用するのが不快です。
したがって、問題は、何かがクラスではなくインターフェースであることを示す別の方法があるか、とにかくこのように示す必要があるかということです。それとも、それが標準になった場合なので、それを受け入れて、別の方法で行うことを提案して「宗教戦争」を扇動しようとするのをやめるべきですか?
javascript - JavaScriptで継承を行う「正しい」方法はありますか? もしそうなら、それは何ですか?
私は既存のコードにテストを追加する方法を学ぼうとしています - 現在、 Working Effectively With Legacy Codeを読んでいます。私は JavaScript のいくつかの原則を適用しようとしてきましたが、今はインターフェースを抽出しようとしています。
JavaScript でインターフェイスを作成する方法を検索しても、多くは見つかりませんでした。また、継承について私が見つけたのは、いくつかの異なる方法があるようです。(独自の基本クラスを作成して、継承を容易にする便利なメソッドを提供する人もいれば、関数を使用する人もいれば、プロトタイプを使用する人もいます)。
正しい方法は何ですか?JavaScript でインターフェースを抽出するための簡単な例はありますか?
python - Python 継承 - 関数を無効にする方法
C++ では、子クラスでプライベートとして宣言することにより、親のクラスの関数を無効にすることができます。これはPythonでどのように行うことができますか? IE 子のパブリック インターフェイスから親の関数を非表示にするにはどうすればよいですか?
.net - .NET: 構成ファイルを使用して具象クラスを選択する
(この質問は特に C# での質問ですが、一般的には .NET に適用されます)
私は、かなり優れた設計の大きなアプリケーションを持っており、インターフェイス上で主要なセクションに分割されています (これは、並行開発を支援するために行われました)。
これで、必要なインターフェースを実装する具象クラスの基本セットができましたが、別の状況やテスト用の具象クラスの追加セットもあります。
現時点では、これらすべてのクラスをコードの最上位レベルにまとめています。
コンポーネントを交換したい場合は、その行を変更して再コンパイルするだけです。
それはうまく機能しますが、明らかに再コンパイルが必要です.configファイルの値を使用して具象クラスを選択したほうがよいでしょう。
構成ファイルを使用して具体的なクラスを変更するための標準的なパターンは何ですか? この問題を解決するために使用できる標準ライブラリはありますか?
ありがとう!
excel - プログラムで Excel スプレッドシートを操作するにはどうすればよいですか?
Excel をデータベースとして使用している組織から、実際のデータベースを介して Excel データに対して何らかの作業を行いたいという依頼がありました。(ええ、私は知っています、気にしないでください...)
クライアントは、一部の政府プログラムを追跡するために社内で使用する Excel シートを持っています。この Excel シートのデータは、CSV 経由で手動で SQL データベースに中間形式としてインポートされ、小さな Web アプリ経由で利用できるようになっていました。スプレッドシートまたはデータベースの変更は手動で (別の人によって) 行われ、手動で同期を維持する必要がありました。
新機能の仕様には以下が含まれます。
- Excel ファイルを Web アプリにアップロードする
- Web アプリを介して小さな変更を加えます (もちろん、このビットは非常に簡単です)。
- ときどきデータを Excel にエクスポートする
スプレッドシート (実際にはワークブックに 2 つ含まれています) は、他の機関とやり取りするために必要ないくつかのガイドラインを実装しているため、インポートの前後で構造的に同じままにする必要があります。多くの書式設定、非表示の列、並べ替えボタン、および異なるシート内のセル間の多くのデータ リンクが含まれています。
エクスポートを配信するためにスプレッドシートを最初から再作成する必要も、インポートを行う前に適切な列を CSV に手動で抽出する必要もありません。Excelをロードし、特定のフィールドを「クエリ」し、それらをDBに書き込み、後でDBからデータをロードして、適切なセルの内容のみを操作する方法を探しています。
既存のスプレッドシートとプログラムでやり取りし、必要なビットのみを読み取りまたは変更する方法はありますか?
java - インターフェイスの骨格実装における抽象メソッド
私はEffective Java(第2版)の項目18を読み直していました。抽象クラスよりもインターフェースを好む。Map.Entry<K,V>
その項目では、Josh Bloch がインターフェイスのスケルトン実装の例を提供しています。
この例から 2 つの疑問が生じます。
- ここで getKey と getValue が抽象メソッドとして明示的に宣言されているのはなぜですか? これらはMap.Entryインターフェイスの一部であるため、抽象クラスで冗長な宣言を行う理由はわかりません。
Bloch氏が言及しているように、これらのプリミティブメソッドを抽象として残すというイディオムを使用するのはなぜですか? なぜこれをしないのですか:
// スケルトンの実装 public abstract class AbstractMapEntry は Map.Entry を実装します { 秘密 K キー; プライベート V 値;
}
この利点は、各サブクラスが独自のフィールド セットを定義する必要がなく、アクセサーによってキーと値にアクセスできることです。サブクラスが本当にアクセサーの独自の動作を定義する必要がある場合は、Map.Entry インターフェイスを直接実装できます。もう 1 つの欠点は、スケルトン実装によって提供される equals メソッドで、抽象アクセサーが呼び出されることです。
ブロックは、サブクラスによる変更に対してスーパークラスが脆弱になるため、継承用に設計されたクラスからオーバーライド可能なメソッド (項目 17) を呼び出すことに対して警告しています。これは意見の問題かもしれませんが、ブロッホは本の中でこれについて詳しく説明していないので、ストーリーにもっと多くのことがあるかどうかを判断したいと思っていました.
vb.net - このプロパティは、オブジェクトのインターフェイスの一部にする必要がありますか?
オブジェクトのインターフェイスの一部である「IsSecureConnection」というプロパティがあります。これは、インターフェイスのほとんどの実装では理にかなっていますが、一部の実装では、プロパティを ReadOnly にしたいと考えています。
このプロパティは、すべての実装で必要ですが (場合によっては若干異なりますが)、オブジェクトのインターフェイスから除外する必要がありますか?
ありがとう!