2018.01/19 プログラミング(11)
プログラミング言語を全く知らない実務経験者がオブジェクト指向のパラダイムだけを学ぶと、比較的理解しやすいかもしれない。すなわち、実務で問題解決にあたるとき、熟練実務経験者の思考方法はオブジェクト指向に近いからだ。
ちなみにドラッカーも問題解決の熟練者で、問題とは現状とあるべき姿の差異だと述べている。すなわち問題というオブジェクトが見えにくいときには、あるべき姿というオブジェクトと現状というオブジェクトを具体化せよ、と言っているのだ。
彼の問題の定義によれば、問題解決とは現状をあるべき姿に導く道筋を見つけることであり、その方法は、常にあるべき姿から考えることだという。
すなわち、あるべき姿というオブジェクトを忘れずに、現状というオブジェクトに幾つかのオブジェクトを組み合わせてイノベーションを進めゴールのオブジェクトに到達する作業といえる。
この時、現状というオブジェクトの実体(C#ではインスタンスと呼ぶ)は存在するが、あるべき姿は具体的に見えていたとしても実体は無い。しかし、イノベーションを行うときに使用するオブジェクトでは、イノベーションするときに実体を生成しなければあるべき姿に近づけない。
以前、女子スケーターにはグレーシーゴールドのようなオブジェクトもあれば、演技が始まると突如輝き、その実体が現れる女子スケーターもいると書いたが、オブジェクト指向では、ゴールのオブジェクトへたどり着くまでに、すべてのオブジェクトが実体(インスタンス)として存在している必要はない。必要なときにそのインスタンスが作られれば良いのだ。
(注)実際の問題解決では、オブジェクトとその内容(C#では、プロパティとメソッドなど)が明らかになっておればよいが、プログラムではそのコードがメモリー上に存在しなければ動作できない。オブジェクトをあるメモリー領域にロードする操作を「オブジェクトからインスタンスを生成する」と言っている。C#では、newというコマンドを使い、オブジェクトの名前には、オブジェクトがロードされたメモリー領域の先頭の番地が割り当てられる。このため、オブジェクトのメソッドを活用したいときには、オブジェクトの名前に割り当てられた番地を頼りにメソッドへたどり着いてそれを実行することになる。このように直接目的とする値やオブジェクトなどにアクセスせず、メモリーの番地を頼りに間接的にアクセスすることを参照という。プログラミングの教科書には、日常生活で使わない言葉が説明もなくポンポンと出てくるものがあり、それが日本語で書かれていても理解を難しくしている。
カテゴリー : 一般
pagetop