本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

令和3年度 春期 応用情報技術者試験問題と解説

問29

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

 ┌───┐   ┌───┐   ┌───┐   ┌───┐
 │   │1 *│   │1 *│   │* 1│   │
 │ a ├───┤ b ├───┤ c ├───┤ d │
 │   │   │   │   │   │   │   │
 └───┘   └───┘   └───┘   └───┘


   ┌────┬────┬────┬────┐
   │  a  │  b  │  a  │  b  │
 ┌─┼────┼────┼────┼────┤
 │ア│ 顧客 │ 注文 │注文明細│ 商品 │
 ├─┼────┼────┼────┼────┤
 │イ│ 商品 │ 注文 │注文明細│ 顧客 │
 ├─┼────┼────┼────┼────┤
 │ウ│ 注文 │注文明細│ 顧客 │ 商品 │
 ├─┼────┼────┼────┼────┤
 │エ│注文明細│ 商品 │ 注文 │ 顧客 │
 └─┴────┴────┴────┴────┘


正解


解説

a 1 − * b はaからみるとbは1つ以上対応し、bからみるとaは1つ対応するということである。

顧客は何度も注文を行うが、注文からみると顧客が1つ決まるため、
顧客 1 − * 注文 である。

一度に一つ以上の商品を注文できるので、注文明細も一つ以上になる。逆に注文明細からみると、注文は1つ対応する。よって、
注文 1 − * 注文明細 である。

注文明細はそれぞれ1種類の商品に対応しているが、商品からみるといくつもの注文明細に対応しているため、
注文明細 * − 1 商品 である。

したがって、以下の関係となる。
顧客 1 − * 注文 1 − * 注文明細 * − 1 商品

問28 目次 問30