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

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


9
Pythonコードが長さメソッドではなくlen()関数を使用するのはなぜですか?
Pythonにはlen()文字列のサイズを決定するために使用される関数があることは知っていますが、なぜそれが文字列オブジェクトのメソッドではないのか疑問に思いました。 更新 わかりました、私は恥ずかしいほど間違っていることに気付きました。__len__()実際には文字列オブジェクトのメソッドです。文字列オブジェクトでlen関数を使用してPythonでオブジェクト指向のコードを見るのは奇妙に思えます。さらに、__len__lenだけではなく名前として見るのもおかしいです。

15
ゲッターとセッター?
私はPHP開発者ではないので、PHPでは明示的なゲッター/セッターを純粋なOOPスタイルでプライベートフィールドとともに使用する方が一般的かどうか(私が好きな方法)はどうでしょうか。 class MyClass { private $firstField; private $secondField; public function getFirstField() { return $this->firstField; } public function setFirstField($x) { $this->firstField = $x; } public function getSecondField() { return $this->secondField; } public function setSecondField($x) { $this->secondField = $x; } } または単にパブリックフィールド: class MyClass { public $firstField; public $secondField; } ありがとう
203 php  oop  coding-style 



7
アスペクト指向プログラミングvs.オブジェクト指向プログラミング
ここや世界中のほとんどの開発者と同様に、私は長年、オブジェクト指向プログラミング(OOP)技術を使用してソフトウェアシステムを開発しています。ですから、アスペクト指向プログラミング(AOP)は、従来のOOPが完全にまたは直接解決できない多くの問題に対処していることを読んだとき、一時停止して考えます、それは本当ですか? 私はこのAOPパラダイムの鍵を学ぶために多くの情報を読み、同じ場所にいるので、実際のアプリケーション開発におけるその利点をよりよく理解したいと思いました。 誰かが答えを持っていますか?
199 oop  aop  paradigms 

4
Pythonでオブジェクトのコピーを作成するにはどうすればよいですか?
オブジェクトのコピーを作成したいのですが。新しいオブジェクトに古いオブジェクトのすべてのプロパティ(フィールドの値)を持たせたい。しかし、私は独立したオブジェクトを持ちたいです。したがって、新しいオブジェクトのフィールドの値を変更しても、古いオブジェクトはその影響を受けません。
199 python  oop  object  copy 

9
Pythonメソッドで「自己」引数を明示的に指定する必要があるのはなぜですか?
Pythonのクラスでメソッドを定義すると、次のようになります。 class MyClass(object): def __init__(self, x, y): self.x = x self.y = y ただし、C#などの他の言語では、メソッドプロトタイプで引数として宣言せずに、「this」キーワードを使用してメソッドがバインドされているオブジェクトへの参照があります。 これはPythonでの意図的な言語設計の決定でしたか、それとも引数として「自己」を渡す必要のある実装の詳細はありますか?
197 python  oop  methods  self 

24
インターフェイスを作成するタイミングを知るにはどうすればよいですか?
開発学習の途中で、インターフェイスについてもっと学ぶ必要があると感じています。 よく読んでいますが、なかなか理解できないようです。 私は次のような例を読みました:「基本」、「歩く」、「実行」、「GetLegs」などのIAnimalインターフェースを備えたもの-しかし、何かに取り組んだことがなく、「インターフェースを使用する必要がありますここに!" 何が欠けていますか?なぜ私が理解するのが難しいのですか?私はそれを具体的に必要としていることに気づかなかったかもしれないという事実に驚かされました。開発者という点で最高のものが足りないように感じます。もし誰かがこのような経験をしていて画期的な経験をしたなら、私はこの概念を理解する方法に関するいくつかのヒントに感謝します。ありがとうございました。

20
Javaのオブジェクトのような構造
オブジェクトのような構造体を作成するJavaの方法に完全に反していますか? class SomeData1 { public int x; public int y; } アクセサーとミューテーターがJavaに似ているクラスを見ることができます。 class SomeData2 { int getX(); void setX(int x); int getY(); void setY(int y); private int x; private int y; } 最初の例のクラスは表記上便利です。 // a function in a class public int f(SomeData1 d) { return (3 * d.x) / d.y; …
195 java  oop  struct 

