capsctrldays

2002-11-10 (日) [長年日記]

「問題の定義ができたら、あとは解決策を見つければいい」

というのが、最近流行りの「ロジカルシンキング」のコアな部分です。あまりに抽象的な問題定義(赤字をなくすには?)や、漏れのある問題定義(中途採用を雇うかリストラを行うか)を行ってしまうと、問題解決などできるわけがねーじゃん、というわけ。そりゃそうだ。

ということは、「あれをどうしようか」なんつって思案するよりも、「そもそもなんでこんなことやんだ?」って考えること、つまり問題定義を再定義することのほうがより重要なんじゃねーかと最近おもっております。

ええと、オブジェクト指向やるっつってたっけ。

つか、んなこと出来るわけねーじゃん。こっちも素人だよ。んがあ、ちょっと面白い例を考えついたのでご紹介。よくあるコントやドラマのシーンです。

「母さん、お茶」

これ!これがオブジェクト指向だよ!とか思った。いま。勝手にだけど。

つまり、これを実装で表すと、

母さん.お茶();

なわけ。スゴくね?当然戻り値は「お茶型」ですよ。おー。まんまだ。

で、オヤジはだんだんと「母さん」なんて呼ばなくなりますよね。「オイ」とか「おーい」とかなりますよね。

「おい、お茶」

こうなると、目的は「お茶」は元のまま変わりませんが、メッセージの宛先が誰だか分からなくなります。ただし重要なのは目的の「お茶」であって、お父さんも別にお母さんじゃなくて、娘がお茶をもって来ても構わないわけですね。となると、

家族.お茶();

という実装になるかと思います。ここで出てきました。「家族」というスーパークラス。家族っていう人間なんていませんから、抽象的なクラスですね。{abstract}です。

さっき出てきたお母さんは、家族なわけですから、「お母さん is a 家族」ということで継承関係が生まれます。娘も家族ですから、ココにも継承関係。

お父さん(クライアント)が望むものは「お茶」ですから、抽象クラスのメソッドに「お茶();」を追加してあげるわけですね。そして、各々が実装、と。お茶の煎れかたはそれぞれ違いますからね.すばらしい。まとまっている!

こうすると何がいいかっつーと、お母さんがいなくなっても大丈夫ですし、あとから娘の旦那さん現れてお父さんにお茶を煎れることも可能になるというわけです。

あまり長くやるとボロが出るので、また次回!(要望があれば)

#あまりお母さんを雑に扱ってると,Exception発生しちゃうよ。