3.

ポリモーフィズム(多様性)の概念と必要性

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!

本稿はポリモーフィズムに関する記事です。

 

ポリモーフィズムとは

ポリモーフィズムとは、一見同じ処理(メソッド)を呼んでいるにも関わらず処理内容異ならせること。

これを実現するために、抽象メソッドインターフェースという仕組みを用いる(それぞれの詳細は別記事に記載)。

 

以下、具体的な使用例。

抽象クラス、もしくはインターフェースにメソッドを定義しておく(メソッド名、戻り値、引数は記載するが処理は記載しない)。

それを継承、もしくは実装した子クラスは親が定義したメソッドをオーバーライドし、処理を実装する。

子クラスは複数あるものとし、それぞれオーバーライドしたメソッドに異なる処理を実装する。

これら子クラスをインスタンス化し、配列に格納する。

この際、格納する型は親の型とする。

この配列をループしてそれぞれ子クラスに定義したメソッドの処理を呼びたいとする。

この際、親の型としたことで、親で定義されているメソッド名を呼ぶことになるが、実際に呼ばれるのは実装をした子クラスなので、処理を異ならせることができる。

つまり、同一の親を継承することによって、メソッドを抽象化しているのである。


なぜこんなことする必要性があるのか

RPG(ローププレイングゲーム)で例える。

味方パーティは「村人1」、「村人2」、「村人3」の3人いるとする。

戦闘の際に、「こうげき」、「ぼうぎょ」、「にげる」というコマンドがあるとする。

これら3つのコマンドはパーティのメンバー全てが行えるので同じコマンドに見えるが、実際はメンバーによって攻撃力や防御力、素早さが異なるので処理が異なる(相手に与えるダメージや受けるダメージの量など)。

3つのコマンドは実際の処理は異なるが、ゲームのユーザ的にはこれらは同一に見えた方がよい。(「村人1のこうげき」、「村人2のこうげき」、「村人3のこうげき」と表記することも出来るが、冗長的で分かりにくい)

また、プログラム上も単に「こうげき」という処理を実行するだけの方がシンプルである。

上記のようなことからポリモーフィズムの概念を用いれば、ユーザ的にもプログラム的にも簡潔になるのである。

子ページ
子ページはありません
同階層のページ
  1. オブジェクト指向の概念
  2. 継承の概念と必要性
  3. ポリモーフィズム(多様性)の概念と必要性
  4. 抽象クラスの概念と必要性
  5. インターフェースの概念と必要性
  6. カプセル化の概念と必要性

最近コメントのあったページ

最近の質問

コメント一覧

コメントがありません

ログインしなければコメント投稿はできません。