Mixin
Mixinとはオブジェクト指向プログラミング言語において、サブクラスによって継承されることにより機能を提供し、単体で動作することを意図しないクラスである。Mixin からの継承は、特化の一形態ではなく、むしろ機能を他のクラスから集めるための手段である。あるクラスは多重継承により複数の Mixin クラスから継承を行って、大半の機能を継承によって実現することができる。Mixin は Symbolics 社のオブジェクト指向システム Flavors で初めて登場し、LISPマシン で用いられたオブジェクト指向への試みであった。この名称は、マサチューセッツ州 Somerville にあった Steve's Ice Cream Parlor からヒントを得て考え出されたものであった(※Using Mix-ins with Python)。このアイスクリーム店の店長は(バニラやチョコレートなどの)基本となる味を混ぜ、追加の具材(ナッツ、クッキー、キャンディなど)と組み合わせたものを提供し、それを"Mix-in"と呼んで店の登録商標としていた(※LISTSERV 14.4)。Mixin はコードの再利用を促進し、多重継承にまつわる良く知られた症状を避けることができる。しかし、 Mixin にはそれなりの妥協も伴う。Mixin は、「メソッド付きのインターフェース」ということもできる。クラスが Mixin を含む場合、そのインターフェースを実装したクラスは、Mixin の属性と操作を取り込む。継承するというのとは異なっている。 取り込んだ要素はコンパイル時にクラスの一部となる。興味深いことに、 Mixin はインターフェイスを実装する必要はない。それでもあえてインターフェイスを実装する利点は、そのインターフェイスを必要とするメソッドに、引数としてインスタンスを渡せるからである。Mixin では、属性とインスタンス化のパラメータをコンパイル時に決定させつつ、メソッドのバインディングを実行時まで遅延させることができる。これは Simula に始まるプログラム言語の、全ての属性とメソッドと初期化の方法をコンパイル時に決定する広く用いられるアプローチとは異なる。

1 定義と実装
2
3
4 関連項目
5 参考文献
6 外部リンク