応用情報技術者 2021年 春期 午前2 問29
問題文
商品の注文を記録するクラス (顧客、商品、注文、注文明細)の構造を概念データモデルで表現する。a〜d に入れるべきクラス名の組合せはどれか。ここで、顧客は何度も注文を行い、一度に一つ以上の商品を注文でき、注文明細はそれぞれ1種類の商品に対応している。また、モデルの表記には UMLを用いる。


選択肢
ア:(正解)
イ:
ウ:
エ:
商品の注文を記録するクラス構造【午前2 解説】
要点まとめ
- 結論:顧客→注文→注文明細→商品という順序でクラスを配置し、関係性を表すのが正解です。
- 根拠:顧客は複数の注文を行い、注文は複数の注文明細を持ち、注文明細は1種類の商品に対応するため、UMLの多重度と整合します。
- 差がつくポイント:多重度の意味を正確に理解し、注文と注文明細、注文明細と商品の関係を正しく読み取れるかが重要です。
正解の理由
選択肢アは、顧客が1対多で注文を持ち、注文が1対多で注文明細を持ち、注文明細が多対1で商品に対応するUMLの多重度と完全に一致しています。これにより、顧客が複数回注文し、一度の注文で複数の商品を注文できる構造を正確に表現しています。
よくある誤解
顧客と商品を直接結びつける誤りや、注文明細の多重度を逆に解釈することが多いです。注文と注文明細の関係を誤ると、正しい注文構造が表現できません。
解法ステップ
- 顧客が複数回注文できるため、顧客と注文は1対多の関係と判断する。
- 注文は複数の商品を含むため、注文と注文明細は1対多の関係とする。
- 注文明細は1種類の商品に対応するため、注文明細と商品は多対1の関係とする。
- UMLの多重度表記と問題文の条件を照らし合わせ、正しいクラス名を配置する。
- 選択肢の中でこの関係性を満たすものを選ぶ。
選択肢別の誤答解説
- イ:商品がaにあり、顧客がdにあるため、顧客→注文の関係が逆になり不適切。
- ウ:注文がaにあるが、注文明細と顧客の位置関係が問題文の多重度と合わない。
- エ:注文明細がaにあり、商品がbにあるが、顧客と注文の関係が不明瞭で誤り。
補足コラム
UMLの多重度は「1」「*」などで表され、1対多、多対1、多対多の関係を明示します。注文システムの設計では、注文明細が商品の詳細を表し、注文と商品を直接結びつけない点が重要です。これにより、同じ商品を複数回注文する場合も柔軟に対応できます。
FAQ
Q: 注文明細はなぜ商品と多対1の関係なのですか?
A: 注文明細は1つの商品に対する注文の詳細を表すため、1つの注文明細は1種類の商品に対応します。
A: 注文明細は1つの商品に対する注文の詳細を表すため、1つの注文明細は1種類の商品に対応します。
Q: 顧客と商品は直接関係しないのですか?
A: 顧客は注文を通じて商品を購入するため、直接の関係は持たず、注文と注文明細を介して間接的に結びつきます。
A: 顧客は注文を通じて商品を購入するため、直接の関係は持たず、注文と注文明細を介して間接的に結びつきます。
関連キーワード: UML, クラス図、多重度、注文管理、オブジェクト指向設計

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

