応用情報技術者 2018年 秋期 午前2 問26
問題文
社員と年の対応関係を UMLのクラス図で記述する。二つのクラス間の関連が次の条件を満たす場合、a, bに入れる多重度の適切な組合せはどれか。ここで、”年”クラスのインスタンスは毎年存在する。
〔条件〕
(1) 全ての社員は入社年を特定できる。
(2) 年によっては社員が入社しないこともある。


選択肢
ア:
イ:(正解)
ウ:
エ:
社員と年の対応関係を UMLのクラス図で記述する問題【午前2 解説】
要点まとめ
- 結論:社員側の多重度は「0..*」、年側は「1」が正解です。
- 根拠:全社員は必ず入社年(年クラスのインスタンス)を特定できるため、年側は必ず1つ存在し、年側は毎年存在するため「1」となる。
- 差がつくポイント:年によって社員が入社しないことがあるため、社員側は「0..*」で表し、社員が必ず年に属することを見落とさないことが重要です。
正解の理由
選択肢イの「a=0..*、b=1」が正解です。
- (1)「全ての社員は入社年を特定できる」→社員は必ず1つの年に属するため、年側の多重度は「1」。
- (2)「年によっては社員が入社しないこともある」→年側は社員を0人以上持つ可能性があるため、社員側は「0..*」。
また、「年」クラスのインスタンスは毎年存在するため、年側の多重度は「1」と固定されます。
よくある誤解
- 「社員は必ず年に属する」ことを忘れて「0..1」とする誤り。
- 「年に必ず社員がいる」と誤解し「1」とする誤り。年は社員がいなくても存在するため「0..*」が正しい。
解法ステップ
- 問題文の条件を丁寧に読み、社員と年の関係を整理する。
- 「全ての社員は入社年を特定できる」→社員は必ず1つの年に属する。
- 「年によっては社員が入社しないこともある」→年は社員を0人以上持つ可能性がある。
- 「年」クラスのインスタンスは毎年存在する→年側の多重度は「1」。
- 以上を踏まえ、多重度を「社員側:0..*」「年側:1」と決定する。
選択肢別の誤答解説
- ア(0..*、0..1):年側が「0..1」は誤り。全社員は必ず入社年があるため年側は「1」。
- イ(0..*、1):正解。社員は0人以上、年は必ず1つ存在。
- ウ(1..、0..1):社員側が「1..」は誤り。社員は0人以上でよく、年側は「1」が正しい。
- エ(1..、1):社員側が「1..」は誤り。社員は0人以上でよく、必ず1人以上とは限らない。
補足コラム
UMLの多重度は「関連するインスタンスの数の範囲」を示します。
- 「0..*」は0人以上の任意の数を意味し、存在しなくてもよいことを示します。
- 「1」は必ず1つ存在することを示し、必須の関連を表します。
この問題では「社員は必ず入社年を持つ」ため、年側は「1」となり、年は毎年存在するため「0..*」ではなく「1」となります。
FAQ
Q: なぜ社員側の多重度は「0..*」なのですか?
A: 年によっては社員が入社しないことがあるため、社員は0人以上存在し得るからです。
A: 年によっては社員が入社しないことがあるため、社員は0人以上存在し得るからです。
Q: 年側の多重度が「1」なのはなぜですか?
A: 問題文で「年」クラスのインスタンスは毎年存在すると明記されているため、必ず1つ存在します。
A: 問題文で「年」クラスのインスタンスは毎年存在すると明記されているため、必ず1つ存在します。
関連キーワード: UML, クラス図、多重度、入社年、関連、オブジェクト指向、モデリング

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

