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

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

13
クラスの命名-すべてを「<WhatEver> Manager」と呼ばないようにする方法 [閉まっている]
現在のところ、この質問は、Q&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 ずっと前に私は記事を読んだことがあります(私はブログエントリだと思います)。これは、オブジェクトの名前付けに関する「正しい」トラックに私を導きました。 たとえば、私のアプリケーションが(典型的なビジネスアプリとして)ユーザー、会社、アドレスを処理している場合、a User、a、CompanyおよびAddressドメインクラスがあり、おそらくこれらの処理を行うa UserManager、a、CompanyManagerおよびanのAddressManagerポップアップが表示されます。 だからあなたは何それらを伝えることができるUserManager、CompanyManagerとAddressManagerのですか?いいえ。Managerは、ドメインオブジェクトで実行できるすべてのものに当てはまる非常に一般的な用語であるためです。 私が読んだ記事では、非常に具体的な名前を使用することをお勧めしました。それがC ++アプリケーションであり、UserManagerの仕事がユーザーの割り当てとヒープからの解放であった場合、ユーザーを管理するのではなく、その誕生と死を守ります。うーん、多分これをと呼ぶことができますUserShepherd。 または、UserManagerの仕事は、各Userオブジェクトのデータを調べて、データに暗号で署名することです。次に、UserRecordsClerk。 この考えが私にくっついたので、私はそれを適用しようとします。そして、このシンプルなアイデアを驚くほど難しいものにしてください。 私はクラスが何をするかを説明することができます(そして私が迅速で汚いコーディングに陥らない限り)私が書くクラスは正確に1つのことを行います。その説明から名前に行くのに欠けているのは、一種の名前のカタログであり、概念を名前にマッピングする語彙です。 最終的には、パターンカタログのようなものを念頭に置きたいと思います(多くの場合、設計パターンは、ファクトリーなどのオブジェクト名を簡単に提供します)。 ファクトリー-他のオブジェクトを作成します(設計パターンから取得した名前) 羊飼い-羊飼いはオブジェクトの寿命、オブジェクトの作成とシャットダウンを処理します Synchronizer-2つ以上のオブジェクト(またはオブジェクト階層)間でデータをコピーします ナニー-オブジェクトが作成後に「使用可能な」状態に達するのを支援します-他のオブジェクトへの配線などにより などなど それで、あなたはその問題をどのように扱いますか?あなたは固定された語彙を持っていますか、あなたはその場で新しい名前を発明しますか、それともそれほど重要ではないか間違っているものに名前を付けることを考えますか? PS:この問題について議論している記事やブログへのリンクにも興味があります。初めに、私がそれについて考えさせた元の記事は次のとおりです:「マネージャー」なしのJavaクラスの命名 更新:回答の要約 その間、私がこの質問から学んだことの簡単な要約を以下に示します。 新しい隠喩を作成しないようにしてください(乳母) 他のフレームワークが何をするか見てください このトピックに関する他の記事/本: 定期的にクラスの先頭に追加/追加している名前は何ですか? クラスに名前を付ける最善の方法は何ですか? 本:設計パターン:再利用可能なオブジェクト指向ソフトウェア(ハードカバー)の要素 本:エンタープライズアプリケーションアーキテクチャのパターン(ハードカバー) Book:実装パターン(ペーパーバック) そして、答えから私が(主観的に!)収集した名前のプレフィックス/サフィックスの現在のリスト: コーディネーター ビルダー ライター 読者 ハンドラ 容器 プロトコル 目標 コンバータ コントローラ 見る 工場 エンティティ バケツ そして道のための良いヒント: 名前の麻痺を取得しないでください。はい、名前は非常に重要ですが、膨大な時間を無駄にするほど重要ではありません。10分で良い名前を思い付かない場合は、先に進んでください。

22
「自己」という言葉の目的は何ですか?
selfPython の単語の目的は何ですか?そのクラスから作成された特定のオブジェクトを参照していることは理解していますが、すべての関数にパラメーターとして明示的に追加する必要がある理由がわかりません。説明のために、Rubyでこれを行うことができます。 class myClass def myFunc(name) @name = name end end 私にはわかります。ただし、Pythonでは以下を含める必要がありますself。 class myClass: def myFunc(self, name): self.name = name 誰もがこれを通して私を話すことができますか?それは私の(確かに限られた)経験で遭遇したものではありません。
1130 python  class  oop  self 

28
関数型プログラミングはGoF設計パターンを置き換えるものですか?
昨年F#とOCamlの学習を始めて以来、デザインパターン(特にJavaの場合)が命令型言語で欠落している機能の回避策であると主張する記事を数多く読みました。私が見つけた1つの記事はかなり強い主張をしています: 私が会ったほとんどの人は、Gang of Four(GoF)によるデザインパターンの本を読んだことがあります 。自尊心のあるプログラマーなら誰でも、その本は言語にとらわれず、パターンは、使用する言語に関係なく、ソフトウェアエンジニアリング全般に当てはまることを教えてくれます。これは高貴な主張です。残念ながら、それは真実からかけ離れています。 関数型言語は非常に表現力があります。関数型言語では、言語が非常に高レベルである可能性が高いため、設計パターンは必要ありません。結局、設計パターンをすべて排除する概念でプログラミングすることになります。 関数型プログラミング(FP)の主な機能には、ファーストクラスの値、カリー化、不変値などの関数が含まれます。OOデザインパターンがこれらの機能のいずれかに近似していることは明らかではありません。 さらに、OOPをサポートする関数型言語(F#やOCamlなど)では、これらの言語を使用するプログラマーが、他のすべてのOOP言語で利用可能な同じデザインパターンを使用することは明らかです。実際、現在、私は毎日F#とOCamlを使用しており、これらの言語で使用するパターンとJavaで書くときに使用するパターンとの間に顕著な違いはありません。 関数型プログラミングによってOOP設計パターンが不要になるという主張に真実はありますか?もしそうなら、典型的なOOP設計パターンとそれに相当する機能の例を投稿またはリンクできますか?


