問題タブ [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 投票する
3 に答える
1279 参照

c# - SQLServerの多態性ツリーのデータスキーマとクエリ

私はキャリアの中でこの問題に数回遭遇しましたが、解決策に満足したことは一度もありませんでした。ASP.NetMVC、C#、SQLServer2008で行っているプロジェクトで再び問題が発生しました。

私がPersonタイプ(クラス)を持っていると想像してください。私はさらに、人を拡張するタイプの母と父を持っています。父と母は非常に似ています。どちらも「子供」と呼ばれるプロパティを持っています。これは、Personタイプのコレクションです。「人」は、基本のPersonクラス、Motherクラス、またはFatherクラスのいずれかで表すことができます。この例から、継承(is-a)と関連付け(has-a)の両方の関係が進行していることがわかります。

これらのOOタイプを使用して、SQLServerに家系図を作成して保存したいと思います。人、母、父の3つのテーブルが欲しいと思います。すべてのオブジェクトには、Personのエントリがあり、必要に応じて、MotherまたはFatherにエントリがあります(PersonとのFK関係があります)。さらに、母の記録と子の記録の間の関係を保存するために、父と同じように、いくつかの横断歩道のテーブルが必要になります。

これはストレージの優れた戦略のように聞こえますか?

深くて広い家系図について、これをどのように効率的に照会しますか?

私が悩まされている問題は、ツリー内のノードで返され、与えられたデータの多形性です。これがPersonオブジェクトのツリーである場合は、再帰共通テーブル式を使用します。ただし、任意のノードに対して3つの異なる形状のデータが返される可能性があります。これを、C#の3つのOOタイプの1つにマップします。明らかにC#またはストアドプロシージャで再帰を実行できますが、過去のそのようなソリューションのパフォーマンスにはあまり満足していません。さらに、レコードを自然に挿入するにはどうすればよいですか?SQL ServerでのFK関係の強制のため、過去には常に正しい順序(Person、次にFatherまたはMother)で挿入する必要がありました。

このタイプのORMを処理するフレームワークはありますか?

編集:

明確にするために、私が必要とする解決策は、表示するために家系図全体を取得し、家系図にノードを追加および編集できるようにすることです。最善の解決策は、深いツリーの1つのクエリでこれを行うことだと思います。スキーマを設計し、保存し、取得する方法は、私が求めているものですか?

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

c++ - 基本クラスからの仮想関数呼び出し

私たちが持っているとしましょう:

g()から呼び出されるのはどれBase::f()ですか? Base::g()またはDerived::g()

ありがとう...

0 投票する
31 に答える
94328 参照

oop - ポリモーフィズム - たった 2 つの文で定義する

私は他の定義と説明を見てきましたが、どれも私を満足させません. コードや例を使用せずに、ポリモーフィズムを最大 2 つの文で定義できる人がいるかどうかを確認したいと思います。「つまり、人/車/缶切りを持っている...」とか、その単語がどのように派生したのかは聞きたくありません (ポリとモーフの意味を知っていることに誰も感銘を受けません)。ポリモーフィズムとは何かをよく理解していて、英語が上手であれば、この質問に簡潔ではあるが緻密な定義で答えることができるはずです。あなたの定義がポリモーフィズムを正確に定義しているが、非常に密集しているため数回の読み直しが必要な場合、それはまさに私が探しているものです。

なぜ2文だけ?定義は短くて知的なものだからです。説明は長く、例とコードが含まれています。説明についてはこちらをご覧ください(これらのページの回答は私の質問には不十分です):

ポリモーフィズム vs オーバーライド vs オーバーロード ポリモーフィズムをできるだけ
簡単に説明してください

なぜこの質問をするのですか? 私は同じ質問をされ、満足のいく定義を思いつくことができなかったことがわかりました(私の基準はかなり高いです). このサイトの偉大な頭脳のいずれかがそれを行うことができるかどうかを確認したい.

どうしても 2 文の要件を満たすことができない場合 (定義が難しいテーマです)、やり過ぎても問題ありません。アイデアは、ポリモーフィズムとは何かを実際に定義し、それが何をどのように使用するかを説明しない定義を持つことです (違いがわかりますか?)。

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

django - Django でモデル間のポリモーフィックな関係を定義するにはどうすればよいですか?

Offerモデルを含む Django アプリケーションに取り組んでいます。インスタンスには価格設定条件がOffer含まれており、製品定義を指しています。製品モデルは実際には階層です (Televisionモデル、Camcorderモデルなどがあります)。したがって、Offerモデルには、任意の製品を指すポリモーフィック (または「ジェネリック」) 関連付けが含まれている必要があります。

今のところ、私が見つけたのは、アプリケーションで一般的な関連付けContentTypesを使用することだけです。これでいいかもしれませんが、もしあれば代替手段を探しています。

ご協力いただきありがとうございます。

(回答ごとに1つの解決策をお願いします)

0 投票する
4 に答える
757 参照

c++ - ポリモーフィズムはカップリングを増やす価値がありますか?

私は C++ の経験を積むために単純なゲームを書いていますが、ポリモーフィズムがほとんど機能するのに機能しないという考えがあります。このゲームでは、Partyは をかなり直線的に移動しますが、道路で にMap遭遇することがあります。Forkフォークは (基本的に)です。当初は、メンバー関数std::vector<location*>に次のようなコードを作成する予定でした。Party

しかし、次のいくつかの変形がより良いのではないかと思っていました:

Fork は実際には Location から派生しており、いくつかの新しい function をオーバーロードしていますgetNext()。しかし後者の場合、location(低レベルの構造) は、「これをバックアップする」のではなく、ユーザーにメッセージを表示するものでなければなりませlocationUserInterface::*

あなたの意見は?

0 投票する
4 に答える
5925 参照

c++ - C++でのダブルディスパッチ/マルチメソッド

C++ダブルディスパッチについて質問があります。以下のコードでは、2番目のセットの結果を最初のセットの結果と一致させたいと思います。

実際のタイプはわかりませんが(dynamic_castを試していない限り)、オブジェクトがBaseClassタイプから継承されていることはわかっています。これを達成するための最も効率的な(パフォーマンス面での)方法は何ですか?

しばらくグーグルした後、私はダブルディスパッチとロキマルチメソッドについて知りました。Shapeの例で私が抱えている問題は、私のアプリケーションでは、ProcessorとBaseClassが完全に独立しており、相互に呼び出すことができる共通のメソッドがないことです。次に、プロセッサは1つだけです(つまり、プロセッサから継承するものはありません)。

助けてくれてありがとう。

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

c++ - これを単純化できますか?

addFunction メソッドは関数を基本クラスのリストに追加します
。これを列挙してすべての関数を呼び出すことができます。

関数の追加を簡素化する (タイピング作業を減らす) 方法はありますか?

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

c# - ファイル システムまたはアセンブリに埋め込まれたリソース内のファイルのポリモーフィック検索

私は C# でポリモーフィズムを使用することを学んでいますが、これを理解できません。リポジトリからフィルター処理されたファイルのリストを取得できるクラスを作成しようとしています。

リポジトリは、ファイル システム フォルダー、または既に読み込まれている任意のアセンブリに埋め込まれたリソースである可能性があります (ただし、現在実行中のアセンブリではありません)。

助言がありますか?

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

perl - オブジェクトが Perl でメソッドを実装しているかどうかを判断するにはどうすればよいですか?

2 つの (非公式な) インターフェイスを実装するオブジェクトのポリモーフィック配列があります。次の行に沿って反射してそれらを区別できるようにしたい:

たぶん、このようなものが機能しますか?:

構文がサブルーチンを呼び出そうとするタイミングと、サブルーチン参照を返すタイミングを判断するのは困難です。私はパッケージ シンボル テーブル ATM にあまり詳しくなく、何かをハックしようとしているところです。:-)

前もって感謝します!

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

c++ - C++ のポリモーフィック メソッドで std::for_each を使用する

std::for_each を使用する場合、

A から継承し、foo() を実装するクラスがあり、A へのポインターのベクトルを保持している場合、明示的に A::foo() を呼び出すのではなく、foo() でポリモーフィック呼び出しを呼び出す方法はありますか? 注:ブーストは使用できません。標準のSTLのみです。

ありがとう、ギャル