続・オブジェクト脳

こんにちは

構造化プログラミングになれてしまっている人は、なかなかオブジェクト指向プログラミングには切り替わらないようだ。私もそうだった。構造化言語は、プログラムを構造化することで読みやすくしたものであり、オブジェクト指向も読みやすくしたものである。そのため、オブジェクト指向プログラミングというのは、構造化プログラミングの延長線上にあるはずなのだが、思想が違うためそこにはギャップがあるようだ。

構造化言語は、コマンドを組み合わせるものである。一方、オブジェクト指向とは、オブジェクトと呼ばれるミニシステムに分けて、システマチックにシステムを構成する方法である。構造化プログラミングは、プログラミング自体に視点が置かれているが、オブジェクト指向では、プログラムデザインやモデリングといったことに視点が置かれている。

単にプログラムするという観点から、オブジェクト指向の優位点は見いだせない。なぜなら、オブジェクト指向で組めばオーバーヘッドが存在するからだ。オブジェクト指向でなければ出来ないこともさほど存在しない。オブジェクト指向では、プログラムよりプログラムデザインが重要なのである。オブジェクトというミニシステムをいかにうまくデザインできるか、が重要なのである。

オブジェクトがなぜミニシステムなのかというと、インターフェースと処理、データをすべて持っていて、単体で動くことが出来るからである。すなわち、オブジェクト指向プログラムは、単体で動くことが出来るミニシステムをつなぎ合わせていく手法であり、プログラムそのものは手段であって目的ではない。極端な話、オブジェクト指向ではプログラムをほとんどせずにシステムを作り上げることもあり得る。それにどちらかといえば、いかにプログラムせずに作り上げるかが優れたオブジェクト指向なのである。

オブジェクト指向になれていない人は、なぜ、こんな面倒なことをやるんだ、構造化言語ならもっと簡単に記述できるのに、と言うがそれは正しい。実は、面倒なものは組まなければいいのだ。オブジェクト指向では、プログラムは組むことより利用することが重要である。端的に言えば、ミニシステムの役割を果たすオブジェクトは世界で1つあればよく、他の人はそれを使えばよい。全く同じ物を手間暇かけて組むのはムダである。最先端の技術をやっている人以外の、いわゆる普通のシステムを作る場合は、それをやるためのミニシステムであるオブジェクトは探せばいくらでもある。それを一から作ろうとするから面倒なのであって、作ろうとせず利用すればムダなことはしなくて済む。

だから、実はオブジェクト指向というのはプログラムという観点から入るよりも、公開されていて自由に利用できるオブジェクトのリストを作成し整理し、それを以下に自分が活用できるか、という観点からスタートすべきなのだ。オブジェクトは作るのは難しいが利用するのは簡単であり、要するに利用することによって初めてメリットが得られる仕組みである。

だが、残念なのは構造化プログラム出身の方はどうも利用することよりどうしても作ろうとしてしまうようだ。だから、さまざまな苦労をしているようで、オブジェクト指向は嫌だ、面倒だと思ってしまうのではないだろうか。オブジェクトは利用ということが大事だから、オブジェクト指向ではプログラマーというよりも、モデリングという作業が重要になる。構造化言語に慣れ親しんだプログラマーの方は、なかなかそこが切り替わらないようである。

ではまた