SAシステムアーキテクト試験 午前Ⅱ
平成29年度秋期 システムアーキテクト 午前Ⅱ 問3
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題





選択肢
- ア(問題の図表を参照)
- イ(問題の図表を参照)
- ウ(問題の図表を参照)
- エ(問題の図表を参照)
解き方のヒントを見る
クラス間の関連を読む向きを意識する
クラス間の関連を読み解くときは、多重度がどちらの端のクラスについての制約なのかを、自分の知識で確かめてから読み進めることが大切です。読む向きを一つに固定し、途中で入れ替えないよう注意して検討しましょう。
この問題で問われていること
この問題で確かめたいのは、関連の端に付く多重度の表記を、どちらのクラスのインスタンス一つを起点とした対応数として解釈するかという点です。起点を明確に決めてから、各内容を順に検討してください。
視点
関連は二つのクラスを結ぶもので、その両端にはそれぞれ多重度を書くことができます。学習の際は、ある端の表記がどちらのクラスを主語にした文の情報なのかを、自分の言葉で文章にして確かめる練習が有効です。主語と目的語を取り違えると、同じ表記でも逆向きの意味に読めてしまいます。まず一文に置き換えてから判断する習慣をつけましょう。
確認ポイント
- 注目している多重度が、関連のどちらの端に付いているかを確認したか
- その表記を、どちらのクラスの一つのインスタンスを起点にした文として読むのかを、自分の知識で確かめたか
- 読む向きを検討の途中で入れ替えず、すべての関連を同じ手順で文章にできているか
正解と解説を見る
正解
ア
解説
顧客は複数の注文を行い、各注文は一つ以上の注文明細を構成要素として保持する。各注文明細は一つの商品に対応するため、これらの関係を正しく表すアが適切です。
理由
注文は一つ以上の注文明細を束ね、注文明細は注文に含まれる一つの商品に対応する。したがって、注文側にコンポジションの黒ひし形を置き、注文と注文明細を1対1..*、注文明細と商品を0..*対1で表す。
比較
顧客と注文の関連だけでなく、注文と注文明細の包含方向、注文明細と商品の対応関係も同時に満たす必要がある。黒ひし形の向きや、顧客・商品が直接結び付くクラスを取り違えると条件から外れる。
選択肢ア(正解)
これは正解だよ。顧客と注文は、顧客1に対して注文0..*の関連になっている。さらに注文側の黒ひし形で注文明細を構成し、注文1に対して注文明細1..*、注文明細0..*に対して商品1としており、問題文の包含関係と対応関係を満たしている。
選択肢イ
これは不正解だよ。顧客と注文の多重度は適切だが、注文と注文明細のコンポジションの黒ひし形が注文明細側に置かれている。問題文では注文が注文明細を束ねるため、包含する側と構成される側の向きが逆になっている。
選択肢ウ
これは不正解だよ。顧客が関連付く先が注文ではなく注文明細になっている。また、商品も注文明細ではなく注文に直接関連付けられている。そのため、各注文明細が一つの商品に対応するという条件を表せず、必要なクラス間の関連が異なる。
選択肢エ
これは不正解だよ。顧客と注文明細が関連し、商品が注文に直接関連しているため、顧客・注文明細・商品間の関連が問題文と異なる。加えて、黒ひし形が注文明細側にあり、注文明細が注文を構成要素として束ねる向きになっている点も誤りである。
学習のポイント
UMLのコンポジションと多重度を、業務上の包含関係に対応させて読む。
出典:独立行政法人 情報処理推進機構(IPA)平成29年度秋期 システムアーキテクト試験 午前Ⅱ 問3(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針