tristanの日記: オブジェクト指向の難しさの本質
人間は、概念的に生み出されたものを、一つの実体として把握することができます。
特定の方程式のxとyの値を、X軸とY軸にプロットしたものを、
「放物線」という一つの実体として扱うことができます。
仏教では、死後の世界を「極楽浄土」として実体化しています。
ルソーは、主権者の持つ意思である、一般意思という概念を、
実体化したことで、非常に明晰に民主主義社会の原則を
述べることができました。
「時間」だって、そのようなものの一つであると言い得るかもしれません。
わたしは、勉強不足で、人間のこの能力について詳しいことは知りません。
しかし、この能力は、非常に高度なものなのではないかという考えは、正しいのではないかと思います。
他人が実体化した概念を学ぶことに比べて、自分で実体化することは、ずっと困難なことです。
オブジェクト指向の本質は、この能力によって把握されたものを、コンピュータ上でそのままに表現することだと思います。
1.人間のこの能力自体が、非常に高度なものである
2.実体として世界を把握することと、それをコンピュータ上でそのとおりに表現することの間には、深い溝がある
これらの理由のため、オブジェクト指向は、今でもみなが苦労するのだと思います。
オブジェクト指向の特徴として、下の3つがあげられます。
1.カプセル化
2.継承
3.ポリモーフィズム
1は、オブジェクトそれ自身に関すること。
2,3は、オブジェクト間の関係に関することです。
実体化された概念は、それ自体が一つの実体ですから、その内部で処理されることは内部で完結しなければなりません。とはいえ、それぞれの実体には、関連する部分があり、共有できる部分があります。それを上の3つで表現しているのです。
オブジェクト指向の開発においては、まず、各種の必要な概念の実体を定め、オブジェクトからなる「箱庭世界」を「創造(クリエイト)」しなければなりません。その上で、その世界で起こる現象を記述します。
それ以前の開発手法においては、実体的に把握された概念の体系が創造されることはありませんでした。少なくとも、人間の心の中に存在し、ドキュメントに落とされることはあっても、プログラミング言語という「コンピュータが分かる」厳密な言葉で記述されることはありませんでした。
以前の手法では、個別の事象だけに着目がされていたのです。各事象を人間が把握することがあっても、その事象の主人公たちが、全体として体系化されて把握されることはなかったのです。
オブジェクト指向の開発においては、開発者は、開発対象をシステム化するという意識ではなく、開発対象の世界を創造する神という意識をもたねばなりません。概念を実体化させる哲学者にならねばなりません。
このような態度が必要であることをきちんと認知しない限り、オブジェクト指向を使いこなせるようにはならないでしょう。
オブジェクト指向の難しさの本質 More ログイン