OOPの概念/原理を実際に学ぶにはどうすればいいですか?[閉まっている]


12

オブジェクト指向プログラミング言語を学びたかったのですが、OOPの概念全体を知ることだけを目的にしたくないのです。だから、誰が私がどの言語を学び始めるべきか教えてくれますか?


1
すでにどの言語を知っていますか?
-Mchl

C、VB.NET、およびC ++が、OOP部分ではない
-Caffeinatedwolf

1
次にVB.NETを選択します。
VinothKumar CM

いいえ、私はVB.NET私は私は、Java、C ++、Pythonの等...の間で選択する助けにみんなが欲しいたくない
Caffeinatedwolf

3
目的なしに何かを実際に学びたいですか?
ジェフ

回答:


13

さらなる提案:

  • 私がこれまでOOPバーで読んだ中で最高の本は、バートランド・マイヤーのオブジェクト指向ソフトウェア構築です。それはあなたが場所で一生懸命に考える必要があるという点で「簡単な」読みではありません。しかし、OOの原則を説明する上で私が見た中で最高の仕事をします。

  • 言語に関しては、C ++には近づかないでしょう。学習目的には大きすぎます。OOを理解するのに本当に役立つ言語が必要な場合(主流のアプリを作成したり使用したりする言語とは対照的に)、smalltalkをご覧ください。またはエッフェル(上記のマイヤーの本の言語)。

  • もう少し主流でありながら、オブジェクト指向の原則を忠実にサポートする言語が必要な場合は、Pythonが最適です。静的型付けが必要な場合は、JavaとC#も適切です。

ただし、注意すべき点が1つあります。言語はオブジェクト指向を教えてくれません。それはオブジェクト指向の概念をどれだけうまくサポートするかを助ける(または妨げる)だけです。オブジェクト指向の学習と、オブジェクト指向の用語で考えることを学ぶことです。そのために、マイヤーの本に戻ります。

hth。


1
C ++の他のことは重要です。仮想継承について知っておくことが重要です。それはだ重要な強力なコンパイル時の一般的なサポートを知って、それはだ重要な参照値Vsを知って。Javaのようなものを探しているのは、「LA LA LA聞こえないよこれが唯一の方法だ」
DeadMG

2
はいといいえ。OPの質問は、基本を最初に示唆する学習についてでした。私は、C ++が最適な学習言語としての候補の1つであることを確信していません。とはいえ、Meyerはジェネリックとバリューとリファレンスの両方をカバーしていますが、より高度なトピックではあります。また、本の後半では、共分散と反分散についても説明しています。しかし、彼は最初に基本を設定します。(そして、エッフェルは静的に型付けされます)。
スフィニー

1
Eiffelの推奨事項に同意したり同意したりするつもりはありません。ただし、私が言ったように、JavaとC#の推奨事項には絶対に反対します。
-DeadMG

12

C ++、Java、C#などのオブジェクト指向言語を学習して、OOPSを試すことができます。

あなたが本当にOOPを学びたいなら、あなたは言語を超えて考え、それがこの現実の世界でそれらを管理するのと同じようにソフトウェアプログラムに関わるマンガの複雑さを助けるパラダイムであることを理解する必要があります。次に、多態性、継承、カプセル化(PIE)などのオブジェクト指向の基本概念を学びます。

Grady Boochによるアプリケーション指向のオブジェクト指向分析および設計(第2版)についても優れた書籍があります。

また、このようなブログを試してみることもできます。これは、fascinatingoops.comから始めるのに十分なほど簡単です。


3

OOPを学びたいですか?1つの答え-Smalltalk。

これはエレガントな言語であり、コアなオブジェクト指向です。OOPを最初から学習し、他の言語が取り入れようとする他のすべての注意散漫によって妨げられることはありません。

Smalltalkが勝ちます。また、無料の優れた電子書籍も利用できます(Stephane Ducasseを参照)


3

