システム監査技術者 2014年 午前2 問14
問題文
ある研究所において、社員は一つ以上の学会に所属している。社員と学会の関係をUMLを用いて表した図のうち、適切なものはどれか。ここで、会員番号は学会が所属する会員を一意に識別するために付与する番号である。

選択肢
ア:
イ:
ウ:(正解)
エ:
🔒 解説は解答すると表示されます
UMLの多重度と関連クラス【午前2解説】
正解の理由
正しい図はウです。
社員は一つ以上の学会に所属します。そのため、社員1人に対する学会の数を表す多重度は、学会側に「1..」と記します。一方、学会に所属する社員の数には、問題文から最小人数の指定がないため、社員側は「0..」です。
また、会員番号は社員そのものの属性ではなく、「ある社員がある学会に所属している」という関係に付与される情報です。社員が複数の学会に所属すれば、学会ごとに異なる会員番号を持つ可能性があります。このように関連に属性を持たせるときは、UMLの関連クラスで表します。
解法ステップ
-
多重度を確認します。
多重度は、反対側のインスタンス1つに対して、何個のインスタンスが関連するかを表します。- 社員1人に対する学会の数:一つ以上なので、学会側が「1..*」
- 学会1つに対する社員の数:指定がないので、社員側が「0..*」
-
会員番号が何に属するかを考えます。
会員番号は学会が所属会員を識別するための番号です。社員だけに固定で付く属性ではなく、学会と社員の組合せに付く属性です。 -
関連クラスがある図を選びます。
多重度が「学会側1..、社員側0..」で、会員番号が関連クラスに記されているウが適切です。
選択肢別の誤答解説
- ア:多重度は適切ですが、会員番号を「社員」の属性としている点が誤りです。会員番号は学会ごとに付与されるため、社員だけの属性では表せません。
- イ:会員番号を社員の属性としていることに加え、多重度も逆です。社員1人に対する学会の数は「1..」であり、学会1つに対する社員の数は「0..」です。
- ウ:多重度が要件に合っており、会員番号も関連クラスの属性として表しています。
- エ:会員番号を関連クラスに記している点は適切ですが、多重度が逆です。
よくある誤解
- 多重度は、その端に書かれたクラス自身の個数を表すと思い込むことがあります。実際には、反対側のインスタンス1つに対して何個関連するかを表します。
- 会員番号を社員の属性と考えてしまうことがあります。社員が複数の学会に所属する場合、会員番号は学会ごとに異なり得るため、関連の属性として扱います。
- 学会側の多重度を「0..」にするのは、社員が学会に所属しない場合があるからだと考えることがあります。問題文では、社員は必ず一つ以上の学会に所属するため、学会側は「1..」です。
補足コラム
関連クラスは、クラス間の関連そのものに属性や操作を持たせたいときに使います。たとえば「社員」と「学会」の所属関係に「会員番号」や「入会日」がある場合、それらは所属関係に関する情報として関連クラスに記述できます。
FAQ
Q. 「0..*」の「0」は何を意味しますか?
A. 関連する相手がいない場合もあることを意味します。この問題では、ある学会に所属する社員がいない場合も許される表現です。
A. 関連する相手がいない場合もあることを意味します。この問題では、ある学会に所属する社員がいない場合も許される表現です。
Q. 会員番号が社員を識別する番号なら、社員の属性になりますか?
A. はい。ただし、この問題の会員番号は「学会が所属する会員を識別する」番号です。社員が複数の学会に所属すると学会ごとに番号が異なり得るため、所属関係の属性として表します。
A. はい。ただし、この問題の会員番号は「学会が所属する会員を識別する」番号です。社員が複数の学会に所属すると学会ごとに番号が異なり得るため、所属関係の属性として表します。
関連キーワード: UML、多重度、関連クラス、関連、クラス図

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

