過去問解きまくり研究所 ホーム

平成25年度 春期 午前 問45

開発技術

UMLに関する問題

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

〔設問の図〕

  ┌────┐ 1   0..* ┌────┐ 0..*   1 ┌────┐
  │ 顧客 │──────────│ 注文 │──────────│ 商品 │
  └────┘          └────┘          └────┘

  凡例  クラス=箱/関連=実線/コンポジション=◆の付いた実線
        多重度  1 …必ず1 / 0..* …0以上 / 1..* …1以上

〔4肢の写し方〕

  A 1 ── 0..* B   … 関連(実線)。多重度はそれぞれの端に付いている
  A ◆1 ── 1..* B  … コンポジション。◆が付いた側が「全体」= A が B を束ねる
  ◆がどちら側の箱に接しているかが4肢の分かれ目になる
答えと解説を見る

✓ これが正解ア顧客 1 ── 0..* 注文 / 注文 ◆1 ── 1..* 注文明細 / 注文明細 0..* ── 1 商品

解説

注文が明細を束ね明細が商品に対応します。

UML のクラス図を選ぶ設問ですが、答えは設問文がほとんど日本語で書いています。図をにらむ前に、言葉を関係へ訳すのが近道です。まず、注文明細は一つの注文に含まれる一種類の商品に対応する、とあります。ここから明細と商品が一対一で結ばれます。次に、注文は複数の注文明細を束ねた一つの注文に対応する、とあります。束ねる側が注文で、束ねられる側が明細ですから、全体を表す菱形の印は注文の側に付き、一つの注文に明細が一つ以上ぶら下がる形になります。最後に、顧客が注文を出すという元の図の結び付きはそのまま引き継ぎます。この三本をすべて満たす図は一つしかありません。まとめて注文するという主題が図のどこに現れたかも言えるようにしておくと得です。元の図では注文と商品が直につながっていて、何をいくつという情報の置き場がありませんでした。間に明細という箱を挟んだことで、一回の注文の中に商品ごとの行を並べられるようになります。まとめてを表しているのは数の指定ではなく、間に置いた箱のほうです。

ほかの選択肢はなぜ違うのか

出典:平成25年度 春期 応用情報技術者試験 午前 問45

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)