C ++、またはSmalltalkのような先祖の1つを学ぶ必要があります。C ++は、オブジェクト指向、メモリ管理、参照と値などの概念を明確に分離し、強力な汎用サポートを提供します。

JavaやC#のような.NET言語を学ばないでください。Javaのような言語を学ぶとき、「オブジェクトは常にヒープ上にあり、常に参照である」などのことを学びます。これはJavaにのみ当てはまり、一般的にOOPには当てはまりません。この概念の融合(オブジェクト指向、メモリ管理、参照と値)は、最初の言語では非常に危険です。なぜなら、それらを頭に閉じ込めると、それらを取り戻すのは非常に難しいからです。この点ではC#の方が多少優れていますが、それほど多くありません。さらに、一般的なプログラミングの弱いサポートで、「継承はハンマーであり、すべてが釘である」ことを教える傾向が高い場合があります。


これは非常に真実です。実際、OOPに非常に焦点を合わせており、OOPですべてを解決しようとする言語を扱う場合、OOPに適していない問題は決してわかりません。
-daramarak

1

OOPの概念を学ぶ最良の方法は、より多くのコードを記述し、頻繁にレビューすることです。優れたプログラマーを作りましょう。

現実世界のシナリオを考え、問題のステートメントを定義します-コードで解決し、レビューします。レビューについては、https://codereview.stackexchange.com/ からいつでもヘルプを入手できます。

ハッピーコーディング!!!


0

手順

  1. それらの意味を学びましょう。
  2. それらを実装する方法を学びます。
  3. 開発するプロジェクトを取り、言語を選択します(VB.NETまたはC#またはC ++またはjavaなどのOOPS原則を統合する必要があります)
  4. OOPSによってプロジェクトロジックを単純化する方法を考えてください。[注:OOPSを実装したいだけでなく、OOPSを実装するのではなく、目的を解決する必要があります]
  5. 忘れないでください:あなたもあなたの間違いから学びます

0

OOの世界への最初のコンタクトはC ++でしたが、これは悪いスタートではありませんでした。しかし、Pythonを学習するとき、私は大幅に改善しました。違いは言語にあります。C++でアイデアを試す(「OOの方法でこの問題を解決するにはどうすればよいですか?」)には、記述するコードが多く必要であり、Pythonで同じアイデアを試すよりもはるかに多くの落とし穴があります。だから私はPythonをお勧めします。


0

OOPを学ぼうとしている間に別の言語を調べるべきではないと思います。私にとっては、理論を把握してから、すでに知っていることと関連があれば理論を適用することを学ぶのは簡単です。新しい構文を理解することは邪魔になります。

どのOOPブックからでも始めることができます。繰り返しますが、私は選択した言語で1つを取得します。リファクタリングに関する本(OOPスタイル)を読んで、OOPの適用に役立ちました。私は既存のプロジェクト(要件収集から気を散らすものはありません)を取り上げ、それを改善する新しい方法を見つけました。OOPのためのOOPだけではありません。その後、新しいプロジェクトで最初から最後までそれを行う方法を学ぶことができます。ここでのロジックは、最初から常に正しいとは限らないということです。適切な場所を認識できれば、より良い結果が得られます。ほとんどの場合と同様に、すべての問題を解決できるわけではありません。

一部の言語には明確な制限があります。あなたの目標が多重継承のマスターになることであるなら、.NETは出ています。


0

ここでは、従来の考え方に反し、OOP を使用するための最も簡単な言語は、必ずしもそれを学習するのに最適な言語ではないことを提案します。私は最初にC ++でOOPに触れましたが、PerlでのOOPに関するLarry WallのCamel本の章を読むまで「取得」しませんでした。何らかの理由で、明示的にオブジェクトをクラスに祝福しなければならないまで、クラスとオブジェクトの違いを把握するのに苦労しました。CでGObjectを使用するまで、OOPの基礎となる実装を本当に理解していませんでした。言語に依存しない企業のクラスを受講するまで、ベストプラクティスを本当に理解していませんでした。非常に大きなトピックです

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