オブジェクト指向とは
wikiより
オブジェクト指向(オブジェクトしこう)とは、オブジェクト同士の相互作用として、システムの振る舞いをとらえる考え方である。 英語の object-oriented (直訳は、「対象物志向の」「目的重視の」という意味の形容詞) の日本語訳である。 オブジェクト指向の枠組みが持つ道具立ては、一般的で強力な記述能力を持つ。
正直この説明だけでは私は分かりません。継承とか、ポリモーフィズムとか説明してもいいのですが、そういったことよりももっとシンプルに考えたほうがいいのかなと学習しながら思いました。
ですので私は以下のように考えています。
プログラムを手順ではなくて、モノの作成と操作として見る考え方
なのかなと思います。
例えばテレビについて、中の回路の仕組みとかを知る必要はなくて、テレビという存在と操作方法が分かれば良い。みたいな感じだと思います。
ただ、この説明も私の中でこう思っているだけで、若干ずれているのかもしれません。そもそも本やサイトを探しても、明確な回答が得られない気がします。
なら、ざっくりとした考え方で捉えてもいいのかなと思います。
だから難しく感じる部分なのかなと思います。
なぜオブジェクト指向で作るのか?目的は?
私は
良いソフトウェアを楽に開発したいから
と考えています。
なぜ楽に開発できるようになるのか
- 現実を手本にして、それをまねて作ればいいから。
- 現実に変化があれば、対応する部品(クラス)を修正または交換すれば簡単に修正ができる。
- 大変な作業をがなくなる。
大変な作業がなくなる
これは車で例えるとわかりやすいかもしれません。
例えばA車は〇で進む、×で戻る。
B車は〇で進む、×で戻る。
C車は〇で進む、×で戻る。
と3台程度なら気になりませんがもし10000台、10000台となったときに非常に面倒です。
また、仕様変更で×で止まるになったとしましょう。もしその時10000台あったら・・・と考えるととても大変な作業になります。
ですので考え方を変えて、「車」というモノを1つ作ってやればいいんです。
「車」は〇で進む、×で戻る。
A車は「車」をコピーして、色は赤色。
B車は「車」をコピーして、色は青色。
C車は「車」をコピーして、色は黒色。
とすれば何か修正があったときに「車」を変更してあげればすべて変わります。
この仕組みが、オブジェクト指向の3大機能の1つの「継承」というやつです。
まとめ
- オブジェクト指向とはモノの作成と操作として見る考え方
- オブジェクト指向で開発すると良いものが楽に作れる
- オブジェクト指向の3大機能、「カプセル化」「継承」「ポリモーフィズム」