平成29年度 秋期 システムアーキテクト試験 午前Ⅱ 問3
テクノロジシステム開発技術モデリング記法(UML・DFD・状態遷移)
図は“顧客が商品を注文する”を表現したUMLのクラス図である。“顧客が複数の商品をまとめて注文する”を表現したクラス図はどれか。ここで,注文明細は注文に含まれる一つの商品に対応し,注文は一つ以上の注文明細を束ねたもので,一つの注文に対応する。

図の説明テキスト
問題文のUMLクラス図と凡例。
【クラス図】
- 「顧客」(多重度 1)― 関連 ―(多重度 0..*)「注文」
- 「注文」(多重度 0..*)― 関連 ―(多重度 1)「商品」
【凡例】
- クラス:長方形の枠
- 関連:実線
- コンポジション:塗りつぶしひし形(◆)付きの実線
- 多重度:
- 1:必ず1
- 0..*:0以上
- 1..*:1以上
解答・解説
正解: ア.
正解は ア です。
正解の根拠
UMLのクラス図における各クラス間の関係(関連・コンポジション・多重度)を、問題文の条件に照らし合わせて整理します。
「顧客」と「注文」の関係
- 元の図と同様に、1人の顧客は0回以上の注文を行うため、「顧客」(多重度
1)と「注文」(多重度0..*)が実線(関連)で結ばれます。
- 元の図と同様に、1人の顧客は0回以上の注文を行うため、「顧客」(多重度
「注文」と「注文明細」の関係
- 問題文より、「注文は一つ以上の注文明細を束ねたもので,一つの注文に対応する」とあります。
- 全体(注文)と部分(注文明細)の強い結びつきを表すコンポジションでは、全体側のクラスに塗りつぶしひし形(◆)を付けます。したがって、「注文」側にひし形(◆)が付きます。
- 多重度は、1つの「注文」に対して1つ以上の「注文明細」が含まれ、1つの「注文明細」は必ず1つの「注文」に対応するため、「注文」側が
1、「注文明細」側が1..*となります。
「注文明細」と「商品」の関係
- 問題文より、「注文明細は注文に含まれる一つの商品に対応し」とあります。
- したがって、「注文明細」と「商品」が実線(関連)で結ばれ、1つの「注文明細」に対応する「商品」の多重度は
1、1つの「商品」は0個以上の「注文明細」に含まれるため「注文明細」側の多重度は0..*となります。
これらすべての条件を満たしているのは ア です。
各選択肢の解説
- ア:正解です。「顧客」と「注文」、「注文」と「注文明細」(「注文」側が◆で多重度
1、「注文明細」側が多重度1..*)、「注文明細」と「商品」の関係がすべて正しく表現されています。 - イ:「注文」と「注文明細」の間のコンポジションのひし形(◆)と多重度が逆になっています(部分側である「注文明細」に◆と多重度
1が付いてしまっています)。 - ウ:「顧客」が「注文明細」と関連付けられ、「商品」が「注文」と関連付けられており、クラス間の関係が誤っています。
- エ:ウと同様に「顧客」と「注文明細」、「注文」と「商品」が関連付けられている誤りに加え、「注文」と「注文明細」の間のコンポジションの向きと多重度も逆になっています。



