プロジェクトマネージャ 2010年 午前2 問17
問題文
次のクラス図におけるクラス間の関係の説明のうち、適切なものはどれか。

選択肢
ア:“バス”、“トラック”などのクラスが“自動車”クラスの定義を引き継ぐことを、インスタンスという。
イ:“バス”、“トラック”などのクラスの共通部分を抽出し“自動車”クラスとして定義することを、汎化という。(正解)
ウ:“バス”、“トラック”などのクラスは、“自動車”クラスに対するオブジェクトという。
エ:“バス”、“トラック”などのそれぞれのクラスの違いを“自動車”クラスとして定義することを、特化という。
🔒 解説は解答すると表示されます
クラス図の汎化【午前2解説】
正解の理由
この図は、「バス」「トラック」「セダン」「バン」に共通する性質をまとめ、「自動車」という上位クラスを定義する関係を表しています。これは汎化です。
クラス図では、汎化関係を白抜き三角形の矢印で表し、矢印の先を上位クラスに向けます。この図では「バス」などのクラスから「自動車」クラスに向かって矢印が伸びています。
したがって、各クラスの共通部分を抽出して「自動車」クラスとして定義する説明であるイが適切です。
解法ステップ
- 図の白抜き三角形の矢印に注目します。
- 矢印が「自動車」を指していることから、「自動車」は上位クラスだと分かります。
- 「バス」などのクラスに共通する性質をまとめて上位クラスを作る関係は、汎化です。
- 汎化を説明している選択肢を選びます。
選択肢別の誤答解説
- ア:「バス」などが「自動車」の定義を引き継ぐ関係は、インスタンスではなく継承です。インスタンスとは、クラスを基に作られた具体的なオブジェクトを指します。
- イ:「バス」などの共通部分を抽出して「自動車」クラスを定義する関係を汎化と説明しており、正しいです。
- ウ:「バス」などはクラスであり、「自動車」クラスに対するオブジェクトではありません。クラスを基に作られた具体的な車両がオブジェクトです。
- エ:特化は、上位クラスを基にして、より具体的な下位クラスを定義する関係です。「自動車」から「バス」などを定義する方向であり、説明の向きが逆です。
よくある誤解
- 汎化と特化を混同する
共通点をまとめて上位クラスを作るのが汎化です。上位クラスを基に、より具体的な下位クラスを作るのが特化です。 - クラスとオブジェクトを混同する
「バス」は種類を表すクラスです。実在する個々のバスがオブジェクトに当たります。 - 矢印の向きを取り違える
白抜き三角形の先が、汎化関係における上位クラスです。
補足コラム
汎化は、オブジェクト指向における「共通部分の再利用」に役立ちます。例えば、「自動車」クラスに「車輪数」や「最大積載量」などの共通する属性を定義し、「トラック」や「バス」などの下位クラスがその性質を引き継ぐ形にできます。
このように、上位クラスの定義を下位クラスが受け継ぐことを継承といいます。汎化はクラス同士の関係を示し、継承はその関係に基づいて定義を引き継ぐ仕組みを表します。
FAQ
Q. 汎化と継承は同じ意味ですか?
A. 厳密には異なります。汎化はクラス間の関係を表し、継承はその関係に基づいて上位クラスの定義を下位クラスが受け継ぐ仕組みです。
A. 厳密には異なります。汎化はクラス間の関係を表し、継承はその関係に基づいて上位クラスの定義を下位クラスが受け継ぐ仕組みです。
Q. 白抜き三角形の矢印は、どちらのクラスを指しますか?
A. 上位クラスを指します。この図では「自動車」が上位クラスです。
A. 上位クラスを指します。この図では「自動車」が上位クラスです。
Q. 「バス」は「自動車」のインスタンスではないのですか?
A. この図では「バス」はクラスです。「バス」というクラスから作られる個々の車両がインスタンスです。
A. この図では「バス」はクラスです。「バス」というクラスから作られる個々の車両がインスタンスです。
関連キーワード: 汎化、特化、継承、クラス、オブジェクト、インスタンス

\ せっかくなら /
プロジェクトマネージャを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

