タグ付けされた質問 「object-oriented」

システムを、モジュール方式で制御および操作できるオブジェクトのセットとしてモデル化できるようにする方法論

4
.NETプログラミングとPOCOクラス
変更が必要なアプリケーションについて熟考しているときに、今夜は考えていました。エンティティフレームワークエンティティはPOCO(プレーンな古いCLRオブジェクト)であり、ASP.NET MVCで使用されるモデルも通常POCOです。これは基本的にプロパティだけを意味し、メソッドは意味しません。 現在、OOプログラミングでは、通常、オブジェクトにその機能とメソッドを含む機能をカプセル化できます。これにより、ポリモーフィズムが発生します。使用されるPOCOクラスの台頭により、汎用リポジトリーなどの設計パターンがより一般的になっています。以前はオブジェクトに独自のCRUD操作があったはずでしたが、現在はリポジトリにあります。 これはオブジェクトからの進化であり、オブジェクトからCRUD操作を削除してそれらを分離できるようにしたのですか、それとも過去にCRUD操作がオブジェクトレベルにあるはずがなく、私が間違っていたのでしょうか?一体、おそらく両方とも完全に合法であり、常にそうでした。それは私が考えさせられた観察に過ぎないので、私は他の意見を求めるだろうと考えました。

2
DDDを実行するときにエンティティと値オブジェクトをモックする必要がありますか?
読んだ後、いくつかの 記事についてNewableを対注射のオブジェクトとどのようにこれらの概念は、DDDのサービス、エンティティと値オブジェクトに関連し、私は特に私のユニットテストで私のコードでnewablesの使用に関するいくつかの疑問が残りました。 Newableの主な候補は、EntitiesオブジェクトとValueオブジェクトでした。つまり、これらの依存関係を他のオブジェクトに注入する代わりにnew、これらのオブジェクトのインスタンスだけを作成して、コードで直接使用する必要があります。 ただし、適切なDDDプラクティスでは、エンティティと値オブジェクトに適切であると見なされた場合に責任を割り当てることを推奨しています。そのため、エンティティと値オブジェクトには、深刻なビジネスロジックが含まれなくなります。 ここで、サービスがエンティティまたは値オブジェクトで動作する場合、エンティティまたは値オブジェクトをモックしてサービスにモックを渡す必要があります(モックには、interface推奨されているように見える値オブジェクトまたはエンティティのが必要です)? またはnew、エンティティ/値オブジェクトだけを具体的な実装をサービスに渡して、1つのユニットのみをテストするというユニットテストの原則に違反する必要がありますか?

4
クラスのすべてのオブジェクトを追跡する
私はオブジェクト指向プログラミングが初めてなので、この問題に遭遇し続けます。(私はJavaでプログラミングしています)このような基本的な問題のように思われるので、私はこれについて尋ねるのに少し消極的でしたが、それに関する情報や質問についてここで見つけることはできません。私が(非常に基本的なレベルで)読んだ教科書は、この問題に触れています: 多くの場合、作成されたクラスのすべてのオブジェクトを追跡して、さまざまな目的でそれらを反復処理する必要があります。彼らは私が現在プログラムを書いているように、多くのオブジェクトは他のオブジェクトからのみ参照されます。つまり、それらすべてを参照する配列やコレクションはありません。 これはOOPの非常に基本的な必要性のように思われるので、これを行うにはかなり制度化された簡単な方法があるはずだと思います。クラスのすべてのオブジェクトの個別のリストを保持することは通常の習慣ですか? 静的配列または静的コレクションについて考えました。コンストラクターを介して、作成されたすべての新しいオブジェクトが追加されます。ただし、コンストラクターは継承されないため、これはサブクラスでは機能しません。 この質問には1つの簡単な答えがないかもしれません。誰かがこの問題について少し教えてくれることを願っています。ここで中心的な知識が不足しているような気がします。

6
インターフェイスと抽象メソッドのみを持つ抽象クラスの間に違いはありますか?
抽象クラスがあり、このクラスに抽象メソッドのみがあるとします。この抽象クラスは、同じメソッドのみを持つインターフェースとは異なりますか? 私が知りたいのは、抽象的メンバーのみを持つ抽象クラスと同等のインターフェイスの間に、哲学的、客観的、および基礎となるプログラミング言語の実装に違いがあるかどうかです。