25
Javaで該当する場合は常に「最終」修飾子を使用する[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 Javaでは、すべての変数(ローカルまたはクラス)を宣言し、それらが実際の場合はfinalパラメータを宣言する習慣があります。 これにより、コードがより詳細になりますが、これにより、コードの読み取り/把握が容易になり、意図が明確に示されるため、間違いを防ぐことができます。 これについてあなたはどう思いますか、そしてあなたは何をしますか?
194 java  oop 

13
void以外のメソッドのコンパイルでreturnステートメントが見つからない
void以外のメソッドにreturnステートメントが欠落していて、コードがまだコンパイルされる状況に遭遇しました。whileループの後のステートメントに到達できず(デッドコード)、実行されることはないことは知っています。しかし、コンパイラが何かを返すことについて警告さえしないのはなぜですか?あるいは、言語によって、無限ループを持ち、何も返さない非voidメソッドを使用できるようになるのはなぜですか public int doNotReturnAnything() { while(true) { //do something } //no return statement } whileループにbreakステートメント(条件付きのステートメントも含む)を追加すると、コンパイラーMethod does not return a valueはEclipseとNot all code paths return a valueVisual Studioの悪名高いエラーを報告します。 public int doNotReturnAnything() { while(true) { if(mustReturn) break; //do something } //no return statement } これは、JavaとC#の両方に当てはまります。
189 java  c#  oop 

13
あなたはstd :: vectorから継承しないでください
わかりました、これを告白するのは本当に難しいですが、私は現在、から継承する強い誘惑がありstd::vectorます。 ベクター用に約10のカスタマイズされたアルゴリズムが必要であり、それらを直接ベクターのメンバーにしたい。しかし当然ながら、の残りstd::vectorのインターフェイスも必要です。さて、私の最初のアイデアは、法律を遵守する市民std::vectorとして、MyVectorクラスにメンバーを含めることでした。しかし、私はすべてのstd :: vectorのインターフェースを手動で再提供する必要があります。入力するには多すぎます。次に、私はプライベート継承について考えました。そのため、メソッドを再提供する代わりusing std::vector::memberに、パブリックセクションにをまとめて記述します。これも実際には退屈です。 そして、私は実際に、私は単純にからパブリックに継承できると本当に思っていますがstd::vector、このクラスは多態的に使用されるべきではないという警告をドキュメントに提供しています。ほとんどの開発者は、これを多態的に使用してはならないことを理解するのに十分な能力があると思います。 私の決定は完全に不当なものですか?もしそうなら、なぜですか?追加のメンバーが実際にはメンバーになるが、ベクターのすべてのインターフェースを再入力する必要がない代替案を提供できますか?疑わしいですが、できれば幸せです。 また、一部の馬鹿が次のようなものを書くことができるという事実は別として std::vector<int>* p = new MyVector MyVectorを使用する上で他の現実的な危険はありますか?現実的と言うことで、ベクトルへのポインタを受け取る関数を想像するようなものを破棄します... さて、私は私のケースを述べました。私は罪を犯しました。今私を許すかどうかはあなた次第です:)
189 c++  oop  inheritance  stl  vector 


12
DDD-エンティティがリポジトリに直接アクセスできないルール
ドメイン駆動設計では、エンティティがリポジトリに直接アクセスしてはならないという多くの合意があるようです。 これは、Eric Evans Domain Driven Designによるものですか。本から来たのですか、それとも他の場所から来ましたか その背後にある推論についての良い説明はどこにありますか? 編集:明確にするため:データアクセスをビジネスロジックとは別のレイヤーに分離する従来のOOプラクティスについて話しているのではなく、DDDではエンティティがデータに話しかけることを想定していない特定の配置について話しているアクセス層(つまり、Repositoryオブジェクトへの参照を保持することは想定されていません) 更新:彼の答えが最も近いようだったので、私はBacceSRに賞金を与えましたが、私はまだこれについてかなり暗いです。そのような重要な原則ならば、オンラインのどこかにそれについての良い記事があるはずです、きっと? 更新:2013年3月、質問への賛成票はこれに多くの関心があることを意味し、多くの回答があったとしても、人々がこれについてアイデアを持っているなら、まだまだ余裕があると思います。

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