ポリモーフィズム
オブジェクト指向における多態性(ポリモーフィズム)の説明はどれか。
- ア関連するデータとそれを操作する手続を一つのオブジェクトにまとめ,内部の詳細を外部から隠蔽する。
- イ上位クラスで定義された属性や操作を下位クラスが引き継ぎ,下位クラスでは差分だけを定義する。
- ウ複数のオブジェクトを部品として組み合わせ,全体と部分の関係によって一つのオブジェクトを構成する。
- エ同じメッセージを送っても,受け取ったオブジェクトのクラスに応じて異なる処理が実行される。
正解と解説を見る
正解 エ
この問題の基礎知識
- オブジェクト指向の主な概念に,カプセル化,継承(インヘリタンス),多態性(ポリモーフィズム)がある。
- カプセル化はデータと手続を一体化して内部の詳細を隠蔽すること,継承は上位クラスの属性や操作を下位クラスが引き継ぎ,差分だけを定義することである。
- 多態性は,同じメッセージに対して受け手のクラスごとに異なる振る舞いをする性質であり,継承と下位クラスでの操作の再定義(オーバライド)によって実現されることが多い。
- クラスやオブジェクトの関係には,is-a の関係である汎化と,part-of(全体と部分)の関係である集約がある。
ア関連するデータとそれを操作する手続を一つのオブジェクトにまとめ,内部の詳細を外部から隠蔽する。
データと手続を一体化し,内部構造を隠して公開した操作だけで利用させるのはカプセル化(情報隠蔽)の説明である。内部を変更しても利用者側への影響を抑えられる。
イ上位クラスで定義された属性や操作を下位クラスが引き継ぎ,下位クラスでは差分だけを定義する。
上位クラスの属性や操作を下位クラスが引き継ぐのは継承(インヘリタンス)の説明である。多態性は継承と組み合わせて実現されることが多いが,別の概念である。
ウ複数のオブジェクトを部品として組み合わせ,全体と部分の関係によって一つのオブジェクトを構成する。
部品となるオブジェクトを組み合わせて全体を構成する全体と部分(part-of)の関係は,集約の説明である。is-a の関係である汎化とも,多態性とも異なる。
エ同じメッセージを送っても,受け取ったオブジェクトのクラスに応じて異なる処理が実行される。正解
多態性は,同一のメッセージ(操作名)に対して,受け手のオブジェクトの属するクラスごとに異なる振る舞いをする性質である。呼出し側はクラスの違いを意識せずに統一的に扱える。
検証用の出典一部照合
IPA 応用情報技術者試験(レベル 4)シラバス / OMG Unified Modeling Language (UML) Version 2.5.1照合の根拠(4 件)
- エ(正解): 一つの操作に対して,クラスとそのサブクラスがそれぞれ別のメソッド(振る舞い)をもてる
This means that a single BehavioralFeature may have methods both in its owning Class and any direct or indirect subclass of that Class, but with no more than one method per Class.
OMG UML 2.5.1 · 13.2.3.5 Behavioral Features and Methods(新しいタブで開きます) - エ(正解): 同じ操作の呼出しでも,実行されるメソッドは受け手のオブジェクトのクラスによって決まる
If the Class of the receiving object owns a method for the Operation identified in the CallEvent, then that method is the result of the resolution.
OMG UML 2.5.1 · 13.2.3.5 Behavioral Features and Methods(新しいタブで開きます) - イ(誤り): 上位の分類子のメンバを下位が引き継ぐのは汎化に伴う継承の説明である
When a Classifier is generalized, certain members of its generalizations are inherited, that is they behave as though they were defined in the inheriting Classifier itself.
OMG UML 2.5.1 · 9.2.3.2 Generalization(Classifier の継承)(新しいタブで開きます) - ウ(誤り): 全体と部分の関係は(コンポジット)集約の説明である
A binary Association may represent a composite aggregation (i.e., a whole/part relationship).
OMG UML 2.5.1 · 11.5.3.1 Associations(新しいタブで開きます)
UML 2.5.1 で,受け手のクラスに応じてメソッドが選ばれる仕組み(エ),継承(イ),全体と部分の関係(ウ)は裏付けられた。ただし UML 仕様は「多態性(polymorphism)」という用語でこの性質を名指ししておらず,カプセル化(ア:データと手続の一体化と情報隠蔽)を説明した読める一次資料も見つからなかった(www.gnu.org の GNU Smalltalk マニュアルは接続がリセットされ取得不可)。