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

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

2
クラス定数とプロパティのオーバーライド
以下のシナリオで、クラス定数がインスタンス変数と継承される方法に違いがある理由をよりよく理解したいと思います。 <?php class ParentClass { const TEST = "ONE"; protected $test = "ONE"; public function showTest(){ echo self::TEST; echo $this->test; } } class ChildClass extends ParentClass { const TEST = "TWO"; protected $test = "TWO"; public function myTest(){ echo self::TEST; echo $this->test; } } $child = new ChildClass(); $child->myTest(); $child->showTest(); …


11
PHPの多重継承
PHP5はまだ多重継承をサポートしていないという事実を回避するための良い、きれいな方法を探しています。これがクラス階層です: メッセージ -TextMessage -------- InvitationTextMessage -EmailMessage -------- InvitationEmailMessage 2種類のInvitation *クラスには多くの共通点があります。両方が継承する共通の親クラスInvitationが欲しいです。残念ながら、彼らはまた、現在の祖先と多くの共通点を持っています... TextMessageおよびEmailMessage。ここで多重継承の古典的な欲求。 問題を解決するための最も軽量なアプローチは何ですか? ありがとう!
97 php  oop  inheritance 


13
インターフェイス内の内部クラス
インターフェイス内に内部クラスを作成することは可能ですか?インターフェイスオブジェクトを作成しないので 、なぜそのような内部クラスを作成したいのでしょうか。 これらの内部クラスは開発プロセスに役立ちますか?

