情報処理試験を勉強していると、「クラス図の線の種類が多すぎて、関連・集約・汎化の違いがわからない」と混乱しがちです。この記事では、関連(Association)の意味と他の関係との違いを図解で整理します。
対象試験と出題頻度
関連(Association)は、基本情報技術者・応用情報技術者で出題されるテーマです。
UMLのクラス図におけるクラス間の関係を問う問題で、集約やコンポジション、汎化との違いを正確に区別できるかがポイントになります。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)覚えておくと有利
用語の定義
関連(Association)とは、一言で言うと
「UMLのクラス図で、クラス同士に何らかのつながりがあることを実線で示す関係」
のことです。
イメージとしては、「人と人をつなぐ名刺交換」です。
名刺交換は「この人とこの人には仕事上のつながりがある」と示す行為です。上下関係や所有関係は問いません。
関連も同じで、2つのクラスの間に「何らかの結びつきがある」ことだけを表す、最もシンプルなクラス間の関係です。
📊 関連(Association)の基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Association |
| 使用される図 | UMLクラス図(構造図) |
| 記法 | クラス間を結ぶ実線(多重度・ロール名を付記可能) |
| 上位概念 | クラス間の関係(関連・集約・コンポジション・汎化・依存・実現の6種) |
解説
オブジェクト指向設計では、クラスは単独では動きません。「顧客」クラスと「注文」クラスのように、複数のクラスが互いに結びつくことでシステムを構成します。
この「結びつき」を図面上で表現する最も基本的な手段が関連です。
関連の読み方と多重度
クラス図で関連を描くとき、実線の両端に「多重度」を添えます。
多重度は、一方のクラスのインスタンス1つに対して、もう一方のインスタンスがいくつ対応するかを示す数値です。
| 多重度の表記 | 意味 | 具体例 |
|---|---|---|
| 1 | ちょうど1つ | 社員は必ず1つの部門に所属 |
| 0..1 | 0または1つ | 社員は配偶者がいてもいなくてもよい |
| 0..* | 0個以上(なくてもよい) | 顧客の注文は0件以上 |
| 1..* | 1個以上(必ず1つは存在) | 部門には1人以上の社員が所属 |
| * | 0..*と同じ(省略表記) | — |
図解:クラス図での関連の表現
「部門」と「社員」の対応関係をクラス図で示すと、次のようになります。
– 部門コード: String
– 社員番号: int
▲ 「1つの部門には1人以上の社員が所属する」を関連と多重度で表現
関連・集約・コンポジション・汎化の違い
クラス図にはクラス間の関係を表す記法が複数あり、関連はその中で最も汎用的な位置づけです。それぞれの違いを記号と意味で整理します。
| 関係の種類 | 記号 | 意味 | 例 |
|---|---|---|---|
| 関連 | 実線 | クラス同士に何らかのつながりがある | |
| 集約 | 白抜きひし形+実線 | 全体と部分の関係(部分は独立して存在できる) | |
| コンポジション | 黒塗りひし形+実線 | 全体と部分の関係(全体が消えると部分も消える) | |
| 汎化 | 白抜き三角+実線 | is-a関係(継承) | |
| 依存 | 点線矢印 | 一時的に使う関係 |
詳細解説:集約・コンポジションと関連の境界線(クリックで展開)
集約とコンポジションは、どちらも関連の特殊形(サブタイプ)です。つまり「全体と部分」という意味を持たない単純なつながりが関連で、「全体と部分」の意味が加わると集約やコンポジションになります。
集約(Aggregation):部分が全体から独立して存在できます。チームが解散してもメンバーは別のチームに所属できるイメージです。クラス図では全体側に白抜きひし形(◇)を付けます。
コンポジション(Composition):部分は全体なしには存在できません。注文を削除すれば注文明細も一緒に消えるイメージです。クラス図では全体側に黒塗りひし形(◆)を付けます。
試験で問われるのは「記号の見た目から関係を特定できるか」です。白抜きひし形は集約、黒塗りひし形はコンポジション、白抜き三角は汎化、装飾なしの実線は関連──この4パターンの記号を覚えれば解答できます。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 関連(Association)の核心を3行で
・クラス図でクラス同士のつながりを実線で示す、最もシンプルな関係
・実線の両端に多重度(1、0..*、1..* など)を添えて対応数を表現する
・集約(◇)・コンポジション(◆)・汎化(△)は関連の特殊形または別種の関係
試験ではこう出る!
関連は、クラス図の記法を問う問題や多重度の読み取り問題の土台として登場します。「関連そのもの」が単独で問われるケースよりも、集約・コンポジション・汎化との区別や多重度の計算問題の一部として出題されるパターンが中心です。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE H22春 午前 問47 |
クラス間の関係のうち適切なものを選ぶ問題。 | ・「関連は2つのクラス間でだけ定義できる」は誤り ・1つのクラスが複数のクラスと関係を持てる点が論点 |
| AP R6春 午前 問45 |
上記FE H22春 問47と同一構成の問題(流用)。 | ・「サブクラスでスーパークラスの操作を再定義できる」が正解 ・集約と汎化の混同がひっかけ |
| FE H30秋 午前 問26 |
UMLのクラス図の多重度をa・bに当てはめる問題。 | ・「1..*」と「0..*」の違いを正確に読み取れるかが勝負 ・条件文から多重度を導出する思考プロセス |
| FE H25秋 午前 問46 |
クラス図の記号から汎化の関係を選ぶ問題。 | ・白抜き三角=汎化、黒塗りひし形=コンポジション ・関連(装飾なし実線)との記号の違い |
📝 IPA試験での出題パターン
パターン1:「クラス間の関係の記述として正しいものを選べ」
関連・集約・汎化・オーバーライドなどに関する4つの文が並び、正しいものを選ぶ形式。「関連は2つのクラス間でしか定義できない」はひっかけの定番。1つのクラスが複数のクラスと関係を持てるのが正しい。
パターン2:「クラス図の多重度を読み取れ」
条件文をもとにクラス図の空欄に入る多重度を答える形式。「1..* は1個以上」「0..* は0個以上」の意味を正確に把握していれば解ける。
試験ではここまででOKです。関連クラス(Association Class)の詳細や誘導可能性(ナビゲーション)の矢印表記まで午前で問われることはないので、深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. UMLのクラス図におけるクラス間の関係について、適切なものはどれでしょうか?
- A. クラス間の関連は、二つのクラス間でだけ定義できる。
- B. 集約の関係がある場合、集約オブジェクトと部品オブジェクトは属性・操作を共有しない。
- C. 二つのクラスに集約の関係があるとき、集約オブジェクトは部品オブジェクトの属性と操作を継承する。
正解と解説を見る
正解:B
解説:
集約は「全体と部分」の関係を表します。全体(集約オブジェクト)は部分(部品オブジェクト)への参照を持ちますが、属性や操作を共有するわけではありません。属性・操作を引き継ぐのは汎化(継承)の役割です。
選択肢Aは誤りです。クラス間の関係は2つのクラス間に限定されず、1つのクラスが複数のクラスと関連・集約・汎化などの関係を同時に持てます。選択肢Cも誤りです。集約と汎化は別の関係であり、集約では属性・操作の継承は起こりません。
よくある質問(FAQ)
Q. 関連に矢印が付いている場合と付いていない場合の違いは何ですか?
矢印なしの実線は「双方向の関連(どちらからでも相手を参照できる)」を表します。片方に矢印(→)が付くと「誘導可能性(ナビゲーション)」を示し、矢印の方向にだけ参照できるという意味になります。ただし、IPA試験の午前問題では誘導可能性の矢印の有無を問うケースはほぼないため、「装飾なしの実線=関連」と覚えておけば十分です。
Q. 「関連クラス(Association Class)」とは何ですか?
多対多の関連に属性を持たせたい場合に使うクラスです。例えば「学生」と「科目」の多対多の関連に「成績」という情報を持たせたいとき、関連線と点線でつないだ「成績」クラスを配置します。関係データベースの中間テーブルに対応する概念です。AP午後問題で稀に登場しますが、午前で直接問われることはありません。
Q. 実務では関連と集約をどう使い分けますか?
実務では「部分が全体から独立して存在できるか」で判断します。例えば「大学」と「教授」の関係は集約です。大学が廃校になっても教授は別の大学に移れます。一方「注文」と「注文明細」はコンポジションです。注文を削除すれば明細も消えます。このどちらにも当てはまらない単なるつながり(例:顧客と商品の「購入する」関係)は関連で表現します。
Q. E-R図の「リレーションシップ」とクラス図の「関連」は同じものですか?
目的は似ていますが、文脈が異なります。E-R図のリレーションシップはエンティティ(実体)間のデータ上のつながりを示す概念で、データベース設計で使います。クラス図の関連はクラス同士のオブジェクト間の構造的なつながりを示す概念で、オブジェクト指向設計で使います。試験の選択肢でE-R図の用語とUMLの用語が混在するパターンがあるため、どちらの図の話をしているかを問題文から読み取ることが重要です。