wikipediaで見ると、
mixinとは、「サブクラスによって継承されることにより機能を提供し、単体で動作することを意図しないクラスである。」(日本語版)
「a mixin is a class that provides a certain functionality to be inherited by a subclass, but is not meant to stand alone. 」(英語版)
とあります。この説明自体は、なるほど、という感じです。
で、Mixinをサポートするプログラミング言語として列挙されているのは、
* D言語 ("template mixin"と呼ばれる)
* Dylan
* Perl
* Python
* Ruby
* Scala
* Strongtalk
* XOTcl (Tcl向けのオブジェクト指向拡張])
英語版では、これにさらに次の言語が加わってます。
* PLT Scheme
* Smalltalk
ここで、mixinをサポートする言語かどうかを判定している基準がよくわかりません。
Pythonがmixinをサポートしているとなっていますが、言語のキーワードにmixinがあるわけじゃないし。wikipediaの例は、単なる多重継承だし。
それだったら、C++のライブラリであるboostのiterator_adaptorなんかまさに上述の定義にはまってるから、C++もmixinをサポートする言語にれても良いんじゃないかという気がしますが・・・
謎。
(2008/10/31 タイポ等修正。)
mixinとは、「サブクラスによって継承されることにより機能を提供し、単体で動作することを意図しないクラスである。」(日本語版)
「a mixin is a class that provides a certain functionality to be inherited by a subclass, but is not meant to stand alone. 」(英語版)
とあります。この説明自体は、なるほど、という感じです。
で、Mixinをサポートするプログラミング言語として列挙されているのは、
* D言語 ("template mixin"と呼ばれる)
* Dylan
* Perl
* Python
* Ruby
* Scala
* Strongtalk
* XOTcl (Tcl向けのオブジェクト指向拡張])
英語版では、これにさらに次の言語が加わってます。
* PLT Scheme
* Smalltalk
ここで、mixinをサポートする言語かどうかを判定している基準がよくわかりません。
Pythonがmixinをサポートしているとなっていますが、言語のキーワードにmixinがあるわけじゃないし。wikipediaの例は、単なる多重継承だし。
それだったら、C++のライブラリであるboostのiterator_adaptorなんかまさに上述の定義にはまってるから、C++もmixinをサポートする言語にれても良いんじゃないかという気がしますが・・・
謎。
(2008/10/31 タイポ等修正。)