17
パブリック、プライベート、保護の違いは何ですか?
いつ、なぜ、私が使用する必要がありpublic、privateおよびprotectedクラス内の関数や変数?それらの違いは何ですか? 例: // Public public $variable; public function doSomething() { // ... } // Private private $variable; private function doSomething() { // ... } // Protected protected $variable; protected function doSomething() { // ... }
989 php  oop  private  public  protected 

16
ミックスインとは何ですか?なぜそれらが便利なのですか?
「Programming Python」では、Mark Lutzが「mixins」について言及しています。私はC / C ++ / C#の出身ですが、以前にその用語を聞いたことがありません。ミックスインとは何ですか? この例の行の間を読むと(非常に長いためにリンクしています)、「適切な」サブクラス化ではなく、多重継承を使用してクラスを拡張するケースであると思います。これは正しいですか? 新しい機能をサブクラスに入れるのではなく、なぜそれをしたいのですか?それについて、ミックスイン/マルチ継承アプローチがコンポジションを使用するよりも優れているのはなぜですか? ミックスインと多重継承を区別するものは何ですか?それは単なる意味論の問題ですか?



30
「インターフェイスにプログラムする」とはどういう意味ですか?
これについて何度か言及しましたが、その意味がよくわかりません。いつ、なぜこれを行うのですか? 私はインターフェースが何をするのか知っていますが、これがはっきりしないので、それらを正しく使用することに失敗していると思います。 あなたがやろうと思ったなら、それはそうですか? IInterface classRef = new ObjectWhatever() を実装する任意のクラスを使用できますかIInterface?いつそれを行う必要がありますか?私が考えることができる唯一のことは、あなたがメソッドを持っていて、それが実装することを除いて、どのオブジェクトが渡されるかわからない場合ですIInterface。どれくらいの頻度でそうする必要があるか、私には思えません。 また、インターフェイスを実装するオブジェクトを受け取るメソッドをどのように記述できますか?それは可能ですか?

8
オブジェクトの属性に基づいてオブジェクトのリストをソートする方法は?
オブジェクト自体の属性でソートしたいPythonオブジェクトのリストがあります。リストは次のようになります。 &gt;&gt;&gt; ut [&lt;Tag: 128&gt;, &lt;Tag: 2008&gt;, &lt;Tag: &lt;&gt;, &lt;Tag: actionscript&gt;, &lt;Tag: addresses&gt;, &lt;Tag: aes&gt;, &lt;Tag: ajax&gt; ...] 各オブジェクトにはカウントがあります。 &gt;&gt;&gt; ut[1].count 1L カウント数の降順でリストをソートする必要があります。 これについていくつかの方法を見てきましたが、Pythonでのベストプラクティスを探しています。
804 python  list  sorting  oop  count 

18
Pythonで__init__とselfは何をしますか?
私はPythonプログラミング言語を学んでいて、完全に理解していないものに出会いました。 次のような方法で: def method(self, blah): def __init__(?): .... .... 何をしselfますか?それはどういう意味ですか?必須ですか? __init__メソッドは何をしますか?なぜ必要なのですか?(等。) それらはOOPの構成要素かもしれないと思いますが、私はあまり知りません。
793 python  oop  self 

4
関数型プログラミングvsオブジェクト指向プログラミング[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 3年前休業。 私はこれまで主にオブジェクト指向プログラミングに触れてきましたが、関数型言語を学ぶことを楽しみにしています。私の質問は: オブジェクト指向よりも関数型プログラミングを選ぶのはいつですか? 関数型プログラミングがより良い選択である典型的な問題定義は何ですか?

30
インターフェイスと基本クラス
いつインターフェイスを使用する必要があり、いつ基本クラスを使用する必要がありますか? メソッドの基本実装を実際に定義したくない場合は、常にインターフェースにする必要がありますか? 犬と猫のクラスがある場合。PetBaseの代わりにIPetを実装したいのはなぜですか?IShedsまたはIBarks(IMakesNoise?)のインターフェースをペットごとに配置できるため、それらを使用できることは理解できますが、一般的なペットにどのインターフェースを使用すればよいかわかりません。


19
分かりやすい英語のモナド?(FPのバックグラウンドがないOOPプログラマー向け)
OOPプログラマーが(関数型プログラミングのバックグラウンドなしで)理解できるという点で、モナドとは何ですか? それはどのような問題を解決し、それが使用される最も一般的な場所は何ですか? 編集: 私が探していた理解の種類を明確にするために、モナドを持つFPアプリケーションをOOPアプリケーションに変換するとします。モナドの責任をOOPアプリに移植するにはどうしますか?

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