正答1
解説
正解は1です。
汎化は、複数のクラスに共通する性質をまとめて、上位のクラス(スーパークラス)を作る関係です。
下位のクラス(サブクラス)が「上位のクラスの一種である」と言える関係(is-a関係)が成り立つかで判断します。
UMLでは、サブクラスからスーパークラスへ白抜きの三角形の矢印で表します。
【選択肢別解説】
1:○ 図では、哺乳類を上位に、人、犬、猫を下位に置いています。
「人は哺乳類の一種」「犬は哺乳類の一種」と言えるので、適切な汎化の例です。
2:× 図では、自動車を上位に、アクセル、ブレーキ、ハンドルを下位に置いています。
これらは自動車の一種ではなく部品なので、全体と部分の関係(集約)として表すべきです。
3:× 図では、商品を上位に、受注、在庫、出荷を下位に置いています。
受注や出荷は商品の一種ではなく、商品に関係する業務や状態なので、汎化ではありません。
4:× 図では、取引先を上位に、会社名、住所、電話番号を下位に置いています。
これらは取引先の一種ではなく属性なので、取引先クラスの属性として書くべきです。
【ポイント】
汎化はis-a関係、集約はpart-of関係(全体と部分)です。
「BはAの一種である」と自然に言えるかどうかで判断しましょう。