株式会社ソフィス

株式会社ソフィス - ソフトウェアの設計・教育・実装

プログラマーの朝礼

オブジェクト指向的 不忍の池?

株式会社 ソフィス 株式会社 ソフィス (2016年4月1日 7:31)

 とても久々の投稿となってしまいました。忙しくとも継続しなくてはと思いつついつの間にか1年が・・・

 さて、今週、家族で3日間の東京旅行に行きました。ディズニーランド、スカイツリー。そして、最終日に上野公園に。あいにくの曇り空でしたが、公園は花見客で一杯でした。右の写真は、その時の不忍の池の様子です。

 その時、昔聞いた道歌を思い出しました。( ただ、その歌は不忍の池を歌ったものではなくて猿沢の池を歌ったものですが … ^^; ) 下の歌の「猿沢池」を「不忍の池」に読み替えて下さい(笑)。

 「 手を打てば 鯉は集まり 鳥は逃げ 女中茶を汲む 猿沢池 」

 情景を思い浮かべて下さい。今、あなたは猿沢池のほとりにいるとします。あなたが手を打ちます。ポン!。 すると、回りの光景に変化が起こります。鯉は、えさをもらえると思い、寄ってきます。鳥は、危険を感じ、逃げ出します。そして、茶屋の女中は、お客のお呼びと思い、お茶を持って来ます。このように、何気ないあなたの仕草に対する周囲の反応は様々です。

さて、ここまでは、常識人的でつまらない話ですが、この歌をよく見て下さい。

 「 手を打てば 鯉は○○○ 鳥は△△△ 女中・・・ 」

何かに似てると思いませんか?

  • 「手を打つ」 —— メッセージ
  • 「鯉、鳥、女中」— オブジェクト

と考えると、この歌は猿沢池でのポリモーフィズム(多態性)を歌ったものである事に気づきます。「猿沢池」システムでは、「手を打つ」というメッセージが定義されたインターフェースを、全ての「猿沢池の周りにいる生き物」クラスが継承しており、「鯉」「鳥」「女中」クラスでは、「手を打つ」というメッセージに対して個々の実装がしてあります。その結果、あなたの「手を打つ」というメッセージに対して、周囲の生き物は様々な反応を示す事になります。

この道歌、実は、多態性の実例を新人プログラマーに教える為の歌だったのではないでしょうか 。。。 再び(笑)