タグ付けされた質問 「oop」

オブジェクト指向プログラミングは、「オブジェクト」を使用したプログラミングパラダイムです。つまり、データフィールドとメソッド、およびそれらの相互作用で構成されるデータ構造です。


7
メンバー関数への関数ポインター
同じクラス内の別の関数へのポインターであるクラスのメンバーとして関数ポインターを設定したいと思います。私がこれをしている理由は複雑です。 この例では、出力を「1」にします。 class A { public: int f(); int (*x)(); } int A::f() { return 1; } int main() { A a; a.x = a.f; printf("%d\n",a.x()) } しかし、これはコンパイルに失敗します。どうして?

3
Liskov Substitution Principleを良いC#の例で説明できますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 10か月前に閉鎖。 この質問を改善する Liskov置換原理(SOLIDの「L」)を、原理のすべての側面を簡単にカバーする優れたC#の例で説明できますか?それが本当に可能であれば。

5
シングルトンが悪い場合、サービスコンテナはなぜ良いのでしょうか。
我々は、すべての方法を知っている悪いシングルトン彼らは依存関係を非表示にするためにためている他の理由。 しかし、フレームワークでは、一度だけインスタンス化してどこからでも呼び出す必要のある多くのオブジェクト(ロガー、dbなど)が存在する可能性があります。 この問題を解決するために、サービス(ロガーなど)へのすべての参照を内部的に保存する、いわゆる「オブジェクトマネージャー」(またはsymfonyのようなサービスコンテナー)を使用するように言われました。 しかし、サービスプロバイダーが純粋なシングルトンほど悪くないのはなぜですか? サービスプロバイダーも依存関係を隠し、最初のインスタンスの作成をラップアウトするだけです。そのため、シングルトンの代わりにサービスプロバイダーを使用する理由を理解するのに本当に苦労しています。 PS。依存関係を隠さないようにするには、DIを使用する必要があることを知っています(Miskoが述べたように) 追加 私は付け加えます:最近のシングルトンはそれほど悪ではありません、PHPUnitの作成者はここでそれを説明しました: http://sebastian-bergmann.de/archives/882-Testing-Code-That-Uses-Singletons.html DI +シングルトンは問題を解決します: <?php class Client { public function doSomething(Singleton $singleton = NULL){ if ($singleton === NULL) { $singleton = Singleton::getInstance(); } // ... } } ?> これですべての問題が解決されなくても、それはかなりスマートです。 DIとService Container以外に、このヘルパーオブジェクトにアクセスするための適切なソリューションはありますか?

7
拡張PHPクラスの静的呼び出しからクラス名を取得するにはどうすればよいですか?
との2つのクラスがActionありMyActionます。後者は次のように宣言されます。 class MyAction extends Action {/* some methods here */} 必要なのはActionクラス内のメソッドだけです(継承されたクラスがたくさんあり、それらすべてにこのメソッドを実装したくないので、クラス内だけです)。これは静的呼び出しからクラス名を返します。これが私が話していることです: Class Action { function n(){/* something */} } そして私がそれを呼ぶとき: MyAction::n(); // it should return "MyAction" ただし、親クラスの各宣言__CLASS__は、値「Action」を持つ親クラス変数にのみアクセスできます。 これを行うための可能な方法はありますか?
91 php  oop  inheritance 

