Mix-inのココロ

Mix-inの話題がMakoto Hiroiさんのプログラミング言語解説にあった(http://www.geocities.jp/m_hiroi/memo.html)。このHiroiさんの解説は、ずいぶん前にxyzzyLispだとか、Prologの説明だとかで、繰り返し読んだことがある。Prologとかってどんな言語か全然知らなかったから、えらくおもしろく読んだ記憶がある。

で、Hiroiさんの解説によれば、Mix-inというのはスーパークラスを1つに限定しつつ、多重継承のようにさまざまなメソッドを継承できるようにしたものらしい。それは多重継承の欠点である名前の衝突を避ける有効な方法なんだとか。なるほど、インスタンス変数(ってJavaScriptではインスタンスのプロパティ?)はクラスの継承関係でツリーに整理して、それとは別にメソッドをまとめてモジュール化、そしてモジュールをMix-inすることでリッチなメソッドを備えたクラスを作りつつ、無駄を省いた設計ができるということか。

これはどうもSmalltalk由来のOOの考え方らしい。最近日経BPから出た「Smalltalkで学ぶオブジェクト指向プログラミングの本質」という本を、ちょっと読んでみたくなった。