オブジェクト指向ってよくわからん、という人のためになればと
それは百面相
火の取り扱い、注意、便利なこと、その可能性といった知識の集合はイメージしやすい。
この知識の集合を「火について」と呼ぶことにする。
さて、オブジェクト指向も「オブジェクトについて」としてはどうだろう?
オブジェクト指向のよくある勘違いは「1つの具体的な知識」であると
とらえてしまい、百面相を見せられ、なんだこれは、となってしまうため筋道がみえなくなる。
だから、こう考えてみる。
オブジェクト指向は、あることがらを、良く使うため、それによってプログラムを良くするため、またその短所をのりきるための知識の集合であると。
火も万能ではないし、今ならホットカーペットや代わりになる暖房器具、電子レンジがある。
あることとは?
複数の情報と複数の処理を1つのモノのようにまとめて、定義し実体化させ、扱えるようになった(した)。
あること、とは「複数の情報と複数の処理を1つのモノのようにまとめる」ことである。
そのひとつ前は構造体という情報の群であったり、モジュールという処理の群であった。
この組み合わせた夢が、あること、である。
あることで便利になるのでは?と思うものが合った
- もっと直感的にプログラムが書きたい
- もっと手直ししやすいようにと考えた
- 同じコードをなるべく書かないでまとめたい
それらが、完璧を保証されずとも希望によって発展すべしと受け入れられたのである。
使うのは便利かもしれない
構造体ならの変数へのアクセスは次のようになる
my_frend.age = 17;
オブジェクトなら処理へのアクセスも同じように
my_frend.eat( pan );
「なにを」→「どうしたいか」と、変数とおなじながれで書ける。
そのため、コンマを打った後に予測して変数を表示する機能に処理も含まれていった。
余談...
変数と関数で()の有無があってややこしいから、
公開するメンバ変数全部にGet~()、Set~()と関数を用意して変数隠そうぜ、という流れもあって、結局コードが書きにくいなぁというのもありましてね…
P.S.
実際の歴史上の細かい話や、具体的なことは、いったんおいておいて、
知り合いから指摘された「わかりにくさ」について考えたものです。