平成28年秋期午後問5
あかささん
(No.1)
https://www.fe-siken.com/kakomon/28_aki/pm05.html
「設問では"商品概要を取得する"という同一名称のメッセージに対する振る舞いが3つの下位クラスで個々に違う」とあるのですが、いまいち理解できません。
3つの下位クラスで個々に振る舞いが違うのはどこでわかりますか?
可能ならこの部分の解説をもう少し詳しく教えていただきたいです。
「設問では"商品概要を取得する"という同一名称のメッセージに対する振る舞いが3つの下位クラスで個々に違う」とあるのですが、いまいち理解できません。
3つの下位クラスで個々に振る舞いが違うのはどこでわかりますか?
可能ならこの部分の解説をもう少し詳しく教えていただきたいです。
2020.09.24 22:18
カミハさん
(No.2)
「設問では"商品概要を取得する"という同一名称のメッセージに対する振る舞いが3つの下位クラスで個々に違う」というのは、いわゆるオーバーライドとポリモーフィズムを説明している文章です。
基本情報を勉強する中で、インヘリタンス(継承)やオーバーライドといった言葉は目にしたことがあると思います。
今回の設問で言うと、まず「商品情報」というクラスが存在し、その商品情報クラスには記載されているメソッド(商品概要の取得要求があったら、それに対応する商品情報を返すというプログラムのコード)があり、そのメソッドを下位クラスの「CD」「DVD」「書籍」クラスは受け継いでいます(インヘリタンス)。そして、そのメソッドを受け継いだ上で、それぞれ「CD」「DVD」「書籍」クラスの中で【CDならば編曲者と再生時間,DVDならば監督,主演及び再生時間,書籍ならば著者名,ページ数及びISBNから生成する当該商品の商品概要を表現】する為に、上位のクラスから受け継いだメソッドに加えて、クラス独自のコードを追加します(オーバーライド)。
こういった作り方をすることで、基幹部分では同じメソッド(商品情報を返す)を持ちつつも、それぞれのクラスでは返す情報が違うという状態を作り出すことができます。ざっくり説明すると、「商品情報」クラスに例えばDVDの商品概要の取得要求が来た場合、それに対応するクラスであるDVDクラスから商品情報(この場合は監督,主演及び再生時間)が返され、CDの商品概要の取得要求が来ればCDクラスから商品情報が返されます。
こんな風に、要求する側からしてみればCDでもDVDでも同じ「これの商品概要を取得したい」という要求ですが、受け取った側のクラスではその処理が振り分けられ、自動的に取得したい情報を返すというのが、ポリモーフィズム(多態性)というものです。
そして、3つのクラスでそれぞれ振る舞いが違うことは、図3のクラス図、及び問題文を見て判断するしかありません。おそらく今後は知識がつけば、問題文を見て分かるようになると思います。
これで解答になっているでしょうか?
基本情報を勉強する中で、インヘリタンス(継承)やオーバーライドといった言葉は目にしたことがあると思います。
今回の設問で言うと、まず「商品情報」というクラスが存在し、その商品情報クラスには記載されているメソッド(商品概要の取得要求があったら、それに対応する商品情報を返すというプログラムのコード)があり、そのメソッドを下位クラスの「CD」「DVD」「書籍」クラスは受け継いでいます(インヘリタンス)。そして、そのメソッドを受け継いだ上で、それぞれ「CD」「DVD」「書籍」クラスの中で【CDならば編曲者と再生時間,DVDならば監督,主演及び再生時間,書籍ならば著者名,ページ数及びISBNから生成する当該商品の商品概要を表現】する為に、上位のクラスから受け継いだメソッドに加えて、クラス独自のコードを追加します(オーバーライド)。
こういった作り方をすることで、基幹部分では同じメソッド(商品情報を返す)を持ちつつも、それぞれのクラスでは返す情報が違うという状態を作り出すことができます。ざっくり説明すると、「商品情報」クラスに例えばDVDの商品概要の取得要求が来た場合、それに対応するクラスであるDVDクラスから商品情報(この場合は監督,主演及び再生時間)が返され、CDの商品概要の取得要求が来ればCDクラスから商品情報が返されます。
こんな風に、要求する側からしてみればCDでもDVDでも同じ「これの商品概要を取得したい」という要求ですが、受け取った側のクラスではその処理が振り分けられ、自動的に取得したい情報を返すというのが、ポリモーフィズム(多態性)というものです。
そして、3つのクラスでそれぞれ振る舞いが違うことは、図3のクラス図、及び問題文を見て判断するしかありません。おそらく今後は知識がつけば、問題文を見て分かるようになると思います。
これで解答になっているでしょうか?
2020.09.25 10:09
あかささん
(No.3)
ご返信ありがとうございます。
非常によく理解できました。
自分自身まだまだ問題文を読み込む力が乏しいと感じたので、引き続き勉強を頑張ってきたいです。
非常によく理解できました。
自分自身まだまだ問題文を読み込む力が乏しいと感じたので、引き続き勉強を頑張ってきたいです。
2020.10.01 20:51
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告