問題タブ [polymorphism]

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 投票する
5 に答える
12132 参照

java - 複数の境界を持つ Java ジェネリックをキャストするにはどうすればよいですか?

Javaのオブジェクトを結合されたジェネリック型にキャストすることは可能ですか?

私は次のような方法を持っています:

両方のインターフェイス (Foo と Bar) を実装するクラスがある場合、このメソッドを呼び出すことは問題ありません。

問題は、このメソッドを呼び出す必要があるときに、渡す必要のあるオブジェクトを受け取ったjava.lang.Objectときに、コンパイラを満足させるためにキャストする必要があることです。しかし、このキャストを作成する方法がわかりません。

編集:

問題は、次のような関数にあります。

}

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

.net - Managed C++ の未解決のトークン

私は私の手に謎を持っています。私は C# のバックグラウンドからマネージ C++ を学ぼうとしていますが、問題が発生しました。基本クラスSoupと、静的ライブラリ (.lib) としてコンパイルする派生クラスTomatoSoupの 2 つのクラスを含むプロジェクトがある場合、 Soupの仮想メソッドで未解決のトークンを取得します。コードは次のとおりです。


Abstracts.proj

スープ.h

TomatoSoup.h

トマトスープ.cpp

Main.proj

メイン.cpp


Main.projで次のリンク時エラーが発生します。

  1. 設定してみました

    /li>
  2. 基本クラスに熱を実装してみました

    エラーとして扱われる参照されていない仮パラメーターの警告を取得します。

  3. Soup クラスの abstract キーワードの有無にかかわらず、1 と 2 の両方を試しました

この問題は私を夢中にさせており、将来、他の開発者を狂わせないようにしたいと思っています。

更新: TomatoSoup::heat がヘッダー ファイルに実装されている場合、これは Greg Hewgill の引数名コメント メソッドで機能しましたが、実装を TomatoSoup.cpp に移動するとエラーが再発しました。それを反映するように質問を修正しました。

0 投票する
9 に答える
1995 参照

c# - ポリモーフィズムを使用するには、この条件をどのようにリファクタリングしますか?

コードからステートメントを削除し、代わりにポリモーフィズムを使用 することについて、 YouTube で Google クリーン コード ビデオ (リンク、最初の記事を参照)を見終わったところです。if

ビデオを見た後、ビデオを見る前に書いていたコードを見て、このメソッドを使用できる場所、主に同じ種類のロジックが何度も実装されている場所に気付きました。例:

このようなコードがあります。

RunTableInfoCommand が何をするかはそれほど重要ではありませんが、主なことは、まったく同じステートメントを持つ多くのプロパティがifあり、変更されるのは TableInfoEnum だけです。

誰かがこれをリファクタリングして同じことを行うのを手伝ってくれるかどうか疑問に思っていましたが、ifステートメントはありませんか?

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

c# - これはポリモーフィズムの良い例でしょうか

これが本当に基本的な質問である場合は申し訳ありませんが、これをどのように攻撃すべきかについて苦労しています。OLE オブジェクトのいくつかのコマンドをまとめようとしています。基本的な仕様は次のようになります。

[] の間は任意です。

したがって、クラスを作成する必要があります。「 CommandBuilder 」と呼ぶことができます。これは、これらすべてのオプションのセッターのメソッドを設定できます。それで問題ありません。私が抱えている主な問題は、文字列を出力する必要がある ToCommandString メソッドです。次のようになります。

設定される変数に基づいていくつかのifを実行し、文字列を結合するだけで、設定される変数について複雑なことは何もない場合、または変数がわずかしかない場合でも正常に機能しますが、オプションの変数および/またはネストされた値のヒープがある場合、ToStringメソッドが非常に長く複雑になる可能性があり、何かが変更された場合に維持するのが難しくなります.

このようなことを行うことで、ポリモーフィズムを使用してこれを解決できるかどうか疑問に思っていました。

次に、「 CommandBuilder 」のすべての設定メソッドを作成して、それをリストに追加するだけで、「CommandBuilder」メソッドのメインの ToString は、設定されたすべてのものをループして ToCommandString を呼び出すことができ、心配する必要はありませんif ステートメントまたは null チェックを実行します。

これはこれを行う正しい方法でしょうか?

PSさらに情報が必要な場合は、喜んで追加しますが、最初は長くなりたくなかっただけです。

0 投票する
11 に答える
45029 参照

oop - 抽象化とポリモーフィズムの違いは何ですか

私は 2 つの OOP の概念をよく理解していないようです。できれば実際の例とコードを使用して、抽象化ポリモーフィズムとは何かを説明していただけますか?

ありがとうございました。

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

ruby-on-rails - RoR: has_one "またはその他"? (または、継承のないポリモーフィズム。)

こんにちは、私のプロジェクトには興味深い要件があります。has_oneどちらか一方のクラスであるが、継承のない関係が必要です。それが唯一の方法であれば、継承を回避できますが、2 つの関連付けられたレコードは完全に異なるデータを持ち、まったく関連していません。

私が把握する必要があるのは、次のようなものです。

または のいずれかFooのタイプの 1 つの割り当てがあります。それらは共通の列を 1 つしか共有しないので、おそらくそこから親オブジェクトを作成できます。ただし、共通のオブジェクトから継承する場合 (実際に含まれるデータがオレンジとリンゴである場合)、レコードのテーブルを作成する必要がありますか? レコードが抽象的なレコードであるが、子レコードがそうでない場合、おそらくそれを回避できますか?BarBaz

ここまで来れば私の難しさはお分かりいただけると思います。私は RoR にかなり慣れていませんが、これまでのところ気に入っています。これを回避する方法があると確信していますが、それが何であるかを理解できない場合は気が遠くなるでしょう。

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

oop - 常に列挙型よりもポリモーフィズムを優先する必要がありますか?

視聴後: The Clean Code Talks -- 継承、ポリモーフィズム、およびテスト

コードをチェックしたところ、いくつかの switch ステートメントをポリモーフィズムにリファクタリングできることに気付きましたが、switch ステートメントを列挙型でしか使用していないことにも気付きました。これは、オブジェクト指向設計では列挙型が「悪」であり、ポリモーフィズムで排除されるべきであることを意味しますか?

0 投票する
7 に答える
14454 参照

java - サブクラスを期待するメソッドにパラメータとしてスーパークラスを渡す

次のようなオブジェクトツリーがあります

そして、私には2つの方法があります:

別のクラスでは、次のことをしたいと思います。

ここで、myBall は Ball 型です。そして、サブタイプに応じて正しいメソッドを呼び出すようにします。どうやら私はこれを行うことはできません... 引数は適用されません。

私が望むものを達成する方法を誰かが知っていますか? または、適切な回避策がある場合

ありがとう

編集:私が構築しようとしているアプリケーションは、クリケット スコアカード タイプのものです。したがって、ボウリングされるボールの種類に応じて、他のさまざまな要素が変化するはずです。

私の当初の意図は、ボールの種類と何らかの形式の UI から得点されるランを指定し、BallFactory から適切な種類のボールを作成できるようにすることでした。たとえば、チームのスコアにボールを送信しないと、値が追加されます。チームのスコアだけでなく、ノーボール カウンターに値を追加します。しかし、同じボールをバッツマン分析に渡して対処すると、バッツマンの合計に値-1しかスコアが付けられません..

私の当初の意図の説明が悪くないことを願っています。