|
|
ポリモーフィズムポリモーフィズム(Polymorphism)とは、主にオブジェクト指向プログラミングで、あるオブジェクトへの操作が呼び出し側(sender)ではなく、受け手のオブジェクト(receiver)によって定まる特性のこと。訳語に多態性、多相性、多様性などの他、読みもポリモフィズム、ポリモルフィズムなど多少揺れがある。 古典的なプログラミング言語では関数や手続きはそれぞれ一意に識別される名前と結びついており、従って異なった動作を実現するためには異なった名前を用いる必要があった。 例えば、何かの値を文字列形式に変換する最も単純な場合を考える。古典的な言語では、次のように別々の関数になっていなければならない。
string = StringFromNumber(number)
string = StringFromDate(date) 一方多態を行なう場合では、StringValue のような汎用の述語を定義し、型別にそれぞれ適切な変換方式を定義させることでオブジェクトの種別によらない抽象度の高い変換形式を実現できる。
string = number.StringValue string = date.StringValue 無論、StringValueの定義は型別に行なわなければならないので、総体として記述量が減少するわけではない(継承による再利用はありうる)。また、何をもって「正しい動作」とするのかはオブジェクトの設計に依存するため、多態を使いこなすにはシステム全体を見通す優れた設計能力が要求される。 [編集] 関連項目 |