問題タブ [object-oriented-analysis]
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 - dbでooを実行する一般的な方法は何ですか?
ここに状況があります.... ... DBInterface に DBInterface を実装する DBManager があり、4 つのメソッドを取得しました。
DBCmd オブジェクトは SQL ステートメントの生成を担当し、DBCmd には SQL ステートメント内のオブジェクトが必要です。
流れは次のようになります。
しかし、他のテーブルに関連するいくつかのオブジェクトを取得すると、問題が発生します。たとえば、顧客には購入レコードがあり、どの購入レコードには多くのアイテムがあります...
では、read メソッドで何をすればよいのでしょうか。顧客に関連するすべての記録を読む必要がありますか?? 購入レコード内のすべてのアイテムもループする必要がありますか? はいの場合、顧客を読み取るときに3つのテーブルをクエリする必要がありますが、表示する必要のないテーブルもある....それはリソースを無駄にします...
そして、別の解決策を思いつきました。DBCmd の新しいセットを作成して、関連する DB 項目を取得できるようにします。たとえば、次のようになります。
しかし、この「解決策」では、いくつかの問題がありました。顧客オブジェクトとの関係を失うことです...はい、すべてのレコードを読み戻すことができ、顧客オブジェクトを取得できます基本的に購入レコードについて何も知りません。 ...
次のようなことを私に依頼する人もいるかもしれません:
それは機能しますが、オブジェクト構造にdbの間に強い関係を持たせたくありません....そのため、DBCmdのものを考え出しました...
では、すべてが非常にカップリングしているように見えますが、どうすれば解決できますか? ありがとうございました。
c# - 設計時データのリストを保存する方法
私のデータには次の構造があります。
カテゴリには、名前、説明、および一意の整数 ID があります。
例えば
リストは設計時にわかっているので、リストビューにバインドする必要があります。説明をリストビューの各行の表示テキストとしてバインドし、値 (名前と ID を持つオブジェクトまたは列挙型) を対応する値メンバーとしてバインドしたいと思います。
この情報を保存する最良の方法は何ですか? 多数の列挙を作成する必要がありますか? または、「Ford:Mondeo:Some Text: 12324」などの区切り文字列を使用してデザイナー モードでリストビューに直接バインドし、必要に応じて解析および抽出する必要があります。おそらく、データを id/description 値のカスタム属性を持つ厳密に型指定された列挙型に格納する方がよいでしょう。たとえば、文字列が説明で CarType がプロパティを持つクラスである辞書にバインドします: Make(Ford):enum, Model(Modeo ):enum と Id(12324):int?
data-modeling - OO パラダイムにおけるサブタイプ関係
クラス 'Human' -->(1..*) 'Human' を考えてみましょう。ここで、Human はスーパータイプです。「男性」、「女性」、「SociallyPathologicalMale」などのサブクラスがあるとします。基本的な関連 b/w 2 エンティティは共通のままで、サブタイプは関連の名前と制約を定義しますが、基本的な関係は依然として m:nb/w 2 です。人間の実体。例:-
'男性' -->(1:1)('妻'(関係名)) '女性'
「女性」-->(1:1)(「夫」)「男性」
'SociallyPathologicalMale'-->(1:0)('友人') '男性'
[2011 年 12 月 13 日編集] - Java で実装する必要がある場合、関連付けの再利用を可能にするベスト プラクティスにはどのようなものがありますか?
基本クラスから始めるとしましょう:-
何かのようなもの
人間 (または他のサブクラス) で関係フィールドが再定義されているという事実は、構造的に強制可能です。つまり、サブクラスを定義している間、関係を定義することは必須です。Javaでそのような種類の構造を作成することは可能ですか?? これを簡単にできる言語は他にありますか??
oop - オブジェクト指向設計
A と B の 2 つの csv ファイルがあります。A はマスター リポジトリです。これらのファイルを読み取り、B のレコードを A にマップし、マップされたレコードを別のファイルに保存する必要があります。レコードを保持するクラスは、たとえば Record です。一致したレコードを保持するクラスは、たとえば RecordMatch です。
マッピング シナリオは次のようになります。まず、B の各レコードに対して、A のレコードが州、都市、郵便番号を使用してフィルター処理されます。このようにフィルタリングされた A のレコードは、次に B のレコードと比較されます。この比較は、名前フィールド間のものであり、ファジー文字列アルゴリズムを使用した最適一致比較です。最適な一致が選択され、保存されます。
文字列マッチング アルゴリズムにより、一致率が示されます。したがって、すべての試合から最高の結果を選択する必要があります。
シナリオを説明するために最善を尽くしたので、設計の問題に移ります。私の最初の設計は、次のような Mapper クラスを作成することでした。
しかし、デザインを見ると、単にいくつかのメソッドに対するクラス ラッパーのように見えます。OO のデザインは見当たりません。また、Match() は Mapper クラスよりも Record クラスに属していると感じました。
しかし、別の見方をすると、このクラスはリポジトリ パターンに似たものを実装しているように見えました。
私が考える別の方法は、Mapper クラスを保持し、Match() メソッドを Record クラスに移動することです。次のようになります。
今、私はこの単純なシナリオで完全に混乱しています。このシナリオで理想的な OO 設計とはどのようなものでしょうか?
java - 動物の行動を記述するには、どのオブジェクト指向構造を使用すればよいですか?
Java の課題があり、教授から LeJOS NXT を使用して、特定の動物の行動をシミュレートするロボットを作成するように求められています。私はドラゴンを開発することにしました。これまでに思いついたすべての可能な動作は次のとおりです。
- 障害物に近すぎると向きを変える。
- バッテリーが少なくなるとスリープ状態になります。
- 触れたら物を押す。
- 明るすぎる場合は、暗い場所を見つけてください。
- 等
1つのクラスで順番に開発するか、すべてのドラゴンの動作を異なるクラスに分割するかがわからないため、現在かなり混乱しています。以下の私の説明をご覧ください。
次のように 1 つのクラス内にすべてを記述する代わりに:
Dragon.java
ただし、コースはより多くの OOP スキルを習得するのに役立つことを目的としているため、よりオブジェクト指向に見えるようにしたいと考えています。したがって、私の 2 番目のオプションは、Dragon の Behavior 抽象クラスを次のように拡張するアクション クラスを作成することです (大まかに):
Dragon.java
DragonBehaviors.java
TurnAround.java
上記のコードはおおまかに下書きです。それに注目しないでください。最終的に、上記の OO 構造に関する私の考えが妥当かどうかを尋ねたいと思います。そうでない場合は、1 つのクラスですべてを開発する方がはるかに簡単ですが、OOP とは何の関係もありません。コードを仕上げるためのグループ メンバーも何人かいるので、クラスを共有して OOP で開発するとよいと思います。
この場合、どちらに行けばいいですか?
すべてのコメントに感謝します (:
inheritance - スーパークラスにはサブクラス参照があります
スーパークラスのサブクラス参照用にゲッターとセッターを配置する必要がある状況があります。それが良い習慣かどうかを知る必要がありますか?
私は以下のコードを与えました。
java - パターンの設計 - 入力パラメーターを検証し、ホルダー クラス、J2SE (フレームワークなしなど) を作成します。
シナリオ: オブジェクトに関するいくつかの入力パラメーターを受け取ります。例: Course
コースには、講師名、受講者数、コース時間、部屋番号などがあります。
入力を検証し (生徒数 > 0、午前 9 時 < 時間 < 午後 9 時など)、オブジェクトを作成する必要があります。無効な入力のエラーの原因を返す必要があります。
2つのアプローチを考えることができました
1) 静的メソッドを使用して別の Validator クラスを作成し、
- 入力を検証します (validate メソッドは true、または VALID、INVALID_TIME、INVALID_STUDENT_NUMBER などの列挙型を返します)。
- 入力が有効な場合、Bean をインスタンス化します。
短所:
- 入力値を検証する前に処理する必要がある場合、上記のパターンでは、入力が有効な場合は 2 回、Validator クラスで 1 回、Bean セッターの前で 1 回処理を行うことになります。無効な場合、validate メソッドはエラーのソースを返す必要があるため、Bean オブジェクトを返すことはできません。
2) Bean クラス自体の内部に検証メソッドを配置し、無効な入力に対して例外を返します。さまざまな種類の例外を通じて、エラーの原因を追跡します。
短所:
- 複数のカスタム例外を作成する必要があります。
- ホルダーオブジェクト自体の中に検証メソッドを含めるのは正しい方法ですか??
いくつかの設計パターンを調査しましたが、関連はありませんでした。
上記のアプローチの長所と短所、および従うべきより良い方法を理解するのを手伝ってください。
uml - このユースケース図によると、このクラス図は正しいですか?
このユースケース図から、一般化と、おそらく何らかの形の集約または構成を示すクラス図を作成しようとしています。意図したシステムは、facebook ソーシャル ネットワーキングに似たサイト/アプリケーションになることです。
ユースケース図:
クラス図:
クラス図に何か問題があると確信しています。誰か助けてください、ありがとう。
java - インタビューの質問: 数独のオブジェクト指向デザインを作成する
私は2次元配列を持っていると答えました。
そして、私は3つの機能を持っています
- 水平状態を確認するためのものです。
- 垂直状態をチェックする別の機能
- もう 1 つは 3*3 ブロックの状態をチェックします。
しかし、彼は満足していません。この質問に適切な答えを出せる人はいますか?
私の質問に関連するこのスタック オーバーフロー リンクを見つけました。 プログラミング設計のヘルプ - Sudoku Solver プログラムを構築する方法は? .
しかし、インタビュアーが私に期待するのと同じものである、適切なオブジェクト指向設計 (クラス、継承、その他の詳細など) が必要です。