戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2015年 秋期 午前227


問題文

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

選択肢

(正解)

🔒 解説は解答すると表示されます

UMLの多重度【午前2解説】

正解の理由

図の多重度は、ある側のインスタンスが反対側のインスタンスと「1つのときに」何個対応できるかを示します。左側の位置にある a は「ある年(Year)に対応する社員の数」を表し、右側の b は「ある社員が対応する年の数」を表します。
条件(1)「全ての社員は入社年を特定できる」は、各社員が必ずちょうど1つの年に結び付くことを意味するので、年側の多重度 b は (必ず1つ)です。一方、条件(2)「年によっては社員が入社しないこともある」かつ「年クラスのインスタンスは毎年存在する」により、ある年に社員が0人であることが許されるため、年に対応する社員数 a は (0個もあり得るし複数もあり得る)になります。したがって選択肢(a = , b = )が正しい組合せです。

解法ステップ

  1. 多重度表示の向きを確認する(端に書かれた多重度は「その端にあるクラスのインスタンスが、反対側の1インスタンスに対していくつ対応するか」を示す)。
  2. 条件(1)を読み、各社員が必ず1つの入社年を持つことから b = と決める(必須かつ複数不可)。
  3. 条件(2)と「年クラスのインスタンスは毎年存在する」を読み、ある年に社員がいない可能性があるので a = と決める(0も複数も可)。
  4. 選択肢の中から a,b がそれぞれ一致するものを選ぶ()。

選択肢別の誤答解説

  • ア(a = , b =
    b が だと「社員は入社年を持たない場合がある(0個)」ことを許すため、条件(1)に反します。a は正しいが b が不適切です。
  • (a = , b =
    a は「ある年に0人〜複数人の社員」が対応可能で、条件(2)と年インスタンスの毎年存在と整合します。b は「各社員は必ず1つの入社年を持つ」ことを満たすため正解です。
  • ウ(a = , b =
    a = は「各年に最低1人以上の社員がいる」ことを意味しますが、条件(2)に反してしまいます。さらに b = も条件(1)と矛盾します。
  • エ(a = , b =
    b は正しいものの、a = は条件(2)と矛盾します(年によっては社員が入社しないことがあるため、年に0人というケースを排除できません)。

よくある誤解

  • 多重度の向きを取り違える
    多重度は「その端にあるクラスのインスタンスが相手の1インスタンスに対していくつ対応できるか」を表すため、端を見間違えると逆の解釈をしてしまいます。
  • 1..1 と 1 の意味の混同
    は「必ず1つ(正確に1つ)」を意味します。単に「1」とも書けますが、表記の意味は同じです。以前の説明のように「1つ以上」と混ぜて表現すると誤解を招きます(「1つ以上」は )。
  • 「年クラスのインスタンスは毎年存在する」を b に適用してしまう
    この情報は「年が存在してもその年に入社がないことがある」を許容するため、a を にする根拠にはなりますが、社員側の多重度 b が必須かどうかは条件(1)によって判断します。順序立てて原因を整理することが重要です。

補足コラム

  • UML表記の簡潔さ
    は単に 1 と表記されることが多く、0..* または *(文脈による)と書かれます。試験ではどちらの表記でも意味が通れば正しく扱われます。
  • データベース設計との対応例(概念的)
    この関係は「年(Year) ← 一対多 → 社員(Employee)」で、社員表に入社年を示す列が必須の外部キーになります。例:
    CREATE TABLE Year (
      year_id INT PRIMARY KEY
    );
    
    CREATE TABLE Employee (
      emp_id INT PRIMARY KEY,
      hire_year INT NOT NULL REFERENCES Year(year_id) -- NOT NULL が b = 1 を表す
    );
    

FAQ

Q1: 「1..1」は「1」で書いてよいですか?
A1: はい。意味は同じで「必ず1つ」を示します。表記の差は許容されます。
Q2: 「年クラスのインスタンスは毎年存在する」はどう影響しますか?
A2: 年インスタンスが常に存在することで、ある年に社員が1人もいない(0人)ケースが現実的にあり得るため、年側から見た社員数は が許容されます。ただし社員側が年を必ず持つかどうかは別条件(今回の条件(1))で判断します。
Q3: 社員が再入社や複数回の入社がある場合は?
A3: その場合は「社員が複数の入社年を持てる」ことを明示する必要があり、b が になる可能性があります。問題文の前提に従って判断してください。

関連キーワード: UML、多重度、クラス図、関連、入社年、一対多、必須関連
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について