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

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

21
依存性注入はカプセル化を犠牲にする必要がありますか?
私が正しく理解している場合、依存性注入の一般的なメカニズムは、クラスのコンストラクターまたはクラスのパブリックプロパティ(メンバー)を介して注入することです。 これにより、注入される依存関係が明らかになり、カプセル化のOOP原則に違反します。 このトレードオフを特定することは正しいですか?この問題にどのように対処しますか? 以下の自分の質問に対する私の回答も参照してください。

24
nullの悪いデザインを返していますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 この質問を改善する メソッドから返されたnull値をチェックするのは悪い設計だと言う声を聞いたことがあります。その理由を教えてください。 疑似コード: variable x = object.method() if (x is null) do something
127 oop  null  return-value 

30
OOPのポイントは何ですか?
ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 私の知る限り、OOPの教育、言語、およびツールに費やされた無数の数百万または数十億にもかかわらず、OOPは開発者の生産性やソフトウェアの信頼性を向上させておらず、開発コストも削減していません。厳密な意味でOOPを使用する人はほとんどいません(LSPなどの原則を遵守または理解している人はほとんどいません)。問題のドメインをモデル化するために人々がとるアプローチには、ほとんど均一性や一貫性がないようです。たいていの場合、クラスは単に構文上の砂糖のために使用されます。レコード型の関数を独自の小さな名前空間に配置します。 さまざまなアプリケーション用に大量のコードを記述しました。真の置換可能なサブタイピングがアプリケーションで重要な役割を果たす場所がありましたが、これらはかなり例外的なものでした。一般に、「再利用」について話すために多くのリップサービスが提供されますが、実際には、コードの一部が意図したとおりに実行しない限り、費用対効果の高い「再利用」はほとんどありません。クラスを正しい方法で拡張できるように設計することは非常に難しいため、通常、拡張のコストは非常に高く、「再利用」するだけの価値はありません。 多くの点で、これは私を驚かせません。現実の世界は「OO」ではなく、OOに内在する考え(クラス分類法でモデル化できる)は、根本的に欠陥があるように見えます(テーブル、木の切り株、車のボンネットに座ることができます) 、誰かの膝-しかしそれらの1つは椅子ではありません)。より抽象的なドメインに移行しても、オブジェクト指向モデリングは困難で直感に反し、最終的に役に立たないことがよくあります(円/楕円または正方形/長方形の古典的な例を考えてみてください)。 だから私はここで何が欠けていますか?OOPの価値はどこにありますか。なぜ、時間とお金がソフトウェアを改善することに失敗したのでしょうか。


9
PHPの抽象プロパティ
PHPで抽象クラスプロパティを定義する方法はありますか? abstract class Foo_Abstract { abstract public $tablename; } class Foo extends Foo_Abstract { //Foo must 'implement' $property public $tablename = 'users'; }
126 php  oop  abstract-class 

4
基本(スーパー)クラスを初期化するにはどうすればよいですか?
Pythonでは、次のコードがあるとします。 >>> class SuperClass(object): def __init__(self, x): self.x = x >>> class SubClass(SuperClass): def __init__(self, y): self.y = y # how do I initialize the SuperClass __init__ here? SuperClass __init__サブクラスでを初期化するにはどうすればよいですか?私はPythonチュートリアルに従っていますが、それについては説明していません。Googleで検索したところ、複数の方法が見つかりました。これを処理する標準的な方法は何ですか?
125 python  oop 

6
Rで「S3メソッド」とはどういう意味ですか?
私はRにかなり慣れているので、S3メソッドとオブジェクトが何であるかわかりません。S3とS4のオブジェクトシステムがあり、可能であればS4よりもS3を使用することをお勧めします(http://google-styleguide.googlecode.com/svn/trunk/google-r-styleにある GoogleのRスタイルガイドを参照してください。 html)*。しかし、私はS3メソッド/オブジェクトの正確な定義を知りません。 更新:2019年現在、GoogleのRスタイルガイドのハイパーリンクがここにあります。
124 r  oop  r-faq  r-s3  r-s4 



8
PHP 5.2+が抽象静的クラスメソッドを許可しないのはなぜですか?
PHP 5.2で厳格な警告を有効にした後、元々厳格な警告なしで作成されたプロジェクトからの一連の厳格な標準警告が表示されました。 厳密な標準:静的関数 Program :: getSelectSQL()は Program.class.inc で抽象であってはなりません 問題の関数は、抽象親クラスProgramに属しており、TVProgramなどの子クラスに実装する必要があるため、抽象staticと宣言されています。 私はこの変更への言及をここで見つけました: 抽象静的クラス関数を削除しました。見落としのため、PHP 5.0.xおよび5.1.xでは、クラスで抽象静的関数を使用できました。PHP 5.2.x以降では、インターフェースのみがそれらを使用できます。 私の質問は次のとおりです。なぜPHPに抽象静的関数を使用すべきではないのか、誰かが明確に説明できますか?
121 php  oop  static  abstract 

11
多重継承の正確な問題は何ですか?
C#またはJavaの次のバージョンに多重継承を含めるかどうかを常に尋ねる人がいます。この能力を持つ幸運なC ++の人々は、これは誰かが最終的に自分自身を吊るすためのロープを与えるようなものだと言います。 多重継承の問題は何ですか?具体的なサンプルはありますか?



4
Laravelでの関係の管理、リポジトリパターンの順守
Laravelの優れたデザインパターンに関するT. Otwellの本を読んだ後、Laravel 4でアプリを作成しているときに、アプリケーションのすべてのテーブルのリポジトリを作成していることに気付きました。 私は次のテーブル構造になりました: 学生:ID、名前 コース:id、name、teacher_id 教師:ID、名前 割り当て:id、name、course_id スコア(学生と課題の間のピボットとして機能):student_id、assignment_id、scores これらすべてのテーブルの検索、作成、更新、削除メソッドを備えたリポジトリクラスがあります。各リポジトリには、データベースと対話するEloquentモデルがあります。関係は、Laravelのドキュメント(http://laravel.com/docs/eloquent#relationships)のモデルで定義されています。 新しいコースを作成するときは、コースリポジトリのcreateメソッドを呼び出すだけです。そのコースには課題があるので、課題を作成するときに、コースの各生徒のスコアのテーブルにエントリも作成します。これはアサインメントリポジトリを通じて行います。これは、課題リポジトリが2つのEloquentモデル、つまり課題モデルと生徒モデルと通信することを意味します。 私の質問は次のとおりです:このアプリはおそらくサイズが大きくなり、より多くの関係が導入されるため、リポジトリ内の異なるEloquentモデルと通信することは良い習慣ですか、またはこれを代わりに他のリポジトリを使用して行うべきですか(割り当てリポジトリから他のリポジトリを呼び出すことを意味します) )それともEloquentモデルで一緒に行う必要がありますか? また、スコアテーブルを課題と生徒の間のピボットとして使用することは良い習慣ですか、それとも別の場所で行う必要がありますか?

6
PHPのクラスメソッドのデフォルトの可視性
マニュアルを見ましたが、答えが見つからないようです。 可視性宣言のないメソッドのPHPのデフォルトの可視性は何ですか?PHPには、Javaのようなパッケージの可視性がありますか? たとえば、次のコードでは、go()パブリックですか、プライベートですか? class test { function go() { } } 私が尋ねた理由は、多くのコンストラクターのコードがと書かれfunction __construct()たり、一部がと書かれたりしたことを見たからpublic function __construct()です。それらは同等ですか?
118 php  oop  visibility 

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