【中学生でもわかるIT用語】多相性(ポリモーフィズム)とは 物語と実際の事例でわかりやすく解説

『タ行』の用語

多相性(たそうせい)

① 物語性を取り入れた説明: 「多相性」とは何か

ある日、高校生のユウキはプログラミングの授業で「多相性(ポリモーフィズム)」という言葉を初めて耳にしました。授業後、彼は興味を持って先生に質問しました。

「先生、多相性って何ですか?オブジェクト指向という言葉もよくわからないです。」

先生は優しく微笑んで答えました。「ユウキ、多相性というのはプログラミングで使われる大事な考え方なんだ。特にオブジェクト指向プログラミングにおいて重要な考え方だよ。オブジェクト指向っていうのは、プログラムを『オブジェクトという小さな単位に分けて作る方法なんだよ。オブジェクトっていうのは、プログラムの中で何かしらの役割を持つ『もの』なんだ。例えば、『車』というオブジェクトがあったとしたら、その車には『色』や『速さ』といったデータ(属性)があるし、『走る』『止まる』といった動作(メソッド)も持っているんだよ。」先生は説明を続けました。

「じゃあ、多相性っていうのは?」とユウキが興味深そうに聞きました。

「多相性というのは、同じ名前のメソッドが、異なるオブジェクトに対して異なる動作をすることを指すんだ。例えば、『走る』というメソッドがあったとして、自転車のオブジェクトならペダルを漕ぐ動作になるし、車のオブジェクトならエンジンをかけて走る動作になる。これが多相性の特徴なんだよ。」

ユウキは少し混乱した様子で、「同じ名前のメソッドでも、どのオブジェクトに適用するかで結果が変わるんですね」と納得しました。

「その通りだよ、ユウキ。これが多相性の力なんだ。プログラムを柔軟にし、コードの再利用性を高めるために非常に重要な概念なんだよ。」

「じゃあ、具体的にはどういう風にプログラムに活用されるんですか?」とユウキはさらに質問しました。

先生はうなずいて、「例えば、あるゲームでキャラクターが攻撃する場面を考えてみよう。『攻撃する』というメソッドがあって、それぞれのキャラクターが異なる武器を持っているとする。剣を持ったキャラクターは剣で攻撃し、弓を持ったキャラクターは弓で攻撃する。これも多相性の一例だよ。同じメソッド名でもキャラクターによって行動が異なるんだ。」と説明しました。

ユウキは納得した様子で、「なるほど、だから同じ名前でも、オブジェクトが違えば動き方も違うんですね。オブジェクトによって動作が変わるからプログラム柔軟に対応できるんですね!」と理解を深めました。

「その通りだよ、ユウキ。オブジェクト指向プログラミングでは、この多相性を使うことで、プログラムがもっとシンプルで再利用しやすくなるんだ。」先生はまとめました。

多相性の定義

多相性(ポリモーフィズム):プログラミングにおいて、同じメソッド名が異なるクラスやデータ型に対して異なる動作をする機能を指す。オブジェクト指向プログラミングで重要な概念であり、コードの再利用性や拡張性を高める。

② 実際の事例: 多相性の使用例

多相性は企業や自治体でのシステム開発においても重要な役割を果たしています。以下にその事例をいくつか紹介します。

事例内容使用例
Web開発ユーザーインターフェースの動的な操作ボタンのクリック動作が、ページごとに異なる処理を行う場面で、多相性が活用されています。
ゲーム開発キャラクターの多様なアクションの実装各キャラクターが異なる攻撃方法を持つことで、多様なプレイスタイルを提供しています。
企業システムの開発異なる役職に応じた権限の割り当て管理者と一般社員が同じシステム操作を行っても、異なる結果を返す仕組みを多相性で実現。
教育用ソフトウェア学習者の進捗に応じた問題出題生徒のレベルに応じて、同じ問題名でも異なる難易度の問題が提示される。

多相性は、これらのシステムにおいて、異なる処理を統一した形で扱うことを可能にし、システムの拡張性や保守性を高める役割を果たしています。


③ クイズや小テスト: 多相性の理解を確認

クイズ1 多相性の主な利点は何ですか?

A. 処理速度を向上させる
B. 同じメソッド名で異なる動作を可能にする
C. データの安全性を高める

クイズ2 多相性が使われる場面として正しいものはどれですか?

A. すべてのキャラクターが同じ攻撃方法を持つゲーム
B. 異なるキャラクターが異なる攻撃方法を持つゲーム
C. ゲームに攻撃方法がない場合

クイズ3 次のうち、多相性の特徴に該当するのはどれですか?

A. メソッドがクラスやデータ型ごとに異なる動作をする
B. メソッドが一つしかない
C. メソッドの数が無限に増える

回答
  1. B. 同じメソッド名で異なる動作を可能にする
  2. B. 異なるキャラクターが異なる攻撃方法を持つゲーム
  3. A. メソッドがクラスやデータ型ごとに異なる動作をする

応用情報技術者試験 平成21年春 午前問46

応用情報技術者平成21年春期問46 オブジェクト指向
タイトルとURLをコピーしました