平成24年度 秋期 午前Ⅱ 問21
システム要件定義・ソフトウェア要件定義
bに入る多重度の適切な組合せ
社員と年の対応関係を UML のクラス図で記述する。二つのクラス間の関連が次の条件を満たす場合,a,b に入る多重度の適切な組合せはどれか。ここで,年クラスのインスタンスは毎年存在する。
〔条件〕
(1) 全ての社員は入社年を特定できる。
(2) 年によっては社員が入社しないこともある。
クラス図:
社員 ──────────────── 年
[a] [b]
入社年(年の側の関連端名)
(a は関連の社員の側の端,b は年の側の端に付く多重度)
選択肢は原典では a・b の表。
- アa:0..* / b:0..1
- イa:0..* / b:1..1
- ウa:1..* / b:0..1
- エa:1..* / b:1..1
答えと解説を見る
✓ これが正解イa:0..* / b:1..1
解説
社員から見た入社年は必ず1つ、年から見た社員は0人以上です。
多重度は、関連の相手側のインスタンスが幾つ対応するかを、相手側の端に書きます。b は年の側の端なので、社員一人から見て入社年が幾つ対応するかを表します。条件(1)により全ての社員は入社年を特定でき、入社年は一人に一つなので、b は1..1です。a は社員の側の端なので、ある年から見て入社した社員が何人対応するかを表します。条件(2)により社員が入社しない年もあり、入社する年には複数の社員が入りうるので、a は0..*です。見分ける軸は、多重度を相手側の端に書くという読み方です。どちらの端から数えているかを確かめながら読むと、a と b の取り違えを防げます。
ほかの選択肢はなぜ違うのか
- アa:0..* / b:0..1:a の0..*は条件に合っていますが、b を0..1にすると、入社年が対応しない社員がいてもよいことになります。全ての社員が入社年を特定できるという条件(1)に反するので、b の下限は0ではなく1です。
- ウa:1..* / b:0..1:a を1..*にすると、どの年にも必ず一人以上の社員が入社することになり、入社しない年もあるという条件(2)と合いません。b の0..1も、入社年の分からない社員を認めてしまい、条件(1)に反します。
- エa:1..* / b:1..1:b の1..1は条件(1)に合っていますが、a を1..*にすると、毎年必ず社員が入社することになります。年によっては入社しないという条件(2)を満たさないので、a の下限は1ではなく0です。
出典:平成24年度 秋期 システムアーキテクト試験 午前Ⅱ 問21
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)