図は“顧客が商品を注文する”を表現したUMLのクラス図である。“顧客が複数の商品をまとめて注文する”を表現したクラス図はどれか。ここで、“注文明細”は一つの注文に含まれる1種類の商品に対応し、“注文ヘッダ”は複数の“注文明細”を束ねた一つの注文に対応する。
┌────┐ ┌────┐ ┌────┐
│ 顧客 ├─────┤ 注文 ├─────┤ 商品 │
└────┘1 0..*└────┘0..* 1└────┘
凡例 多重度
クラス 関連 コンポジション 1 必ず1
┌────┐ 0..* 0以上
│ │ ──── ◆─── 1..* 1以上
└────┘
ア
┌────┐ ┌─────┐
│ 顧客 ├─────┤注文ヘッダ│
└────┘1 0..*└─────┘
◆1
│1..*
┌──┴──┐ ┌────┐
│ 注文明細 ├─────┤ 商品 │
└─────┘0..* 1└────┘
イ
┌────┐ ┌─────┐
│ 顧客 ├─────┤注文ヘッダ│
└────┘1 0..*└──┬──┘
│1..*
◆1
┌─────┐ ┌────┐
│ 注文明細 ├─────┤ 商品 │
└─────┘0..* 1└────┘
ウ
┌─────┐ ┌────┐
│注文ヘッダ├─────┤ 商品 │
└─────┘0..* 1└────┘
◆1
│1..*
┌────┐ ┌──┴──┐
│ 顧客 ├─────┤ 注文明細 │
└────┘1 0..*└─────┘
エ
┌─────┐ ┌────┐
│注文ヘッダ├─────┤ 商品 │
└──┬──┘0..* 1└────┘
│1..*
◆1
┌────┐ ┌─────┐
│ 顧客 ├─────┤ 注文明細 │
└────┘1 0..*└─────┘
ア
コンポジションは集約の一種で、なくてはならない集約であり。例えば自動車とタイヤのような関係である。
なお、自動車とカーエアコンのような関係は集約である。
■顧客と注文ヘッダの関係
顧客から見ると注文はしない場合もあるし、複数注文する場合もある。
また、注文からみると、顧客は必ず1人である。
従って、顧客 1 0..* 注文ヘッダ の関連となる。
■注文と注文明細の関係
注文からみると注文明細は、1行以上なければならない。
注文明細からみると注文は必ず1つである。
従って、注文ヘッダ 1 1..* 注文明細 の関連となる。
また、注文明細 is part of 注文 であるから、注文ヘッダ ◆─── 注文明細 である。
■注文明細と商品の関係
注文明細からみると商品は必ず1つである。
商品からみると、注文明細にない商品も存在するし、1つ以上の注文明細が存在する場合もある。
従って、注文明細 0..* 1 商品 の関連となる。
問44 | 目次 | 問46 |