問題タブ [class-hierarchy]
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.
oop - OOP派生クラスと継承クラスの違いは?
OOPの観点から、派生クラスと継承クラスの間に違いはありますか?それとも単に用語ですか?
python - Python 多重継承: どの __new__ を呼び出すか?
クラスがありParent
ます。__new__
forを定義して、インスタンス化時に何らかの魔法を実行するようにしたいと考えてParent
います (理由については、脚注を参照してください)。また、子クラスがこのクラスや他のクラスから継承して、親の機能を取得するようにしたいと考えています。は、子クラスのベースとクラスのサブクラスのインスタンスを返しParent
ます。__new__
Parent
子クラスは次のように定義されます。
__new__
しかし、今では何を呼び出すべきかわかりませParent
ん__new__
。を呼び出すobject.__new__
と、上記のChild
例では を呼び出す必要があると不平を言いlist.__new__
ます。しかし、どうやってそれをParent
知ることができますか? すべての をループし、ブロック内で__bases__
それぞれを呼び出すように機能させました。__new__
try:
しかし、これはハックのように見えます。確かに、これを行うためのより良い方法があるはずですか?
ありがとう。
- 私が使用したい理由は、クラスに割り当てられたいくつかの動的属性 (魔法の属性など)
__new__
を持つサブクラスのオブジェクトを返すことができるようにするためです。__int__
でこれを行うこと__init__
self.__class__
もできましたが、新しいクラスの内部構造が異なる場合は変更できません__init__
。ここでは、多重継承が原因です。
c# - 派生クラスで使用できない C# プロパティ
何が起こっているのかわかりません。次の基本クラスがあります。
そして、私はこの派生クラスを持っています:
なぜそのエラーが発生するのですか? 「'MyNamespace.MyRow' には 'Keys' の定義が含まれていません」. どちらのクラスもMyNamespace
名前空間にあります。this.Keys
内からandにアクセスしようとbase.Keys
しましたが、どちらも機能しませんMySubRow
。Keys
プロパティをpublic
inとしてマークしようとしましMyRow
たが、「修飾子 'public' はこのアイテムには無効です」というエラーが表示されました。これは、インターフェイスを実装する必要があるためだと思います。
google-app-engine - アプリ エンジン データストアから子の種類を選択する - 長所と短所
次のようにモデルを設定しています。
階層は次のとおりです: ユーザー > 日 > イベント (ユーザーには日があります。日にはイベントがあります。)
ユーザーがログインするとき、私は自分の日を選択したいと思います(日付ごとの範囲について)。そして、日ごとにイベントを取得したいと思います。今のところ、これらがリストに表示されているとしましょう。
親プロパティを使用して明示的なエンティティ グループを作成する必要がありますか? または、ユーザーの日に参照プロパティを追加し、日のイベントに参照プロパティを追加する必要がありますか?
各方法の長所と短所は何ですか? パフォーマンスの考慮事項? スケーラビリティの考慮事項? また、可能な限り最善の方法でこれを照会するにはどうすればよいでしょうか。
ありがとう!
objective-c - 「抽象」OCUnit テスト クラスを実装またはエミュレートする方法は?
継承階層で編成された多数の Objective-C クラスがあります。それらはすべて、子の間で共有されるすべての動作を実装する共通の親を共有します。各子クラスはそれを機能させるいくつかのメソッドを定義し、親クラスはその子によって実装/オーバーライドされるように設計されたメソッドに対して例外を発生させます。これにより、Objective-C が抽象クラスを明示的にサポートしていなくても、実質的に親が疑似抽象クラスになります (それ自体では役に立たないため)。
この問題の核心は、OCUnit を使用してこのクラス階層を単体テストしていることです。テストは同様に構造化されています。つまり、共通の動作を実行する 1 つのテスト クラスと、テスト対象の各子クラスに対応するサブクラスがあります。ただし、(実質的に抽象化された) 親クラスでテスト ケースを実行することには問題があります。これは、主要なメソッドがないと、ユニット テストが見事に失敗するためです。(5 つのテスト クラスで共通のテストを繰り返すという代替案は、実際には受け入れられる選択肢ではありません。)
私が使用してきた理想的ではない解決策は、(各テスト メソッドで) インスタンスが親テスト クラスであるかどうかを確認し、そうである場合は救済することです。これにより、すべてのテスト メソッドでコードが繰り返されることになり、単体テストが非常に粒度が高い場合、この問題はますます厄介になります。さらに、そのようなすべてのテストは引き続き実行され、成功として報告されるため、実際に実行された意味のあるテストの数が歪められます。
私が望むのは、OCUnit に「このクラスではテストを実行せず、その子クラスでのみ実行してください」というシグナルを送る方法です。私の知る限り、それを行う方法は(まだ)ありません+(BOOL)isAbstractTest
。実装/オーバーライドできる方法に似ています。最小限の繰り返しでこの問題を解決するためのより良い方法についてのアイデアはありますか? OCUnit には、この方法でテスト クラスにフラグを立てる機能がありますか?それとも、レーダーを提出する時が来ましたか?
編集:問題のテスト コードへのリンクは次のとおりです。簡潔にするためのマクロのif (...) return;
使用を含め、メソッドを開始するためにが頻繁に繰り返されていることに注意してください。NonConcreteClass()
c++ - テンプレート化された型とクラス階層に関する C++ 関数オーバーロードの解決
テンプレート化された関数を使用すると、さまざまな型を簡単に操作できます。
しかし、ある時点で、クラス階層でいくつかの特殊化を行いたいと考えています。
正確な型を渡すと、目的の特殊化された関数が呼び出されましたが、オーバーロード解決のルールは、に渡すとBase*
静的なアップキャストを実行するのではなく、一般的なテンプレート化されたバージョンを好むようです。Derived*
void detroy()
確かに、考えられるすべての派生型に対してオーバーロードされたすべての関数を作成できますが、保守性は低くなります。
Visual C++ 2008 を使用していますが、上記の問題を回避する方法はありますか?
php - PHP クラスはクラス ファイルを見つけますが、ファイル内のクラスではありません
あるファイルで抽象スーパークラスを定義し、別のファイルでサブクラスを定義しました。スーパークラス ファイルとスタック トレース レポートが含まれていることを確認する必要があります。
ただし、「extends」行に到達するとエラーが返されます: Fatal error: Class 'HTMLBuilder' not found in View/Markup/HTML/HTML4.01/HTML4_01Builder.php on line 7
.
少し前に、ファクトリを使用する別のクラス ツリーでこれを動作させました。ファクトリとコンシューマーの間にビルダー レイヤーを追加しました。ファクトリ レイヤーは、インクルードと依存関係に関してほぼ同じように見えました。
そのため、HTMLBuilder.php ファイルが正しく含まれていないか、正しく解釈されていないなどの愚かなことをしたに違いないと思います。
完全なスタック トレースは次のとおりです (パスはわずかに変更されています)。
問題のコードは次のとおりです。
親クラス (View/Markup/HTML/HTMLBuilder.php):
子クラス (View/Markup/HTML/HTML4.01/HTML4_01Builder.php):
c# - 階層オブジェクト モデルでの XML の使用 (または使用しない) に関するアドバイス
0/1 --> * 関係として自己参照する階層オブジェクト モデルを開発しています。parentID のないオブジェクトはルート要素です。parentID は、自己結合の外部キーでもあります。私の理解では、parentID を外部キーとして使用すると、子要素が見つかる可能性のある列のみがポイントされます --> これにより、その列のデータセット全体を反復処理する必要がありますか? これは、クラスター化インデックスを形成する必要があるシナリオですか? ....XML データ型を使用してすべての childrenID を 1 つのフィールドに格納し、そのドキュメントを読み込んでオブジェクトごとに参照するのは適切でしょうか? これを行うことで、少なくともオブジェクトの永続化レイヤーを簡素化し、トランザクションの記録をより詳細に制御できるようになります。
何かアドバイス?
java - あるJavaクラスが実行時に別のクラスを拡張するかどうかをテストする方法は?
a
のサブクラスであるかどうかをテストするにはどうすればよいb
ですか?