ポリモーフィズム
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ポリモーフィズムあるいはポリモルフィズム(Polymorphism)とは、プログラミング言語の型システムの性質を表すもので、プログラミング言語の各要素(定数、変数、式、オブジェクト、関数、メソッドなど)についてそれらが複数の型に属することを許すという性質を指す。多態性、多相性、多様性とも呼ばれる。対義語はモノモーフィズム(Monomorphism)、単態性、単相性で、プログラミング言語の各要素が唯一つの型に属するという性質を指す。
例 [編集]
モノモーフィックな型システムを持つプログラミング言語では関数や手続きはそれぞれ一意に識別される名前と結びついており、従って異なった動作を実現するためには異なった名前を用いる必要があった。
例えば、何かの値を文字列形式に変換する最も単純な場合を考える。モノモーフィックな型システムを持つ言語では、次のように別々の関数になっていなければならない。
- 古典的な変換関数:
- 数値を文字列にする場合
string = StringFromNumber(number)
-
- 日付値を文字列にする場合
string = StringFromDate(date)
一方ポリモーフィックな型システムを持つ言語では、StringValue のような汎用の述語を定義し、型別にそれぞれ適切な変換方式を定義させることでオブジェクトの種別によらない抽象度の高い変換形式を実現できる。
- 多態を行なう変換方式:
- 見た目上、型によらない変換が可能
string = number.StringValue string = date.StringValue
無論、StringValueの定義は型別に行なわなければならないので、総体として記述量が減少するわけではない(継承による再利用はありうる)。また、何をもって「正しい動作」とするのかはオブジェクトの設計に依存するため、多態を使いこなすにはシステム全体を見通す優れた設計能力が要求される。
参考文献 [編集]
- Cardelli, Luca; Wegner, Peter (1986), “On Understanding Types, Data Abstraction, and Polymorphism”, ACM Computing Surveys 17 (4)