9
同じクラスの別のオブジェクトのプライベートフィールドにアクセスする
class Person { private BankAccount account; Person(BankAccount account) { this.account = account; } public Person someMethod(Person person) { //Why accessing private field is possible? BankAccount a = person.account; } } デザインを忘れてください。OOPは、プライベートオブジェクトがクラスに対してプライベートであることを指定していることを知っています。私の質問は、プライベートフィールドがオブジェクトレベルのアクセスではなくクラスレベルのアクセスを持つようにOOPが設計されたのはなぜですか?
91 java  c++  .net  oop 

2
いつ実装して拡張するのですか?[閉まっている]
クローズ。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 1年前に閉鎖。 この質問を改善する ときにすべきimplementか、extend使用できますか? 実際の例は何ですか? これは正しいです? 実装は、特定のメソッドがクラスに存在し、これらのメソッドの関数呼び出しが適切にフォーマットされていることを強制する方法のようです。実装は、変数または「設定」をクラスに渡す方法ではありませんか? 予想される実際のシナリオ:すべて同じ設計に従う複数の支払いクラスを備えたeコマースプラットフォームがあります。新しい支払いクラスを追加する必要がある場合は、の定義された設計に従ってinterface、最初からすべての要素が確実に存在するようにするのは非常に簡単です。 クラスを拡張すると、拡張(子?)クラスは、private?として宣言されたメソッドと変数を除いて、親クラスからすべてを継承します。 予想される実際のシナリオ:とsessionsという名前の2つの子クラスで呼び出される1つのクラスがsessioncookiesありdatabasesessionsます。sessioncookiesまたdatabasesessions、親セッションから多数の相互構成オプションを一緒に継承するため、構成オプションを簡単に変更して、あらゆる種類の最終的な訪問者データストレージに影響を与えることができます。
91 php  oop  extend 

6
JavaScriptのポリモーフィズムとは何ですか?
ポリモーフィズムについてインターネットで見つけた可能性のある記事をいくつか読んだことがあります。でも、その意味とその重要性がよくわからなかったと思います。ほとんどの記事では、なぜそれが重要であり、OOPで(もちろんJavaScriptで)多相的な動作を実現できるかについては触れていません。 それを実装する方法がわからないので、コード例を提供することはできません。 それは何ですか? なぜそれが必要なのですか? 使い方? JavaScriptでこのポリモーフィックな動作を実現するにはどうすればよいですか? 私はこの例を持っています。しかし、このコードの結果がどうなるかは簡単に理解できます。ポリモーフィズム自体についての明確な考えはありません。 function Person(age, weight) { this.age = age; this.weight = weight; this.getInfo = function() { return "I am " + this.age + " years old " + "and weighs " + this.weight +" kilo."; } } function Employee(age, weight, salary) { this.salary = salary; …

6
Pythonでインスタンス変数のデフォルト値を宣言するにはどうすればよいですか?
クラスメンバーに次のようなデフォルト値を指定する必要があります。 class Foo: num = 1 またはこのように? class Foo: def __init__(self): self.num = 1 で、この質問私は、両方のケースでこれを発見しました bar = Foo() bar.num += 1 明確に定義された操作です。 最初のメソッドはクラス変数を提供しますが、2番目のメソッドは提供しないことを理解しています。ただし、クラス変数を必要とせず、インスタンス変数のデフォルト値を設定するだけでよい場合、両方のメソッドは同等に優れていますか?またはそれらの1つは他よりも「pythonic」ですか? 私が気づいたことの1つは、Djangoチュートリアルでは、2番目のメソッドを使用してモデルを宣言していることです。個人的には2番目の方法の方がエレガントだと思いますが、「標準的な」方法とは何か知りたいです。
90 python  class  oop 

9
Typescript:2つのクラスを拡張する方法は?
時間を節約し、PIXIクラス(2d webGlレンダラーライブラリ)を拡張するクラス間で共通のコードを再利用したいと思います。 オブジェクトインターフェイス: module Game.Core { export interface IObject {} export interface IManagedObject extends IObject{ getKeyInManager(key: string): string; setKeyInManager(key: string): IObject; } } 私の問題は、コード内のことであるgetKeyInManagerとsetKeyInManager変更されませんし、私はないそれを複製し、それを再利用したい、ここでの実装は次のとおりです。 export class ObjectThatShouldAlsoBeExtended{ private _keyInManager: string; public getKeyInManager(key: string): string{ return this._keyInManager; } public setKeyInManager(key: string): DisplayObject{ this._keyInManager = key; return this; } } 私がやりたいのManager.add()は、マネージャーで使用されるキーを介して、オブジェクト自体の内部のオブジェクトをそのプロパティで参照するために自動的に追加することです_keyInManager。 それでは、テクスチャの例を見てみましょう。ここに行きますTextureManager …

12
集計と構成[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前に閉鎖。 この質問を改善する UMLでの構成と集約の違いを理解するのに苦労しました。誰かが私にそれらの良い比較とコントラストを提供してくれますか?また、それらの違いをコードで認識したり、短いソフトウェア/コードの例を見たりしたいと思っています。 編集:私が尋ねる理由の一部は、私たちが仕事で行っている逆の文書化活動のためです。コードを記述しましたが、戻ってコードのクラス図を作成する必要があります。関連付けを適切にキャプチャしたいだけです。
89 java  oop  uml 

3
チェスゲームのオブジェクト指向設計[クローズ]
クローズ。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前に閉鎖されました。 この質問を改善する オブジェクト指向の方法で設計および思考する方法を理解しようとしています。このトピックについて、コミュニティからフィードバックをもらいたいと思っています。以下は、オブジェクト指向で設計したいチェスゲームの例です。これは非常に幅広い設計であり、この段階での私の焦点は、ゲームをシミュレートするために、どのメッセージの責任者とオブジェクトが互いにどのように相互作用するかを特定することです。悪いデザインの要素(高い結合、悪い凝集など)があるかどうか、そしてそれらをどのように改善するかを指摘してください。 チェスゲームには次のクラスがあります ボード プレーヤー ピース 平方 ChessGame ボードは正方形で構成されているため、ボードは正方形オブジェクトの作成と管理を担当することができます。各ピースも正方形上にあるため、各ピースには、それが置かれている正方形への参照もあります。(これは意味がありますか?)次に、各ピースは、ある正方形から別の正方形に移動する責任があります。プレーヤークラスは、彼が所有するすべてのピースへの参照を保持し、それらの作成にも責任があります(プレーヤーはピースを作成する必要がありますか?)。プレーヤーにはメソッドtakeTurnがあり、このメソッドは、ピースの場所を現在の場所から別の場所に変更するピースクラスに属するメソッドmovePieceを呼び出します。今、私は理事会クラスが正確に何に責任を負わなければならないかについて混乱しています。ゲームの現在の状態を判断し、ゲームがいつ終了するかを知る必要があると思いました。しかし、作品が変わるとそれは s場所ボードはどのように更新する必要がありますか?ピースが存在し、ピースが移動すると更新される正方形の個別の配列を維持する必要がありますか? また、ChessGameは最初にボードオブジェクトとプレーヤーオブジェクトを作成し、次にそれぞれ正方形とピースを作成してシミュレーションを開始します。簡単に言えば、これはChessGameのコードがどのように見えるかです。 Player p1 =new Player(); Player p2 = new Player(); Board b = new Board(); while(b.isGameOver()) { p1.takeTurn(); // calls movePiece on the Piece object p2.takeTurn(); } ボードの状態がどのように更新されるかはわかりません。ピースにはボードへの参照が必要ですか?責任はどこにあるべきですか?誰がどのような参照を保持していますか?あなたの入力を手伝って、このデザインの問題を指摘してください。私はデザインの側面にのみ興味があるので、アルゴリズムやゲームプレイの詳細には意図的に焦点を合わせていません。このコミュニティが貴重な洞察を提供できることを願っています。
88 chess  oop 

6
ダウンキャストとアップキャスト
私はC#(およびOOP)を初めて使用します。次のようなコードがある場合: class Employee { // some code } class Manager : Employee { //some code } 質問1:これを行う他のコードがある場合: Manager mgr = new Manager(); Employee emp = (Employee)mgr; これEmployeeはですがManager、そのようにキャストEmployeeすると、アップキャストしているということですか? 質問2: 複数のEmployeeクラスオブジェクトがあり、それらのすべてではなく一部がManager'である場合、可能な場合はどうすればそれらをダウンキャストできますか?
88 c#  oop  downcast  upcasting 

7
依存性注入とシングルトンデザインパターン
依存性注入またはシングルトンパターンをいつ使用するかをどのように識別しますか。「シングルトンパターンよりも依存性注入を使用する」と書かれている多くのWebサイトを読んだことがあります。しかし、私がそれらに完全に同意するかどうかはわかりません。私の中小規模のプロジェクトでは、シングルトンパターンの使用は間違いなく簡単です。 たとえば、ロガー。使用できますLogger.GetInstance().Log(...) が、これの代わりに、作成したすべてのクラスにロガーのインスタンスを挿入する必要があるのはなぜですか?


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