3
Web MVCアプリケーションにアクセス制御リストを実装するにはどうすればよいですか?
最初の質問 簡単なACLをMVCに実装する方法を教えてください。 コントローラでAclを使用する最初の方法は次のとおりです... <?php class MyController extends Controller { public function myMethod() { //It is just abstract code $acl = new Acl(); $acl->setController('MyController'); $acl->setMethod('myMethod'); $acl->getRole(); if (!$acl->allowed()) die("You're not allowed to do it!"); ... } } ?> これは非常に悪いアプローチであり、マイナスなのは、Aclコードを各コントローラーのメソッドに追加する必要があることですが、追加の依存関係は必要ありません。 次のアプローチは、すべてのコントローラーのメソッドを作成し、コントローラーのメソッドprivateにACLコードを追加する__callことです。 <?php class MyController extends Controller { private function myMethod() { ... …

9
長いパラメーターリストを持つコンストラクターを使用せずに大きな不変オブジェクトを構築する
私はいくつかの大きな(3つ以上のフィールド)オブジェクトを持っていますが、それらは不変である必要があります。そのような場合に遭遇するたびに、長いパラメーターリストを使用してコンストラクターのabominationを作成する傾向があります。 違和感があり、使いづらく、読みやすさが低下します。 フィールドがリストのようなある種のコレクション型である場合はさらに悪いことです。simple addSibling(S s)はオブジェクトの作成を非常に簡単にしますが、オブジェクトを変更可能にします。 このような場合、皆さんは何を使用しますか? 私はScalaとJavaを使用していますが、言語がオブジェクト指向である限り、問題は言語にとらわれないものだと思います。 私が考えることができるソリューション: 「長いパラメーターリストによるコンストラクターの嫌悪感」 ビルダーパターン
96 java  oop  scala  immutability 

18
オブジェクトメソッド内からオブジェクトプロパティにどのようにアクセスしますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 ゲッター/セッターメソッドではないオブジェクトメソッド内からオブジェクトのプロパティにアクセスするための「純粋な」または「正しい」方法は何ですか? オブジェクトの外側からはゲッター/セッターを使用する必要があることは知っていますが、内側からは次のようにするだけです。 Java: String property = this.property; PHP: $property = $this->property; またはあなたはそうします: Java: String property = this.getProperty(); PHP: $property = $this->getProperty(); Javaが少しずれていても許してください。Javaでプログラミングしてから1年になります... 編集: 私がプライベートまたは保護された変数/プロパティのみについて話していると人々が想定しているようです。オブジェクト指向を知ったとき、それがパブリックであっても、すべてのプロパティにゲッター/セッターを使用するように教えられました(実際、変数/プロパティをパブリックにしないように言われました)。それで、私は最初から間違った仮定から始めるかもしれません。この質問に答える人々はおそらくあなたは公共の財産を持っているべきであり、それらはゲッターとセッターを必要としないと言っているようです上手。それはおそらく別の質問に適したトピックでしょう...
96 java  php  oop  theory 

3
LiveDataの個別のMutableLiveDataサブクラスがあるのはなぜですか?
とメソッドを公開することだけMutableLiveDataが異なるように見えますが、それらは保護されています。LiveDatasetValue()postValue()LiveData この変更のために別のクラスを作成し、それらのメソッドLiveData自体を単にパブリックとして定義しない理由は何ですか? 一般的に言って、そのような形式の継承(特定のメソッドの可視性を高めることが唯一の変更である)はよく知られた方法であり、それが役立つ可能性のあるいくつかのシナリオは何ですか(すべてのコードにアクセスできると仮定)?

5
JavaScriptは文字列からオブジェクトメソッドを動的に呼び出します
メソッド名を文字列として持つオブジェクトメソッドを動的に呼び出すことはできますか?私はそれを次のように想像します: var FooClass = function() { this.smile = function() {}; } var method = "smile"; var foo = new FooClass(); // I want to run smile on the foo instance. foo.{mysterious code}(); // being executed as foo.smile();

17
C#のファクトリパターン:オブジェクトインスタンスがファクトリクラスによってのみ作成されることを確実にする方法は?
最近、自分のコードの一部を保護することを考えています。オブジェクトが直接作成されないようにするにはどうすればよいのか興味がありますが、ファクトリクラスのメソッドを介してのみ作成できます。「ビジネスオブジェクト」クラスがあり、このクラスのインスタンスが有効な内部状態になるようにしたいとします。これを実現するには、オブジェクトを作成する前に、おそらくそのコンストラクタで、いくつかのチェックを実行する必要があります。このチェックをビジネスロジックの一部にすることを決定するまで、これで問題ありません。それでは、ビジネスロジッククラスのいくつかのメソッドを介してのみ、直接ではなく、ビジネスオブジェクトを作成できるようにするにはどうすればよいでしょうか。C ++の古き良き「フレンド」キーワードを使用する最初の自然な欲求は、C#では不十分です。他のオプションが必要です... いくつかの例を試してみましょう: public MyBusinessObjectClass { public string MyProperty { get; private set; } public MyBusinessObjectClass (string myProperty) { MyProperty = myProperty; } } public MyBusinessLogicClass { public MyBusinessObjectClass CreateBusinessObject (string myProperty) { // Perform some check on myProperty if (true /* check is okay */) return new MyBusinessObjectClass (myProperty); …

8
メディエーター対オブザーバーのオブジェクト指向設計パターン
私はギャングオブフォーを読んでいますいくつかの問題を解決するためにて、Mediatorパターンに出くわしました。 以前使用していた 、プロジェクトでいくつかのGUIアプリケーションを作成するためにObserverを。この2つに大きな違いはないので、少し混乱しています。違いを見つけるために閲覧しましたが、私のクエリに対する適切な答えを見つけることができませんでした。 2人を明確に区別するいくつかの良い例で2人を区別するのに役立つ人がいますか?


9
関数型プログラミング言語はどのように機能しますか?
関数型プログラミング言語が状態を保存できない場合、ユーザーからの入力を読み取るなどの単純なことをどのように実行しますか?入力をどのように「保存」するか(または、そのためのデータを保存するか)。 たとえば、この単純なCの事柄は、Haskellのような関数型プログラミング言語にどのように変換されますか? #include<stdio.h> int main() { int no; scanf("%d",&no); return 0; } (私の質問は、この優れた投稿「名詞の王国での実行」に触発されました。これを読むと、オブジェクト指向プログラミングとは何か、Javaが1つの極端な方法でそれを実装する方法、および関数型プログラミング言語がどのように機能するかについて理解が深まりましたコントラスト。)

10
ベストプラクティス:クラス定義内でのパブリック/保護/プライベートの順序付け?
私はゼロから新しいプロジェクトを始めており、それがクリーンである/良いコーディング標準を持っていることを望んでいます。ここのベテラン開発者は、クラス内でどのような順序でレイアウトを行いますか? A:1)パブリックメソッド2)プライベートメソッド3)パブリック変数4)プライベート変数 B:1)パブリック変数2)プライベート変数3)パブリックメソッド4)プライベートメソッド C:1)パブリック変数2)パブリックメソッド3)プライベートメソッド4)プライベート変数 私は一般にパブリック静的変数を一番上に置きたいのですが、パブリック静的メソッドをコンストラクターの前にリストするのでしょうか、それともコンストラクターを常に最初にリストする必要がありますか?そういうこと... 私はそれが微妙だと知っていますが、私はただ疑問に思いました:これのためのベストプラクティスは何ですか? PS:いいえ、Cc#は使用しません。知っている。私はラディットです。

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