情報処理試験を勉強していると、「クラス図って結局何を描く図?シーケンス図やユースケース図と何が違うの?」と混乱しがちです。この記事ではクラス図の定義から構成要素、試験での出題パターンまで一気に整理します。

対象試験と出題頻度

クラス図は、基本情報技術者・応用情報技術者で出題されるテーマです。

UMLの構造図の中でも最も出題頻度が高く、構成要素の名称やクラス間の関係(汎化・集約・多重度)を正確に区別できるかが問われます。

詳細をクリックして確認
対象試験:
基本情報技術者
応用情報技術者
出題頻度:
★★★★☆
ランクA(重要)必ず覚えておくべき

用語の定義

クラス図(Class Diagram)とは、一言で言うと

 「クラスの属性・操作と、クラス間の静的な関連を表現するUMLの構造図

のことです。

イメージとしては、会社の組織図です。

組織図には「部署名」「所属する人の役職」「部署同士の上下関係・横の連携」が書かれています。業務の流れや時系列は書かれていません。

クラス図も同じで、「どんなクラスがあり」「各クラスがどんなデータと処理を持ち」「クラス同士がどういう関係か」という静的な構造だけをまとめた図です。

📊 クラス図の基本情報

項目 内容
英語名 Class Diagram
UMLでの分類 構造図(Structure Diagram)
主な利用工程 外部設計・内部設計(詳細設計)
構成要素 クラス名、属性、操作、関連(汎化・集約・コンポジションなど)

解説

オブジェクト指向でシステムを設計するとき、最初に決めるのは「どんなクラスを作り、それぞれにどんなデータと処理を持たせ、クラス同士をどう結びつけるか」です。

この設計方針を開発チーム全体で共有する手段として、クラス図が標準的に使われています。

クラスの3段構成

クラス図では、1つのクラスを四角形で描き、内部を3段に区切って記述します。

顧客(Customer)
– 顧客ID : int
– 名前 : String
– メールアドレス : String
+ 注文する()
+ 退会する()

▲ 上段=クラス名、中段=属性(データ)、下段=操作(メソッド)

上段にクラス名、中段に属性(そのクラスが持つデータ)、下段に操作(そのクラスが実行できる処理)を記述します。属性の前に「-」が付いていれば非公開(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で出題されており、逆方向(クラス図→コード)の「フォワードエンジニアリング」との対比で問われます。設計書なしで保守されてきたレガシーシステムの構造把握で活用される手法です。