4
Perlのプログラミングスタイル
私はJavaで作業しているため、基本的にはコーディング中にOOPパラダイムを使用しています。私はPerlで仕事を始めようとしていて、Perl開発者が従うパラダイムは何だろうと思っていました。wikiでは、多くのパラダイムをサポートしていると述べていますが、スクリプト言語であるため、これを理解しているとは思いません。 だから私の質問は、Javaで慣れ親しんだオブジェクト指向パターンはPerlの慣用句ですか?それとも効果的なPerlを書くためにデザインスタイルに大幅な変更が必要ですか? 注:これはPerlを批判する問題ではありません。私は実際にはPerlで作業する必要があり、現在のプログラミング方法がどのように変わるかを理解したいと思います。

3
メソッドのパラメーター型、戻り値の型、およびプロパティ型の具体性に関する規則
少し前に、メソッドパラメータの型、戻り値の型、およびプロパティの型の具体性についての「経験則」を読みましたが、覚えていません。 それはあなたの戻り値の型をできるだけ具体的にそしてあなたのパラメータ型をできるだけ抽象的に保つことについて何かを言った...またはその逆 実際に良いアドバイスなのか悪いアドバイスなのかはわかりませんので、ご自身の考えがあればコメントしてください。 乾杯。

2
「コマンド」と「複合」を組み合わせて時間遅延をシミュレートするにはどうすればよいですか?
学習課題(私は学校にいない-何か新しいことを学ぼうとしている老人)として、伝播遅延を組み込んだ論理ゲートシミュレーションを記述しようとしています。また、ユーザーはゲートをグループ化して、より高レベルのオブジェクトを作成できる必要があります。 問題にデザインパターンを適用したいのですが、苦労しています。 Head First Design Patternsを読んでいますが、コマンドパターンは、遅延のある回路を通る電気パルスをシミュレートするのに適した方法であることがわかりました。また、複合パターンはネストされたユニットをシミュレートするための優れた方法であることがわかります。2つを混ぜる方法がわかりません。 つまり、ゲートをループすると、ゲート「x」が発火するはずです。15ナノ秒の遅延があるので、現在のゲーム時間から15 nsのタイムスタンプでコマンドを作成します。ディスパッチャーはどこですか?ダイナーの例では、コマンドが「注文」であるため、ウェイトレスとコックはそれぞれコマンドをディスパッチし、遅延を導入するオプションがあります。「複合」ゲートがある場合、独自のディスパッチャーも持っていますか?キューを管理するためにシングルトンを使用する必要がありますか? 私は見つけたものを読みましたが、それでも正しい方向へのプッシュが必要です。 /programming/2015549/using-command-design-pattern /programming/12016314/client-server-command-design-pattern-with-variable-delays /programming/10560892/composite-of-commands-design-pattern /programming/8874705/how-can-i-calculate-propagation-delay-through-series-of-combinational-circuits-u

2
「必要なものだけを要求する」インターフェースの原則はありますか?
基本的に「必要なものだけを尋ねる」というインターフェースの設計と消費の原則を使用するようになりました。 たとえば、削除できるタイプがたくさんある場合は、Deletableインターフェイスを作成します。 interface Deletable { void delete(); } 次に、ジェネリッククラスを記述できます。 class Deleter<T extends Deletable> { void delete(T t) { t.delete(); } } コードの他の場所では、クライアントコードのニーズを満たすために可能な限り小さな責任を常に求めます。したがって、を削除するだけでよい場合Fileでも、Deletableではなくを要求しますFile。 この原則は常識であり、すでに受け入れられている名前ですか?物議を醸していますか?それは教科書で議論されていますか?

11
OOPで画像のサイズを変更できる必要がありますか?
私はImageエンティティを持つアプリを作成していますが、各タスクの責任を決定するのにすでに苦労しています。 最初に私はImageクラスを持っています。パス、幅、その他の属性があります。 次にImageRepository、単一のテスト済みメソッドで画像を取得するためのクラスを作成しましたfindAllImagesWithoutThumbnail()。 しかし今、私もできるようにする必要がありますcreateThumbnail()。誰がそれに対処すべきですか?ImageManagerアプリ固有のクラスになるクラスを考えていました(選択したサードパーティの画像操作の再利用可能なコンポーネントもあり、私はホイールを再発明していません)。 それとも、Imageサイズ変更自体を行うには0Kでしょうか?または聞かせてImageRepositoryとImageManager同じクラスで? どう思いますか?

