開発・Git・設計の用語一覧へ
このページの目次

クラス構成図とは?

最終更新:2026/08/18

3秒でわかる

クラスの持つデータと操作、そしてクラス同士のつながりを四角と線で表すUMLの図。実装前に責務の分け方を検討するために描きます。

もう少し詳しく

どういうものか

クラス構成図(クラス図)は、UML で定められた図の 1 つで、システムを構成するクラスと、その関係を静的に表します。1 つのクラスを 3 段の四角で描き、上から順にクラス名、属性、操作を並べます。

クラス同士は線でつなぎます。線の形が関係の種類を表し、白抜きの三角矢印は継承、菱形は全体と部分の関係、点線の矢印は依存です。実行の順序や時間の流れは表しません。そこはシーケンス図の役割です。

なぜ必要か

コードを書き始めてから「この処理はどのクラスの仕事か」と迷うと、手戻りが大きくなります。図なら、四角の位置を動かすだけで案を比べられます。

レビューの場でも効きます。1 つのクラスから線が 10 本出ていれば、責務を持ちすぎているとひと目で分かります。文章の設計書では気づけない偏りが、線の本数として現れるのがクラス図の利点です。

具体例

図はテキストでも十分に伝わります。

+---------------------+ +------------------+ | Order | | OrderItem | +---------------------+ 1 * +------------------+ | - id: Long |<>--------| - productId | | - createdAt: Date | | - quantity: int | +---------------------+ | - unitPrice | | + total(): int | +------------------+ | + addItem(item) | | + subtotal(): int| +---------------------+ +------------------+ ^ | (継承) +---------------------+ | SubscriptionOrder | +---------------------+ | - intervalDays: int | +---------------------+

この図をそのままコードに落とすと、次の形になります。

public class Order { private Long id; private final List<OrderItem> items = new ArrayList<>(); public int total() { return items.stream().mapToInt(OrderItem::subtotal).sum(); } public void addItem(OrderItem item) { items.add(item); } } public class SubscriptionOrder extends Order { private int intervalDays; }

- は private、+ は public を表す記号です。

つまずきやすいところ

  • 属性を全部書く — 設計判断に関係ない項目まで並べると、線が見えなくなります。議論に必要な属性だけ書きます

  • 関連と依存を混同する — フィールドとして保持し続けるなら関連、メソッドの引数で一時的に使うだけなら依存です

  • 多重度を書き忘れる1* の記載が無いと、1 対 1 なのか 1 対多なのかが読み手に伝わりません

  • 実装後に更新しない — 古い図はむしろ誤解を生みます。全クラスを描かず、重要な部分だけを維持するほうが続きます
  • 似た用語との違い

    表すもの
    クラス図クラスの構造と関係(静的)
    シーケンス図処理の呼び出し順(動的)
    ER 図テーブルと外部キーの関係


    覚え方

    クラス図は「登場人物と、その間柄の一覧表」です。誰が何を持っていて、誰が誰を知っているか。時間の話は出てきません。

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地クラス構成図開発・Git

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    この用語を扱うコース

    コース

    Java入門:基礎文法編

    69レッスン
    コース

    Java 中級:コレクション・Stream・例外処理

    64レッスン
    コース

    基本情報技術者(FE)対策

    79レッスン
    Javaコースの全編を見る