[SML 7524] Re: オーバロードはポリモフィズムか?

sunao furukawa sadie @ kind.ocn.ne.jp
2009年 5月 1日 (金) 18:03:56 JST


古川と申します。
>
> そもそもポリモフィズムの定義って何ですかね。
>
> 「同じメッセージを異なるオブジェクトに送った場合、メッセージを受け取った
> オブジェクトの種類によって異なる動作をしてもよい。」と思っていたんです。
> 「同じメッセージ」とは「メソッドのシグネチャが同じ」という意味です。
> 「メッセージ名が同じ」という意味ではありません。
>
 「サクサクSmalltalk」には多相性について、
「あるメッセージがオブジェクトに送られたとき、実際に実行されるメソッドは、そのオブジェクトのクラスにより異なる」
と書いてあります。
 Microsoftの「C++(version 4)入門」の関数のオーバーロードを読んでみると、
「同一の関数名に複数の意味を与える操作をオーバーロードと呼ぶ。」
「同名の関数を区別するときは、パラメーターリストだけで判断される。」
と書いてあります。パラメーターリストが違うということは、メソッドのシグネチャが異なるということですよね。
 このように考えてみると、「複数の意味を与える」というのが「オブジェクトのクラスにより異なる」というのが一致しない(C++では同じクラスで複数の意味を与えることができる)、
と思いました。同じシグネチャで複数の意味を与えることがC++ではできないのでオーバーロードと多相性には関連性はないのではないかと思いました。
 私は計算機科学については素人なので的外れなことを書いたかもしれません。少し混乱しています。しかし、昔から興味のある分野だったのであえて投稿します。間違いの指摘などは歓迎します。皆さんの考えを聞いてみたいです。 




SML メーリングリストの案内