ホーム > システムアーキテクト試験 > 2012年
システムアーキテクト試験 2012年 午前2 問21
社員と年の対応関係をUMLのクラス図で記述する。二つのクラス間の関連が次の条件を満たす場合、a, bに入る多重度の適切な組合せはどれか。ここで、年クラスのインスタンスは毎年存在する。
〔条件〕
(1)全ての社員は入社年を特定できる。
(2)年によっては社員が入社しないこともある。


ア:
イ:(正解)
ウ:
エ:
解説
社員と年の対応関係をUMLのクラス図で記述する問題【午前2 解説】
要点まとめ
- 結論:多重度は「a=0..*」「b=1..1」が正解です。
- 根拠:社員は必ず入社年を特定できるため年側の多重度は1、年には社員が入社しない年もあるため社員側は0以上。
- 差がつくポイント:多重度の「0」と「1」の意味を正確に理解し、条件文の「全ての社員」と「年によっては社員が入社しない」を正しく反映すること。
正解の理由
社員クラスから年クラスへの関連で「a」は社員側の多重度、「b」は年側の多重度を示します。
(1)「全ての社員は入社年を特定できる」→社員は必ず1つの年に対応するため、年側の多重度は1..1。
(2)「年によっては社員が入社しない」→年側は社員が0人でもよいので社員側の多重度は0..。
よって「a=0..」「b=1..1」が条件を満たし、選択肢イが正解です。
(1)「全ての社員は入社年を特定できる」→社員は必ず1つの年に対応するため、年側の多重度は1..1。
(2)「年によっては社員が入社しない」→年側は社員が0人でもよいので社員側の多重度は0..。
よって「a=0..」「b=1..1」が条件を満たし、選択肢イが正解です。
よくある誤解
「全ての社員は入社年を特定できる」から社員側の多重度を1..と誤解しやすいですが、社員側は「0..」で正しいです。
また「年によっては社員が入社しない」ため年側の多重度を0..1とするのは誤りです。
また「年によっては社員が入社しない」ため年側の多重度を0..1とするのは誤りです。
解法ステップ
- 条件文を丁寧に読み、「全ての社員は入社年を特定できる」意味を理解する。
- 「年によっては社員が入社しない」ことから年側の社員数は0以上であると判断。
- UMLの多重度の意味を確認し、社員側と年側の多重度を割り当てる。
- 選択肢の中から条件に合致する多重度の組み合わせを選ぶ。
選択肢別の誤答解説
- ア(a=0..*、b=0..1):年側の多重度が0..1で社員が必ず1つの年に属する条件を満たさない。
- イ(a=0..*、b=1..1):社員は必ず1つの年に属し、年は社員が0人でもよい条件を満たすため正解。
- ウ(a=1..*、b=0..1):社員側の多重度が1..*は誤り。社員は1人だが0以上でよい。
- エ(a=1..*、b=1..1):社員側の多重度が1..*は誤り。社員は0以上でよい。
補足コラム
UMLの多重度は「0..1」「1..1」「0..」「1..」などで表され、関連の数の範囲を示します。
「0..1」は0か1つ、「1..1」は必ず1つ、「0..」は0以上無制限、「1..」は1以上無制限を意味します。
今回の問題では「社員は必ず1つの年に属する」ため年側は「1..1」、年は社員がいないこともあるため社員側は「0..*」となります。
「0..1」は0か1つ、「1..1」は必ず1つ、「0..」は0以上無制限、「1..」は1以上無制限を意味します。
今回の問題では「社員は必ず1つの年に属する」ため年側は「1..1」、年は社員がいないこともあるため社員側は「0..*」となります。
FAQ
Q: 多重度の「0..」と「1..」の違いは何ですか?
A: 「0..」は0個以上、「1..」は1個以上の関連があることを示します。必ず1つ以上関連がある場合は「1..*」を使います。
A: 「0..」は0個以上、「1..」は1個以上の関連があることを示します。必ず1つ以上関連がある場合は「1..*」を使います。
Q: なぜ社員側の多重度が「0..」なのですか?
A: 年によっては社員が入社しないため、年側から見た社員の数は0以上となり、社員側の多重度は「0..」となります。
A: 年によっては社員が入社しないため、年側から見た社員の数は0以上となり、社員側の多重度は「0..」となります。
関連キーワード: UML, クラス図, 多重度, 関連, 入社年, オブジェクト指向, モデリング