問題タブ [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.
php - PHP クラス階層を整理する最良の方法
私はほとんどのプロジェクトで使用してきたやや原始的なフレームワークを持っていますが、まだ解決できていない一般的な設計上の問題が頭に浮かびました。特定のアプリケーションについて、アプリケーション固有のクラス構造をフレームワークの構造から分離する必要がありますか、それともフレームワークの上に構築することはそれほど悪いことではありませんか?
たとえば、ベースの Controller クラスを持つフレームワークがあり、それをアプリケーションの特定の部分に拡張したとします。最も理にかなっている配置はどれですか?その理由は?
クラス構造 A:
- 直感的で、デバッグ時にソース ファイルを簡単に見つけることができます。
- ファイルの命名/ディレクトリ構造は、クラス階層を反映しています。
クラス構造 B:
- フレームワークのモジュールを維持し、簡単に交換/更新できます。
- ディレクトリ構造がいくらか複雑になり、ディレクトリ/ファイルの命名が常にクラス階層に従わなくなりました。
全体的には個人的な好みに帰着することはわかっていますが、どの方法を選択するかを決定する前に、すべての長所と短所を比較検討したいと思います. 実際の階層はどちらの場合も同じままであるため、実際にはクラスの命名とディレクトリ構造に帰着します。
c# - Entity Framework のクラスとインターフェイスの階層?
共通のインターフェイスを共有し、両方とも同じ基礎となるデータベース テーブルに格納されている 2 つの関連するクラスがあります。ただし、Entity Framework は 1 つの共通クラスを生成します。この 2 つの異なるクラスが本当に必要です。これを解決するにはどうすればよいですか? インターフェイスではなく基本クラスを使用するのが最善ですか? 1 つのテーブルにマップされた 2 つのクラスを提供するように EF モデルを変更するにはどうすればよいですか?
編集: AccountType プロパティはクラスのタイプを決定します。ユーザーまたはグループ。
簡単なコード:
.net - .NET でクラス階層を表示するツール
プロジェクトで特定のインターフェースを実装するすべてのクラス/インターフェースを表示できる方法/ツールはありますか? Eclipse (Java) では、コンテキスト メニューの [Open Type Hierarchy] オプションを使用します。これにより、選択した型を拡張する型の (きれいな) ツリーが表示されます。.NET で同じことを行うツールはありますか?
hibernate - Hibernate の具象クラス階層ごとのテーブル
具体的なクラス階層ごとのテーブルを使用してマップする必要がある次の Hibernate マッピングがあります。
つまり、データベースには2つのテーブルしかありません:
- 家 (id_property(PK)、住所、noOfRooms、totalArea、価格)
- 土地 (id_property(PK)、住所、面積、単価)
私が理解している限り、この場合、.save() を呼び出す前に ID を明示的に生成する必要があるため、私の質問は次のとおりです。参加すると継続的なドメインを形成します。
nhibernate - NHibernate-サブタイプの変更
NHibernateの行のサブタイプをどのように変更しますか?たとえば、CustomerエンティティとTierOneCustomerのサブクラスがある場合、CustomerをTierOneCustomerに変更する必要がありますが、TierOneCustomerは元のCustomerエンティティと同じID(PK)を持つ必要があります。
マッピングは次のようになります。
クラス階層モデルごとに1つのテーブルを使用しているので、plain-sqlを使用すると、識別子(CustomerType)のSQL更新の問題であり、タイプに関連する適切な列を設定します。NHibernateで解決策が見つからないので、ポインタをいただければ幸いです。
このユースケースを考慮してモデルが正しいかどうかも考えていますが、そのルートをたどる前に、そもそも上記のように実際に実行できることを確認したいと思います。そうでなければ、私はほぼ確実にモデルを変更することを考えます。
delphi - 「並列」クラス階層をリンクする方法は?
各クラスが特定のTComponentの子孫に対応する小さなクラス階層があります(たとえば、TComponent、TCustomAction、TMenuItemにそれぞれ対応する子孫TActionFrobberとTMenuItemFrobberを持つ基本クラスTDefaultFrobber)。今、私は次のようなファクトリ(?)関数が必要です。
if-elseカスケードまたはRTTIの代わりに仮想関数または同様のものを使用するためにこれを何らかの方法でリファクタリングできますか?
編集:今のところ私の解決策:
Cesar、Gamecat、mghieに感謝します。
.net - .NET オブジェクト階層 - イベントにするかしないか
あなたの仕事は、タスクの追跡をサポートする Project Plan クラス ライブラリを設計することです (MS Project の仕組みに似ています)。このクラス ライブラリには、Task
(とりわけ) オブジェクトがあります。
Task
オブジェクトにはEstimatedHours
( Double
)、StartDate
( DateTime
)、EndDate
( ) などのDateTime
プロパティがあります。Task
オブジェクトは、1 つの親オブジェクトTask
と複数の子オブジェクトを持つことができTask
ます。子を持つ (親である)のEstimatedHours
、StartDate
、およびEndDate
プロパティはTask
、直接の子のプロパティに依存します。親Task
のは、その子の中でStartDate
最も古いものです。StartDate
親はその子の最新Task
のものです。親のは、その子の の合計です。したがって、子を持つ でこれらのプロパティを変更することは無効です。EndDate
EndDate
Task
EstimatedHours
EstimatedHours
Task
親を持つタスクで、EstimatedHours、StartDate、または EndDate が変更されるユース ケースをどのように処理しますか? (親のプロパティはその子を反映しているため、子を変更する場合は、変更を適切に反映するために親のプロパティを調整する必要がある場合があります)
1 つのオプションは、各プロパティが変更されたときのイベントを作成することです。親Task
は、直接の子オブジェクトでこれらのイベントをリッスンし、Task
それらのイベントが発生したときに独自のプロパティに適切な変更を加えます。これは良いアプローチですか、それとももっと良い方法がありますか? どのようにしますか?
Task
オブジェクトがどのように見えるかについての基本的な考え方は次のとおりです。
c# - クラスメンバーを除くPOCOのシリアル化
POCO [Serializable]を作成したいのですが、クラス階層ツリー内の他のクラスメンバーは作成しません。フィールドに対してのみ機能する[NonSerialized]があることは知っていますが、それらを除外したり、POCOの[Serializable]を使用して特定のメンバーを選択したりする方法はありますか?
java - インターフェイスを実装するクラスとそのインターフェイスの間に関係はありますか?
このクラス階層を考えてみましょう:
Book extends Goods
Book implements Taxable
ご存知のように、サブクラスとそのスーパークラス (is-a) の間には関係があります。
Q: と の間に is-a のような関係はありBook
ますTaxable
か?
良い回答ですが、「is-a」は と の間の関係でもあるとおっしゃいましたBook
が、Taxable
「 is-a」はクラス間の関係であり、インターフェイスはクラスではありません。
.net - どの.NETクラスが特定のインターフェースを実装しているかを見つける方法はありますか?
たとえば、IListまたはIDictionaryを実装するための.NETオプションが何であるかを確認したい場合です。たとえば、MSDNドキュメントでそれを見つける方法はありますか?