情報処理試験を勉強していると、「クラス図って結局何を描く図?シーケンス図やユースケース図と何が違うの?」と混乱しがちです。この記事ではクラス図の定義から構成要素、試験での出題パターンまで一気に整理します。
対象試験と出題頻度
クラス図は、基本情報技術者・応用情報技術者で出題されるテーマです。
UMLの構造図の中でも最も出題頻度が高く、構成要素の名称やクラス間の関係(汎化・集約・多重度)を正確に区別できるかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★★☆
ランクA(重要)必ず覚えておくべき
用語の定義
クラス図(Class Diagram)とは、一言で言うと
「クラスの属性・操作と、クラス間の静的な関連を表現するUMLの構造図」
のことです。
イメージとしては、「会社の組織図」です。
組織図には「部署名」「所属する人の役職」「部署同士の上下関係・横の連携」が書かれています。業務の流れや時系列は書かれていません。
クラス図も同じで、「どんなクラスがあり」「各クラスがどんなデータと処理を持ち」「クラス同士がどういう関係か」という静的な構造だけをまとめた図です。
📊 クラス図の基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Class Diagram |
| UMLでの分類 | 構造図(Structure Diagram) |
| 主な利用工程 | 外部設計・内部設計(詳細設計) |
| 構成要素 | クラス名、属性、操作、関連(汎化・集約・コンポジションなど) |
解説
オブジェクト指向でシステムを設計するとき、最初に決めるのは「どんなクラスを作り、それぞれにどんなデータと処理を持たせ、クラス同士をどう結びつけるか」です。
この設計方針を開発チーム全体で共有する手段として、クラス図が標準的に使われています。
クラスの3段構成
クラス図では、1つのクラスを四角形で描き、内部を3段に区切って記述します。
▲ 上段=クラス名、中段=属性(データ)、下段=操作(メソッド)
上段にクラス名、中段に属性(そのクラスが持つデータ)、下段に操作(そのクラスが実行できる処理)を記述します。属性の前に「-」が付いていれば非公開(private)、「+」なら公開(public)を意味します。
この可視性の表記はカプセル化の概念と直結しています。
クラス間の関係(5種類)
クラス図の本質は「クラス同士をどんな線で結ぶか」にあります。試験で問われる主要な関係は5つです。
| 関係の名称 | 記号 | 意味 | 日常の例え |
|---|---|---|---|
| 関連 | 実線 | クラス間に何らかのつながりがある | 「顧客」と「注文」のつながり |
| 汎化 | 白抜き三角の実線 | is-a 関係(継承) | 「犬」は「動物」の一種 |
| 集約 | 白抜きひし形の実線 | has-a 関係(全体と部品。部品は独立可能) | 「チーム」と「メンバー」(メンバーは移籍可能) |
| コンポジション | 黒塗りひし形の実線 | 強いhas-a関係(全体が消えると部品も消える) | 「注文」と「注文明細」(注文を消すと明細も消える) |
| 実現 | 白抜き三角の破線 | インタフェースの実装 | 「契約書(仕様)」に従って実際の処理を作る |
図解:ECサイトのクラス図(簡易版)
具体例として、ECサイトの受注まわりを簡易的なクラス図で示します。
図解:ECサイトのクラス図(簡易版)
具体例として、ECサイトの受注まわりを簡易的なクラス図で示します。
ECサイト ― 受注クラス図(簡易版)
|
顧客
– 顧客ID : int
– 名前 : String + 注文する()
|
1 ────── * 関連 |
注文
– 注文ID : int
– 注文日 : Date + 合計算出()
|
1 ◆──── 1..* コンポジション |
注文明細
– 数量 : int
– 単価 : int + 小計算出()
|
▲ 顧客と注文は「1対多(*)」の関連。注文と注文明細は「コンポジション(◆)」で、◆は全体側(注文)に付く
多重度の読み方
関連線の両端に書く数字が「多重度」です。
「1人の顧客は0件以上の注文をする」「1件の注文は必ず1人の顧客に紐づく」といった対応数をここで表現します。
| 表記 | 意味 |
|---|---|
| 1 | ちょうど1つ |
| 0..1 | 0または1つ |
| *(0..*) | 0以上(上限なし) |
| 1..* | 1以上(上限なし) |
他のUMLダイアグラムとの違い
クラス図を正しく位置づけるには、他の主要な図と「何を表現するか」で区別するのが近道です。
| 図の名称 | 分類 | 何を表現するか |
|---|---|---|
| クラス図 | 構造図 | クラスの属性・操作と静的な関連 |
| ユースケース図 | 振る舞い図 | アクターとシステム機能の対応関係 |
| シーケンス図 | 振る舞い図 | オブジェクト間のメッセージを時系列で表現 |
| アクティビティ図 | 振る舞い図 | 処理の制御フロー(分岐・並行処理) |
| 状態マシン図 | 振る舞い図 | オブジェクトの状態遷移 |
ここだけは確実に押さえてください。クラス図は「構造図」であり「静的」な関係を描くものです。時系列や処理の流れは一切含みません。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 クラス図の核心を3行で
・クラスは「クラス名」「属性」「操作」の3段で描く
・クラス間の関係は「関連」「汎化」「集約」「コンポジション」「実現」の5種類
・多重度(1、0..1、*、1..*)で対応数を表す
試験ではこう出る!
クラス図は、FE・APの午前問題で繰り返し出題される定番テーマです。出題パターンは大きく3つに分かれます。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| AP H21秋 午前 問43 |
クラス図が表す内容として正しいものを選ぶ問題 | ・正解は「汎化,集約,関連などのクラス間の関係」 ・「動的な関係」「1対1に限定」はひっかけ |
| FE H19秋 午前 問45 |
クラス図に記述する要素を選ぶ問題 | ・正解は「操作、属性、ロール名」 ・ライフラインはシーケンス図、初期状態・遷移は状態マシン図 |
| AP H23特別 午前 問45 |
クラス図の多重度を読み解く問題(顧客・注文・注文明細・商品の関係) | ・コンポジション(黒塗りひし形)の向きと多重度の組み合わせが正解を左右する |
| AP R3秋 午前 問48 |
リファクタリング「継承の分割」後のクラス図を選ぶ問題 | ・継承階層から委譲への変換を読み取る ・AP午前の応用的な出題例 |
📝 IPA試験での出題パターン
パターン1:「クラス図の説明(構成要素)を選べ」
4つのUMLダイアグラムの構成要素が並び、クラス図に該当するものを選ぶ形式。ひっかけとして「ライフライン」(シーケンス図)、「初期状態・遷移」(状態マシン図)の要素が紛れ込む。キーワードは「属性」「操作」「汎化」「集約」。
パターン2:「多重度を読み取れ」
具体的な業務シナリオ(顧客と注文の関係など)のクラス図を提示し、多重度やコンポジションの向きが正しい図を選ばせる形式。AP H23特別 問45が典型。
パターン3:「クラス図が表す内容は?」
「静的な関係」「動的な関係」などの選択肢から正しいものを選ばせる形式。AP H21秋 問43が典型。「静的」「構造図」がキーワード。
試験ではここまででOKです。実現やインタフェースの詳細まで深掘りされることは午前問題ではほぼないので、深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. UMLのクラス図が表す内容として、最も適切なものはどれでしょうか?
- A. 汎化、集約、関連などのクラス間の静的な関係を表現する。
- B. オブジェクト間のメッセージのやり取りを時系列に沿って表現する。
- C. システムに対する要求機能を、アクターとシステムの相互作用として表現する。
正解と解説を見る
正解:A
解説:
クラス図は、クラスの属性・操作とクラス間の関連・汎化・集約などの静的な構造を描くUMLの構造図です。
選択肢Bはシーケンス図の説明です。シーケンス図はオブジェクト間のメッセージを時間軸で記述するもので、静的な構造ではなく動的な振る舞いを扱います。選択肢Cはユースケース図の説明です。ユースケース図はアクターとシステム機能の対応関係を描くもので、クラスの内部構造は対象外です。
よくある質問(FAQ)
Q. クラス図とER図(Entity-Relationship Diagram)はどう使い分けますか?
クラス図はオブジェクト指向設計で使う図であり、データだけでなく「操作(メソッド)」も表現します。一方、ER図はデータベース設計に特化した図で、エンティティ(テーブル)間のリレーションシップを表現しますが、操作は含みません。AP R2秋 午前問27のように、クラス図の多重度を関係データベースの外部キーに変換させる出題もあるため、両者の対応関係を押さえておくと得点につながります。
Q. 集約とコンポジションの見分け方は?
記号で見分けるなら、白抜きひし形が集約、黒塗りひし形がコンポジションです。意味の違いは「部品が全体から独立して存在できるか」にあります。集約は独立可能(例:チームを解散してもメンバーは存在する)、コンポジションは独立不可能(例:注文を削除すれば注文明細も消える)です。試験では「ひし形の色」と「ライフサイクルの依存度」をセットで覚えておけば判断できます。
Q. クラス図はどのツールで書くのが一般的ですか?
実務では、astah*(旧JUDE)やPlantUML、Lucidchart、draw.ioなどがよく使われます。PlantUMLはテキストベースで記述できるため、Gitでバージョン管理がしやすく、エンジニアには特に人気があります。試験対策の範囲ではツールの知識は不要ですが、実務を見据えるならPlantUMLの記法に触れておくと設計レビューで役立ちます。
Q. 「リバースエンジニアリング」でクラス図を生成するとはどういう意味ですか?
既存のソースコードを解析し、そこからクラス図を自動生成することを「リバースエンジニアリング」と呼びます。FE H26秋 午前問50やFE H22春 午前問49で出題されており、逆方向(クラス図→コード)の「フォワードエンジニアリング」との対比で問われます。設計書なしで保守されてきたレガシーシステムの構造把握で活用される手法です。