問題タブ [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.
python - 複雑なクラス階層の簡素化
コードの再利用を最大化することを目標に、Python コード用にかなり複雑なクラス階層を作成しました。次のようになります。
クラス階層のリーフのみがオブジェクトにインスタンス化されます。これは、コードの再利用を最大化するという目的には役立ちますが、コード自体は複雑で (一部のクラスには 20 ほどのメソッドがあります)、多くのレベルを考えると、何かが実装されている場所を見つけるのに時間がかかる可能性があります。
機能のチャンクを引き出して、その機能を別のオブジェクトに入れようとしましたが、ほとんどすべての機能が共通のデータに依存しているため、これを行う良い方法が見つかりませんでした. つまり、一部のコードを別のオブジェクトに移動できますが、必要なデータを取得するために大きな複雑な階層を参照する必要があるため、実際にはカプセル化されていません。
これをより管理しやすくする方法について誰かアドバイスはありますか?
delphi - Delphi の既存のクラス階層にインターフェイスを導入する
クラス階層の祖先を TObject から TInterfacedObject に変更して、継承チェーンのさらに下にあるインターフェイスを実装できるようにすると、何か副作用はありますか?
私は Delphi で数年間プログラミングを行ってきましたが、インターフェイスに遭遇したことはありません。他の言語でそれらを使用することに慣れました。再び Delphi プロジェクトに参加したので、それらを利用したいと思いますが、Java や C# とは動作が少し異なることはわかっています。
language-agnostic - テーブルの設計とクラス階層
うまくいけば、誰かが例、またはおそらくいくつかの提案された読書を通じて、この問題に光を当てることができます. クラス階層の等価性の後にテーブルをモデル化するための最良の設計アプローチは何だろうと思っています。これは、例を通して最もよく説明できます。
さて、このクラス階層と同期するためにテーブルをモデル化するとき、私は非常に似たものを使いました:
私が抱えている問題は、各Card
レコードを、対応するテーブルの詳細を含むレコードに関連付ける方法を見つけようとすることです。具体的には、どのテーブルを調べる必要があるかを判断する方法です。
関連するテーブルの名前を保持するためにVARCHAR
列を追加する必要がありますか? Card
それが私の仲間と私が到達した唯一の解決策ですが、それはあまりにも「汚い」ようです. ここでは、設計を拡張可能に保つことが重要であり、新しいサブクラスを簡単に追加できるようにします。
誰かがクラス/テーブル階層をミラーリングするクリーンな方法を示す例またはリソースを提供できれば、それは最も高く評価されます.
oop - イベントクラスの階層を改善するにはどうすればよいですか?
スタックオーバーフローチャットのXMPPインターフェイスでは、チャットからのJSONフィードを解析し、送信されたメッセージ、送信された編集、ユーザーのログインまたはログアウトなど、すべてのチャットイベントに対してRubyオブジェクトを生成しています。 XMPPユーザーがStackOverflowチャットアカウントで認証できるようにするために、「/help」や「/auth」などの「コマンド」がXMPPサーバーに送信されます。
私はこれらのクラスを、論理的に理にかなっていると思う階層に設定しました。
私の質問は2つあります。まず、これらのイベントをインスタンス化するための最良の方法は何ですか?私が現在行っているのは、巨大なswitch
ステートメントを使用してJSONイベントを解析することです-まあ、それはルビーなのでcase
ステートメントです-そして、それはまだ巨大ではありませんが、私がこのように続けるとそうなります:
しかし、私はそれを処理するためのより良い方法がなければならないと思います!のようなものSOChatEvent.createFromJSON( json_data )
...しかし、適切なサブクラスのオブジェクトが特定の応答に応答して作成されるようにコードを構造化するための最良の方法は何event_type
ですか?
第二に、私はまだ実際にはantサブクラスを使用してSOXMPPUserCommand
いません。現在、すべてのコマンドはそれ自体の単なるインスタンスであり、そのクラスには、コマンドの正規表現に基づいて切り替わるSOXMPPUserCommand
単一のメソッドがあります。execute
ほぼ同じ問題-私はより良い方法があることを知っています、私はただ最良の方法が何であるかわかりません:
と:
私はこれを行うためのより良い方法があることを知っていますが、それが具体的に何であるかはわかりません。SOXMPPUserCommand
フォールのサブクラスを作成する責任はSOXMPPUserCommand
それ自体にあるべきですか?すべてのサブクラスを親に登録する必要がありますか?新しいクラスが必要ですか?
このような階層構造でサブクラスのオブジェクトをインスタンス化するための最良の方法は何ですか?
java - Eclipseのタイプ階層ビューでインターフェイスを表示できますか?
Eclipseのインターフェイスから派生したクラスの型階層を確認すると、インターフェイスが表示されません。タイプ階層でインターフェースを表示するようにEclipseを構成する方法はありますか?または、この情報を表示する他の方法はありますか?
java - @Override を使用するメソッドがあります。宣言するインターフェイスを確認するにはどうすればよいですか?
@Override アノテーションが付けられたメソッドを使用しています。これが Ctrl-t を使用しているクラスをオーバーライドする場合は、宣言している型に移動できます。これがインターフェイスの場合、宣言に到達する方法はありますか?
同様の別の質問をしましたが、この質問は私のニーズにより正確です。
ruby - Ruby:オブジェクトoがクラス階層の祖先としてクラスCを持っているかどうかをどのように識別しますか?
Rubyでは、オブジェクトoがクラス階層の祖先としてクラスCを持っているかどうかを、任意のメソッドを使用して識別できますか?
以下に、仮想的な方法を使用しhas_super_class?
てそれを実現する例を示します。これを実際にどのように行う必要がありますか?
期待される出力:
java - Spring フレームワークのエンティティ オブジェクトに基づいて、異なるサービス API を呼び出す
基本クラス「アクティビティ」から継承するさまざまなエンティティ クラス (ActivityA、ActivityB、ActivityC ...) がある、Spring フレームワークを使用して設計された Web サービス アプリケーションに取り組んでいます。
これで、基本クラスとすべての子クラスのサービス レイヤーにさまざまなサービス API を記述しました。(名前を付けるには、ActivityService、ActivityAService、ActivityBService、ActivityCService ..)
各アクティビティで同様に動作するすべてのメソッドは、基本クラス (ActivityService) のサービス API に配置され、それぞれのサービスに残ります。
私は通常、自分が作業しているオブジェクトを知っており、それぞれのサービス API を呼び出します。しかし、特定のケースでは、アクティビティ オブジェクトがあり (どの子クラスかがわからない)、すべてのエンティティ オブジェクトに対して異なるメソッドを作成する必要があります。
問題: 方法はありますか?私が持っているエンティティ オブジェクトに基づいて異なるサービスを呼び出すことができます (私が持っているオブジェクトはサービスではなくエンティティであり、サービス オブジェクトを取得するためにハード コーディングを行うことはできません)
php - PHP用のオブジェクトブラウザ
PHPで記述された大量のコードを閲覧したいので、さまざまなクラスとそのメソッドをグラフィカルに表現すると便利です。
これを可能にする(無料の)ツールを知っていますか?
c++ - vtableダンプの解読
私はC++で仮想継承を「遊んで」おり、クラスオブジェクトがどのように配置されているか知りたいです。私はそれらの3つのクラスを持っています:
(私はそれらが正しいと思います:p)
私-fdump-class-hierarchy
はg++で使用しました、そして私はこれを手に入れました
(int (*)(...))-0x00000000000000010
さて、それらは一体何C::_ZThn16_N1C6setIntEi and (int (*)(...))0
ですか?誰かがダンプを説明できますか?
ありがとうございました。