単態性と多態性
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/05 07:11 UTC 版)
ポリモーフィズムの対義語としてモノモーフィズム(monomorphism、単態性、単相性)という言葉が使われることがある。 モノモーフィックな型システムを持つプログラミング言語では、サブルーチン(言語によっては関数や手続きとも呼ばれる)はそれぞれ一意に識別される名前(識別子)と結びついており、従って異なる動作を実現するためには異なる名前を用いる必要があった。 例えば、何かの値を文字列形式に変換する最も単純な場合を考える。モノモーフィックな型システムを持つ言語では、次のように別々の関数になっていなければならない。 古典的な変換関数:数値を文字列にする場合 string = StringFromNumber(number) 日付値を文字列にする場合 string = StringFromDate(date) 一方ポリモーフィックな型システムを持つ言語では、StringValue のような汎用の述語を定義し、型別にそれぞれ適切な変換方式を定義させることでオブジェクトの種別によらない抽象度の高い変換形式を実現できる。 多態的な変換方式:見た目上、型によらない変換が可能 string = number.StringValuestring = date.StringValue 関数オーバーロードをサポートする言語では、共通の名前を持ち、引数の型だけが異なる StringFrom のような関数を定義することもできる。 string = StringFrom(number)string = StringFrom(date) 無論、StringValueやStringFromの定義は型ごとに行なわなければならないので、総体として記述量が減少するとは限らない(継承やジェネリックプログラミングによるコードの再利用はありうる)。また、何をもって「正しい動作」とするのかはオブジェクトの設計に依存するため、多態を使いこなすにはシステム全体を見通す設計能力が要求される。
※この「単態性と多態性」の解説は、「ポリモーフィズム」の解説の一部です。
「単態性と多態性」を含む「ポリモーフィズム」の記事については、「ポリモーフィズム」の概要を参照ください。
- 単態性と多態性のページへのリンク