最近オブジェクト指向(OOP)について勉強し始めている。観念的なことは大体理解し始めてはいるのだけど、実際に使用してみるとハードコードから開放されようとして、脳みそが混沌とした状態になってくる。
一昨日の昼間、ちょっとだけ昼寝して目が覚めたとき。昼御飯が見事にOOPになってしまった夢(と言うより寝起きの思考)を見たのでメモ的報告を。
今日の昼は「うどん」にしようと朝から決めていた。ちょっと薄口醤油を多目にして、暑い夏を元気に乗り切る寸法。 昼寝から目が覚めても床に伏したまま、半分まどろんだ状態で「うどん」のことを悩む。
なぜ「そば」にしなかったのか?最初は少しばかり後悔したが、「うどんクラス」から継承すればいいとOOPの継承の有効性に感謝する。 しかし、ここで問題が。「そばクラス」を「うどんクラス」から継承するより、「麺クラス」をスーパークラスとして定義したほうが後々、「パスタクラス」や「ラーメンクラス」を作る際に便利に違いないと、今度コードを見直すことを脳内TODOに追加。
そこで新たな疑問が浮上してくる。「うどんの麺はあるのか?」というメソッドは書いたのだろうか?としたらどこに? 自分というオブジェクトに対してなのか、その親クラスか(両親のことか?それとも人間ということか?)。いやいや、自分のメソッド内メソッドとして書いておいたような…? (ここらで完全に混乱している。) デザインパターン的に、どこに書いたらベストなのだろうか。とりあえずテンプレートパターンはあるはずだから、一応頭のパーツあたりに書いておけば問題なかろうと思ったけど、ちょっと待ったである。 「麺があるのか?」という思考のメソッドに属するものだから、え~っと。「思考クラス」という別のクラスがあればそっちに書かなくちゃいかんと思いつつ。いや、例えそれが機能したとしても、イベントのリスナーはどこ?手足にリスナーか?いや手足の細胞全部に書くわけにはいかん、手と足のオブジェクトに割当てればいいんだ。それを細胞が受け取るって塩梅かな?
段々と目が覚めてきて、「ちょっと待てよ…」と。何億もある細胞を動かすのって、自分のPCで出来るのか?。ツールは何を使えばいいんだ?メモリは足りるのか?
…とアホなことを頭から振り払うように起き上がり、何事もなかったかのように「うどん」を作りはじめる。その間もどうもスッキリしないまま作業し続けた。そうこうして醤油多めのアツアツうどん水菜乗せが完成。 そのうどんを啜りながら、「やっぱ僕って人間なのね」とチョッピリ感動。ピチピチはねる「おつゆ」にも耐え、食べ終えてから煙草を一本燻らせて思うに「OOP向いてないのかな…」。
まだ、OOPで思考することが体に馴染んでないからなのか、体が受け付けないのかわからないけど。トラウマになったりするかも…。とちょっと心配。 (上記のクラスやOOP関係の記述は、すべて半分寝ている状態の話なので、いわゆる捏造のようなものです。間違いなどありますが、まぁ、夢なんで堪忍つかあさい。)