http://blogs.wankuma.com/rti/archive/2007/07/30/87742.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門3
http://blogs.wankuma.com/rti/archive/2007/07/26/87105.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門2
http://blogs.wankuma.com/rti/archive/2007/07/25/86988.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門1
の続きです。
どこからフォローすれば良いのかわからないので、先頭から順に行ってます。
今回は「使うは易し、作るは難し」というテーマです。
僕は以前から「誰でもオブジェクト指向には既に触れていますよ」とか「使ってきているから本来ならわかっている筈なんですよ」というようなことを言ってきましたが、そんな皆さんが何故つまずくのでしょうか?
オブジェクト指向によるプログラミングは、使うときは便利ですし簡単なのですが、いざ作る時に難しいと言う話をよく聞きます。恐らくは、ここにつまずく原因があるのではないでしょうか。
先ほどのボタンコントロールの例も同様ですね。
一方で、R・田中一郎クラスはどうでしょう?
大したクラスではありません。初心者の方でも簡単に作れますよね。
しかし、R・田中一郎クラスも、立派なオブジェクト指向プログラミングなのです。
つまり、難しい理由がオブジェクト指向プログラミングそのものにあるのでは決してないのです。
じゃあ、何が難しいのか?
それは、これだと僕は思います。
設計・実装
今までの構造化プログラミングでは、単純に手続きを書くだけでした。
つまりは、上から順に手続きを書いていって、その手続きが独立性を帯びてきたらメソッドアウトして目的を明確にしたり再利用してきました。
そうやって書いているうちに、何と無く完成してしまいます。
そうして出来上がったコードの中には、実は再利用できるコードが断片的に多く含まれていることが多いのです。
しかし、関連する手続きや変数などが、あちこちに点在してしまっていますし、考え方からして上から順に処理をしています。
従って、どうしても再利用できる筈の処理が断片的になってしまいがちになります。
オブジェクト指向プログラミングでは、これらの関連する変数や手続きが、どのように構成されるべきかを予め明確に設計します。
そして、これに基づいて実装します。
恐らく、ここで多くの方がオブジェクト指向プログラミングが難しいと感じてしまうのではないかと僕は思っています。
しかし、難しいのは設計や実装という点であって、オブジェクト指向そのものではありません。
ですから、オブジェクト指向プログラミングが難しいものと思っている方は、ここで誤解を解いて下さい。
・・・・視点を変えてみましょう。
.NETFramework は大量の機能の塊です。それらはクラスとメンバによって目的ごとに分類されています。
ですから初心者の方でも、膨大な機能の塊から目的の処理をしてくれる機能を探し出して使いこなすことができます。
現に、オブジェクト指向プログラミングなんて経験がないと仰っている方も難なく利用できています。
先ほどのボタンコントロールでも、クラスがひとつあれば、たくさんのオブジェクトが簡単に作れると言いました。
これは結局、コードの再利用化の理想的な形だと思うのです。
つまり、オブジェクト指向プログラミングとは、自作、他作に関わらず、既存のコード資産を徹底的に効率良く管理して再利用できる最強の方法であるということではないでしょうか?
但し、そのためにはいい加減な設計をしていては、いい加減な物、つまりオブジェクトしか作れません。
だから、設計をしっかりしましょうということなのです。
ただ、ここで言いたいことを誤解しないで欲しいのですが、オブジェクト指向をするために設計の勉強をたくさんしなさい、と言っているのではありません。
オブジェクト指向プログラミングは難しくないよ、難しいのは設計だよ、と言いたいのです。