問題タブ [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.

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

php - PHP クラス階層を整理する最良の方法

私はほとんどのプロジェクトで使用してきたやや原始的なフレームワークを持っていますが、まだ解決できていない一般的な設計上の問題が頭に浮かびました。特定のアプリケーションについて、アプリケーション固有のクラス構造をフレームワークの構造から分離する必要がありますか、それともフレームワークの上に構築することはそれほど悪いことではありませんか?

たとえば、ベースの Controller クラスを持つフレームワークがあり、それをアプリケーションの特定の部分に拡張したとします。最も理にかなっている配置はどれですか?その理由は?

クラス構造 A:

  • 直感的で、デバッグ時にソース ファイルを簡単に見つけることができます。
  • ファイルの命名/ディレクトリ構造は、クラス階層を反映しています。

クラス構造 B:

  • フレームワークのモジュールを維持し、簡単に交換/更新できます。
  • ディレクトリ構造がいくらか複雑になり、ディレクトリ/ファイルの命名が常にクラス階層に従わなくなりました。

全体的には個人的な好みに帰着することはわかっていますが、どの方法を選択するかを決定する前に、すべての長所と短所を比較検討したいと思います. 実際の階層はどちらの場合も同じままであるため、実際にはクラスの命名とディレクトリ構造に帰着します。

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

c# - Entity Framework のクラスとインターフェイスの階層?

共通のインターフェイスを共有し、両方とも同じ基礎となるデータベース テーブルに格納されている 2 つの関連するクラスがあります。ただし、Entity Framework は 1 つの共通クラスを生成します。この 2 つの異なるクラスが本当に必要です。これを解決するにはどうすればよいですか? インターフェイスではなく基本クラスを使用するのが最善ですか? 1 つのテーブルにマップされた 2 つのクラスを提供するように EF モデルを変更するにはどうすればよいですか?

編集: AccountType プロパティはクラスのタイプを決定します。ユーザーまたはグループ。

簡単なコード:

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

.net - .NET でクラス階層を表示するツール

プロジェクトで特定のインターフェースを実装するすべてのクラス/インターフェースを表示できる方法/ツールはありますか? Eclipse (Java) では、コンテキスト メニューの [Open Type Hierarchy] オプションを使用します。これにより、選択した型を拡張する型の (きれいな) ツリーが表示されます。.NET で同じことを行うツールはありますか?

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

hibernate - Hibernate の具象クラス階層ごとのテーブル

具体的なクラス階層ごとのテーブルを使用してマップする必要がある次の Hibernate マッピングがあります。

つまり、データベースには2つのテーブルしかありません:

  • 家 (id_property(PK)、住所、noOfRooms、totalArea、価格)
  • 土地 (id_property(PK)、住所、面積、単価)

私が理解している限り、この場合、.save() を呼び出す前に ID を明示的に生成する必要があるため、私の質問は次のとおりです。参加すると継続的なドメインを形成します。

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

nhibernate - NHibernate-サブタイプの変更

NHibernateの行のサブタイプをどのように変更しますか?たとえば、CustomerエンティティとTierOneCustomerのサブクラスがある場合、CustomerをTierOneCustomerに変更する必要がありますが、TierOneCustomerは元のCustomerエンティティと同じID(PK)を持つ必要があります。

マッピングは次のようになります。

クラス階層モデルごとに1つのテーブルを使用しているので、plain-sqlを使用すると、識別子(CustomerType)のSQL更新の問題であり、タイプに関連する適切な列を設定します。NHibernateで解決策が見つからないので、ポインタをいただければ幸いです。

このユースケースを考慮してモデルが正しいかどうかも考えていますが、そのルートをたどる前に、そもそも上記のように実際に実行できることを確認したいと思います。そうでなければ、私はほぼ確実にモデルを変更することを考えます。

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

delphi - 「並列」クラス階層をリンクする方法は?

各クラスが特定のTComponentの子孫に対応する小さなクラス階層があります(たとえば、TComponent、TCustomAction、TMenuItemにそれぞれ対応する子孫TActionFrobberとTMenuItemFrobberを持つ基本クラスTDefaultFrobber)。今、私は次のようなファクトリ(?)関数が必要です。

if-elseカスケードまたはRTTIの代わりに仮想関数または同様のものを使用するためにこれを何らかの方法でリファクタリングできますか?

編集:今のところ私の解決策:

Cesar、Gamecat、mghieに感謝します。

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

.net - .NET オブジェクト階層 - イベントにするかしないか

あなたの仕事は、タスクの追跡をサポートする Project Plan クラス ライブラリを設計することです (MS Project の仕組みに似ています)。このクラス ライブラリには、Task(とりわけ) オブジェクトがあります。

TaskオブジェクトにはEstimatedHours( Double)、StartDate( DateTime)、EndDate( ) などのDateTimeプロパティがあります。Taskオブジェクトは、1 つの親オブジェクトTaskと複数の子オブジェクトを持つことができTaskます。子を持つ (親である)のEstimatedHoursStartDate、およびEndDateプロパティはTask、直接の子のプロパティに依存します。親Taskのは、その子の中でStartDate最も古いものです。StartDate親はその子の最新Taskのものです。親のは、その子の の合計です。したがって、子を持つ でこれらのプロパティを変更することは無効です。EndDateEndDateTaskEstimatedHoursEstimatedHoursTask

親を持つタスクで、EstimatedHours、StartDate、または EndDate が変更されるユース ケースをどのように処理しますか? (親のプロパティはその子を反映しているため、子を変更する場合は、変更を適切に反映するために親のプロパティを調整する必要がある場合があります)

1 つのオプションは、各プロパティが変更されたときのイベントを作成することです。親Taskは、直接の子オブジェクトでこれらのイベントをリッスンし、Taskそれらのイベントが発生したときに独自のプロパティに適切な変更を加えます。これは良いアプローチですか、それとももっと良い方法がありますか? どのようにしますか?

Taskオブジェクトがどのように見えるかについての基本的な考え方は次のとおりです。

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

c# - クラスメンバーを除くPOCOのシリアル化

POCO [Serializable]を作成したいのですが、クラス階層ツリー内の他のクラスメンバーは作成しません。フィールドに対してのみ機能する[NonSerialized]があることは知っていますが、それらを除外したり、POCOの[Serializable]を使用して特定のメンバーを選択したりする方法はありますか?

0 投票する
8 に答える
5392 参照

java - インターフェイスを実装するクラスとそのインターフェイスの間に関係はありますか?

このクラス階層を考えてみましょう:

  • Book extends Goods
  • Book implements Taxable

ご存知のように、サブクラスとそのスーパークラス (is-a) の間には関係があります。

Q: と の間に is-a のような関係はありBookますTaxableか?

良い回答ですが、「is-a」は と の間の関係でもあるとおっしゃいましたBookTaxable「 is-a」はクラス間の関係であり、インターフェイスはクラスではありません。

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

.net - どの.NETクラスが特定のインターフェースを実装しているかを見つける方法はありますか?

たとえば、IListまたはIDictionaryを実装するための.NETオプションが何であるかを確認したい場合です。たとえば、MSDNドキュメントでそれを見つける方法はありますか?