OOPの方法論を批判する非常に説得力のある記事(おそらく本)をいくつか提供していただきたいと思います。
私はこのトピックについてWWWでいくつか読んだことがありますが、「決定的なデモチベーター」は実際には見つかりませんでした。
OOPに対する私の個人的な態度はそれほど重要ではありませんが、あらゆる種類の議論と単なる抽象的な思考のための建設的で厳密な基盤が本当に必要です。
独自の研究を投稿することもできますが、非常に建設的なものにしてください(私の個人的な要求として)。
OOPの方法論を批判する非常に説得力のある記事(おそらく本)をいくつか提供していただきたいと思います。
私はこのトピックについてWWWでいくつか読んだことがありますが、「決定的なデモチベーター」は実際には見つかりませんでした。
OOPに対する私の個人的な態度はそれほど重要ではありませんが、あらゆる種類の議論と単なる抽象的な思考のための建設的で厳密な基盤が本当に必要です。
独自の研究を投稿することもできますが、非常に建設的なものにしてください(私の個人的な要求として)。
OOPのどのバージョンですか?アランケイの当初のビジョンは?ポイントを完全に見逃し、奇妙なアクセス制御、メンバー変数などで私たちを邪魔する、それのろくでなしの現代的な形?継承中心?プロトタイプベース?構成OOP?
OOPの各形式には、長所と短所があります。その支持者とその批判者; その有用性の領域とその無用の領域。OOPには、それをキラーパラダイムにする魔法のようなものは何もありません。また、(プログラマーの)キラーパラダイムにするような地獄のようなものもありません。
銀の弾丸としてのOOPへの興味を失った本や記事を実際に指摘することはできません(プロジェクトを存続させるために使用できる多くの手法の1つとは対照的です)。ただし、特定のブランドのOOPに対する最もおかしな批評を指摘することはできます。それは、 スティーブ・エッゲの古典的な「名詞の王国での処刑」です。
リック・ヒッキーの私たちはまだそこにいますか?-オブジェクト指向時間の脱構築は、私にとって目を見張るものでした。これは私が遭遇した中で最も論理的なOOの批判です。
オブジェクト指向プログラミングに対する批判が必要な場合は、次のことをお勧めします。
それを行うと、オブジェクト指向プログラミングの一般的な解釈について多くの批判があります。
(ヒント:OOは多くの点で、計算のアクターモデルにより類似することを目的としていましたが、その一般的な解釈は、事実上、手続き型/構造化モデルの変更です)
問題は、ほとんどの人がオブジェクト指向プログラミングを本当に知らないので、多くの設計がうまくいかないことです。
彼の(今ではかなり古い) Building Object Applications That Workを含む、ScottAmblerの作品を読んでください。これは非常に多くの人々にとって目を見張るものでした。
おそらくあなたが探していたものではないかもしれませんが、IEEEソフトウェアマガジンの1月/ 2月号を見てください:オブジェクト指向分析:それはただの理論ですか?。基本的な結論は、OOAは適切な費用便益比を提供しないため、十分に活用されていないということです。
OOAが「現実の世界」で効果的に利用またはサポートされていないことを考えると、大規模な開発プロジェクトでは、システムアーキテクチャ全体、デプロイされたオブジェクトモデル、およびクラス階層が最適ではなく、開発チーム。同じジャーナルの2番目の記事:Java Runtime Bloatにつながる4つのトレンドは、大量のJava(OOP)システムのデプロイを損なういくつかの一般的なOOPの問題を指摘しています。この記事で行われた観察は、おそらく最も高度に設計されたOOPアプリケーションに当てはまります。
これをOOバッシングと見なさないでください。これは、ソフトウェアプラクティショナーとして、非常に複雑で抽象化されたプロセスモデルを伝達するためのより優れた個人間コミュニケーションメカニズムの開発に向けて、かなりの作業が必要であることを反映しています。
自然言語でプロセスを定義する場合。1つまたは複数のオブジェクトに対してアクションを実行するサブジェクトを定義する文を使用します。
唯一の修正点は、文の述語であるアクションです。
オブジェクトにアクションを割り当てるのは良い考えではないと思います。動詞は1つだけですが、複数の名詞にすることができます。
OOPでは、少なくとも3つの方法でファイルを書き込むことができます。
file.write(data);
また
data.writeToFile(file);
また
OperatingSystem.write(file, data);
どのオブジェクトがメソッドを実装する必要がありますか?これについても考える必要があります。手続き的な方法で、あなたはおそらく書く
write(file, data);
そして、あなたが考える必要がある唯一のことは、通常は重要ではないオペランドの順序です。
(ファイルとデータは最良の例ではないかもしれませんが、おそらく要点はわかります)
http://cat-v.orgには、オブジェクト指向プログラミングに関するすばらしいページがあります。
ページの大部分は、ユーモラスですが、それほど有益ではない引用で構成されています。ただし、ページの下部には、OOPに挑戦する記事へのリンクがいくつかあります。彼らです:
オブジェクト指向プログラミングの代替案に興味がある場合:
cat-v.org。彼らの「概要」ページから: Cat-v.orgは、ソフトウェア設計から政治、芸術やジャーナリズムの通過、他に面白いものは何でも。
コンピュータプログラムの構造と解釈。特に関数型プログラミングを教えています。ここで無料でオンラインで入手でき、ここで販売されています。私はこれを十分に推薦することはできません。それは絶対に革命的です。それはあなたの考え方を変えるでしょう。
RobPikeとSteveYeggeによるすべての執筆/ビデオ/講義。特に興味深いのは、YeggeのWhirlwindLanguagesTourです。
別のプログラミングパラダイムを学ぶか、特定のパラダイムのプロの議論を読むことをお勧めします(http://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf)。OOPの他に、最も広く使用されているのは関数型パラダイム(「関数型プログラミングが重要な理由」を検索)ですが、他のパラダイムも見てください。プログラミングを別の視点から見始めると、OOPの欠陥が自動的に現れ始めます。
簡単な演習:オブジェクトIPerson、CMale、およびCFemaleを定義し、メソッド「sex」および「reproduce」を実装します。
JavaスタイルOOの名詞の王国でのスティーブエッゲの処刑はどうですか
オブジェクト指向デザインパターンのギデオンバイブル。適切な名前はデザインパターンです。私が今まで読んだ中で最高のソフトウェアデザインの本の1つ。