5
OOP:クラスベースのデザインがインターフェイスベースのデザインよりも優れている状況にはどのようなものがありますか?
JDOMのウェブサイトを読んでいました 。 JDOM APIがインターフェイスではなく具象クラスで定義されているのはなぜですか? Jason Hunterは、JDOMのインターフェースベースのAPIに対する引数を要約しています。 インターフェースではすべてがファクトリーになり、要素を追加するだけでなく新しいドキュメントに「インポート」する必要があり、長期的なシリアル化などの機能は保証されず、リストは続きます。 実際にインターフェースから始めました。いくつかの同僚へのリリース前のレビュー中に、具体的なクラスを試すべきフィードバックを受け取りました。私たちはそうしました、そしてデザインはそれのためにはるかに優れていました。 私は初心者デザイナーです。私が今までについて聞いたことがすべてのアドバイスをさに対して助言具象クラスを使用した設計を使用しました。 特定の場所で適切なクラスを使用している場合があります。デザインで具象クラスを使用しても問題ない、一般的なクラスの問題はありますか?

5
継承を停止するのはいつですか?
むかしむかし、継承についてStack Overflowで質問しました。 私はチェスエンジンをOOPファッションで設計すると言った。だから私はピースの抽象クラスからすべてのピースを継承しますが、継承はまだ続きます。コードで表示させてください public abstract class Piece { public void MakeMove(); public void TakeBackMove(); } public abstract class Pawn: Piece {} public class WhitePawn :Pawn {} public class BlackPawn:Pawn {} プログラマーは私の設計を少しエンジニアリングよりも見つけており、色付きのピースのクラスを削除し、以下のようなプロパティメンバーとしてピースの色を保持することを提案しました。 public abstract class Piece { public Color Color { get; set; } public abstract void MakeMove(); public abstract void …

2
どのオープンソースPHPプロジェクトに「完璧な」OOPデザインがありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前休業。 私はOOPの初心者であり、例を挙げて学ぶのが一番です。 この質問は、コーディングのベストプラクティスを学ぶためにどのScalaオープンソースプロジェクトを勉強すべきかと似ていますが、PHPであると言えます。 私はSymfonyが最高の「アーキテクチャ」(それが正確に何を意味するのか私が知っているふりはしません)だけでなく、Doctrine ORMを持っていると聞きました。これらのプロジェクトのソースコードを読んだり、使用されているパターンを推測したり、新しいトリックを学んだりするのに何ヶ月も費やす価値はありますか? Zendのコードベースを同化して好むWebページの数が同じであることを確認しました(必要と思われる場合はリンクを提供します)。 ベテランのOOP開発者が喜びの涙を流すような他のプロジェクトを知っていますか? ここでは、実用性と使用範囲はまったく問題ではないことを付け加えておきます-ただやりたいだけです。 私よりも開発者によって優れていると思われるコードベースを持つプロジェクトを選択してください。 プロジェクトの機能を実現するコードを記述します。 結果を比較し、わからないことを学ぶようにしてください。 基本的に、学術的関心のコードベース。何かおすすめはありますか?


7
メソッドがfalseを返すかどうかの確認:結果を一時変数に割り当てるか、メソッド呼び出しを条件付きで直接配置しますか?
ifステートメントでtrueまたはfalseの値を返すメソッドを呼び出すのは良い習慣ですか? このようなもの: private void VerifyAccount() { if (!ValidateCredentials(txtUser.Text, txtPassword.Text)) { MessageBox.Show("Invalid user name or password"); } } private bool ValidateCredentials(string userName, string password) { string existingPassword = GetUserPassword(userName); if (existingPassword == null) return false; var hasher = new Hasher { SaltSize = 16 }; bool passwordsMatch = hasher.CompareStringToHash(password, existingPassword); return …

4
パブリックメソッドからハッシュテーブルを返す際の何が問題になっていますか?
クラスを作成してそのオブジェクトを返すのではなく、複数のアイテムを返したいときに、パブリックメソッドからハッシュテーブルを返す際の設計上の問題は何ですか? 問題がある場合は、どのような状況でそれを行うのが理にかなっていますか? 言語が動的かどうかによって、この質問に対する答えはどのように変わりますか? 編集:これは、キーが定数であり、データではなくコードの一部であることを明確にするためです。通常、クラスを作成するためのもの。問題は、クラスの作成が実際に正しい選択であるように思われる場合に、代わりにハッシュテーブルを使用することが間違っている理由です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.