IPA過去問ドリル

平成29年度 秋期 システムアーキテクト試験 午前Ⅱ 問3

テクノロジ/開発技術

図は“顧客が商品を注文する”を表現した UML のクラス図である。“顧客が複数の商品をまとめて注文する”を表現したクラス図はどれか。ここで,注文明細は注文に含まれる一つの商品に対応し,注文は一つ以上の注文明細を束ねたもので,一つの注文に対応する。

平成29年度 秋期 システムアーキテクト試験 午前Ⅱ 問3の図

出典:平成29年度 秋期 システムアーキテクト試験 午前Ⅱ 問3

正解:ア

解説

設問のクラス図では,顧客(1)と注文(0..*)は通常の関連で結ばれ,注文(1)と注文明細(1..*)はコンポジション(合成)で結ばれており,注文明細(0..*)と商品(1)は通常の関連で結ばれています。コンポジションの多重度は,全体側(注文)に付く「1」が“注文明細は必ずいずれか一つの注文に属す”ことを,部分側(注文明細)に付く「1..*」が“一つの注文は一つ以上の注文明細から構成される”ことを表します。この構造によって,“一つの注文(顧客の 1 回のまとめての注文)が,複数の商品に対応する複数の注文明細を束ねる”という設問の意味が正しく表現されます。選択肢アは,凡例どおりの向き(全体側に 1,部分側に 1..*)でこの関係を表現しており,正しい図です。

選択肢ごとの解説

  • 正しい。顧客と注文が 1 対 0..* の関連で結ばれ,注文(1)と注文明細(1..*)がコンポジションで結ばれ,注文明細(0..*)と商品(1)が関連で結ばれており,“顧客が複数の商品をまとめて注文する”ことを正しく表現しています。
  • 誤り。注文と注文明細の間のコンポジションの多重度が,全体側の注文に「1..*」,部分側の注文明細に「1」となっており,凡例の向きと逆になっています。これは“一つの注文明細が複数の注文から構成される”という誤った意味になってしまいます。
  • 誤り。顧客が注文ではなく注文明細と直接関連付けられており,顧客が個々の商品明細ごとに注文を行うという意味になってしまいます。“顧客が複数の商品をまとめて注文する”という,注文単位でまとめる関係を表現できていません。
  • 誤り。顧客が注文ではなく注文明細と直接関連付けられている上に,注文と注文明細のコンポジションの多重度も全体側「1..*」,部分側「1」と凡例の向きと逆になっており,二重に誤っています。
システムアーキテクトの過去問を演習モードで解く