短い答え:いいえ。
長い答え:OOPは単純ではないため、「単純な方法」はありません。手続き型プログラミングは、すべて「変数」と「if then goto」に関するものです。他のすべては構文糖ですが、これらの4つのことは、手続き型プログラミングのすべてです。それらを取得したら、何もあなたを止めることはできません。
OOPは、変数とコードを整理する方法です。OOPを定義するためのパターンはいくつありますか?25?30?さまざまな言語や背景からOOPを学んだ教師でさえ、独自の定義に同意していません。
どうやってそこに来たのかわかりませんが、あなたのお母さんは私の経験と似ているので、どうやってそこに来たか教えてください。
私は非常に大きなプロジェクトでCでプログラミングしていました。それは1988年でした。多くのプログラマーがモジュールとライブラリを編成し、他のジョブへの干渉を避け、職務を適切に分離するのが困難でした。
相互に関連するすべてのグローバルデータを構造体に入れ、コールバックが必要な関数ポインターを構造体に配置する「解決策」に到達しました。私たちはそのようにio_mask
(テキストモードのダイアログボックスの種類)graphic_manager
などと呼ばれるものを一般化しました。
1996年、これらの構造体は「クラス」と名付けられ、それらの関数ポインターはメンバー関数と仮想関数、またはその古いプロジェクトを更新した他のプログラマーによる他のオブジェクトへのリンク(ビヘイビアと呼ばれる)に置き換えられたことを発見するのは非常に簡単でした。
OOP の必要性を感じ始めたとき、OOPを理解し始めました:分離、ポリモーフィズム、およびランタイム定義の動作。
今日私はOOPで働いていますが、私はそれを奉仕する教義とは考えていません:長い説明と説明を常に提供する必要なしに一緒に話すことができる単なる「一般的なイディオム」(...のセット) 。実際、何よりも「慣習」です。結局のところ、OOPが行うことはすべて、再び「if then goto」であり、単に「多層化」されます。したがって、イディオムに対する抽象化とイディオム。
それらを無視します。彼女がそれらの必要性を感じるまで、説明しようとさえしません。彼女はそれらを単純なことをするための複雑な方法として感じるでしょう。そして彼女は正しいです...彼女がやることが-事実-シンプルになるまで。
トップに4つしかない場合、誰も「机を整理する」とは思わないでしょう。上にあるものが互いに干渉し始めるとき、それは理にかなっています。それが、OOPが登場する時です。
C ++で作業するためにOOPは必要ありません。C ++標準ライブラリ全体は、OOPの観点からは設計されていません(ただし、連携できますが)。C++はJavaではありません。
私の経験では、最悪のC ++教師とC ++プログラマーはJavaから来た人であり、すべてについて偏見を教えるのはOOPではありません。
C ++:Accelerated C ++にアプローチしたい人のために良い本を提案させてください。事前定義された教義に従うふりをせずに、C ++のイディオムを紹介します。