クラス図とは? わかりやすく解説

クラス図

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/03/05 07:46 UTC 版)

統一モデリング言語 (UML)におけるクラス図(クラスず、: class diagram)とは、クラス、属性、クラス間の関係からシステムの構造を記述する静的な構造図である。

クラス図とソースコードの同期が可能なUMLモデリングツールも存在する。

クラス

クラス図におけるクラスの例

ソフトウェアシステムにおけるクラスは、中にクラス名の記述された四角で表現する。クラスはドメイン等、ソフトウェア要素ではない要素であってもよい。例えば、車のタイヤ、化学物質の一種、料理の材料などである。

クラス名の下に属性プロパティ)の区画を設けることができる。どの属性も最低でも名前を記述せねばならず、オプションとしてその型、初期値、その他の特性を記述することができる。

さらにその下に、クラスの操作メソッド)の区画を設けることができる。どの操作も最低でも名前を記述せねばならず、オプションとしてその引数や戻り値を記述することができる。

他の区画を定義してもよい。例えば、保存する義務や必要条件、制限などである。

属性や操作に対し以下の可視性を付けることができる。

  • " + "はpublic
  • " # "はprotected
  • " - "はprivate
  • " ~ "はpackage(パッケージ内で可視)

また、クラス図でクラス変数クラスメソッドを表現するには、区画内の項目に下線を引けばよい。

関係

関係は、クラス図とオブジェクト図に見られる、以下に示すような論理的な連結の種類を総称する用語である。

インスタンスレベルの関係

関連とリンク

リンク は、基本的なオブジェクト間の関係である。オブジェクト図では、オブジェクトを表す長方形を実線でつなぐことでリンクを表す。 なお、ここで言うオブジェクトはプログラミング言語でのオブジェクトに限られない。

2つ(以上)のクラスのそれぞれのインスタンス間にリンクがありうる場合、これらのクラスに関連 (association) があると言う。 2つのクラスに関連があることは、クラスを表す長方形を実線で結ぶことで表される。3者以上の関連を表す記法もある。 関連を表す線の端に、ロール名と呼ばれる、関連先の役割を表す名前を記すことができる。

関連の線を矢印(開いた矢印)とすることで、誘導可能性 (navigability) を表現することができる。

集約

2つのクラス間の集約を表すクラス図

集約 (aggregation) は、関連の一種であり、"has-a" の関係を表す。

インスタンス間のリンクとしては、「部分」に相当するオブジェクトと「全体」に相当するオブジェクトの結びつきである。 「部分」側のインスタンスが複数の「全体」インスタンスに共有される場合、後述のコンポジションには該当せず、「集約」とされる。UML規格書では shared aggregation とも表記されている。 「全体」インスタンスが破棄されても、「部分」インスタンスが破棄されるとは限らない。

図では、クラスを結ぶ関連の線を書き、「全体」側の端に中抜きの菱形を付けることで表現する。

全体-部分の関係の例として、例えば「車とエンジン」の関係を挙げることができる。これは集約またはコンポジションとしてモデル化されうる。

コンポジション

コンポジション は、集約と同じく関連の一種であり、"has-a" の関係を表すが、集約よりも結びつきが強い。

コンポジションは、「集約」より制約が強く、「部分」側のインスタンスが共有されない。すなわち、「部分」インスタンスに対して結びついている「全体」インスタンスが同時には多くとも1個である。 両インスタンスのライフサイクルに強い関係があり、「全体」インスタンスが破棄される際には「部分」インスタンスもすべて破棄されることが普通である(必ずではない)。

表記は、「集約」と類似しているが、「全体」側の端に付ける菱形を黒塗りにする。

コンポジションでは、前述した制約(共有不可)により、全体側インスタンスの多重度は 0..1 か 1 となる。

クラスレベルの関係

汎化・特化

汎化とは、一方のクラス(スーパークラス)がもう一方(サブクラス)に対してより一般的であると考えられることを表す。これはサブクラスのインスタンスがスーパークラスのインスタンスでもあることを意味している。 特化は、汎化の逆である。つまり、サブタイプはスーパータイプを特化したものである。

UMLでは、スーパークラス側に中抜きの三角を記述する事で表現する。

汎化・特化の関係は、"is-a"の関係としても知られる。

継承」は、特化と関係はあるが同じではない。

汎化・特化の関係において、スーパータイプは""、"スーパークラス"、"基底クラス"、"基底タイプ"、"基本型"としても知られる。 サブタイプは""、"サブクラス"、"派生クラス"、"派生タイプ"、"派生型"としても知られる。

この関係が生物の個体の親子関係とは類似していないことに注意。

汎化/特化の関係例として、例えば「貨物自動車は車の一種」という関係を挙げるとする。貨物自動車は車から特化され、車は貨物自動車から汎化されたといえる。

実現

実現とは、一方のクラスがもう一方(インターフェース仕様)の実装となっていることを表す。例えば、インターフェースとそれの実装となっているクラスの関係である。

UMLでは、インターフェース側に中抜きの三角を記述し破線を引く事で表現する。

一般的な関係

依存

モデルの要素間に、片方を変更すればもう片方に変更が生じる依存が存在する。 「依存」には幾つかの名前付けされた種類がある。 依存はインスタンス間、クラス間、インスタンス-クラス間にあり得る。

図では、依存する側からされる側への破線矢印で表現する。 破線上に、ステレオタイプと呼ばれる、テキストをギュメ (« ») で囲んだものを付けて、依存の種類を記すことができる。

多重度

関連の関係は、関連するクラスの一方がもう一方を参照していることを意味する。

UMLでは、それらのインスタンスにおける多重度をクラス間の両端に記述することができる。多重度とは、その関連に参加するオブジェクトの数を示すものである。

記述 インスタンス数
0..1 無し又は一つ
1 一つのみ
0..* または * ゼロ個以上
1..* 1個以上

関連項目

外部リンク


クラス図

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/04/16 14:36 UTC 版)

Adapter パターン」の記事における「クラス図」の解説

継承を利用したAdapterのクラス図は以下のようになる参考までに上のサンプルコードとこのクラス図との対応を示す。 Target ProductPrice Target#requiredMethod ProductPrice#getPrice() Adapter ProductAdapter Adapter#requiredMethod ProductAdapter#getPrice() Adaptee Product Adaptee#oldMethod Product#getCost()

※この「クラス図」の解説は、「Adapter パターン」の解説の一部です。
「クラス図」を含む「Adapter パターン」の記事については、「Adapter パターン」の概要を参照ください。

ウィキペディア小見出し辞書の「クラス図」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「クラス図」の関連用語

クラス図のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



クラス図のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのクラス図 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのAdapter パターン (改訂履歴)、オブジェクト指向分析設計 (改訂履歴)、Booch法 (改訂履歴)、Singleton パターン (改訂履歴)、Observer パターン (改訂履歴)、Decorator パターン (改訂履歴)、Composite パターン (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS