特定のシステムのクラス、属性、操作やオブジェクト間の関係を可視化することで、システムの構造を明確に図式化するクラス図は、統一言語モデリング(UML)で最も有用な図の一種です。Lucidchart のUML 作図ソフトウェアを使えば、クラス図の作成も、想定するほど難しいものではありません。この初心者入門ガイドでは、クラス図の基本情報、書き方、使える使用例やクラス図のルールをわかりやすくご紹介しています。
この記事を読むのに必要な時間 : 4 分
UML図の作成には、ぜひ Lucidchart を試してみましょう。素早く、簡単に使えて、完全に無料です。
UML クラス図とは?
統一モデリング言語 (UMLクラス図) は、さまざまな方法でシステムのモデリングに役立つ言語です。UML で最も一般的なもののひとつに、クラス図があります。クラス図は、ソフトウェアアーキテクチャの文書化を目的としてソフトウェア技術者の間で広く用いられています。モデリングの対象となるシステム内に存在すべき構成要素を図式化したもので、構造図の一種です。 Lucidchart の UML ソフトウェアは、ユーザーの UML やクラス図に関する習熟度にかかわらず使いこなせるよう、シンプルかつ使いやすく設計されています。
UML は、オブジェクト指向のプログラミングアプローチを記述するための標準化されたモデルとして考案されました。クラスはオブジェクトの基礎をなすため、クラス図は UML の土台とも言える存在です。クラス図のさまざまな構成要素は、実際にプログラムされるクラス、主要なオブジェクトに加え、クラスやオブジェクト間の相互作用を表すものです。
クラスの図形自体は、3行からなる長方形で構成されています。最上段の行にはクラスの名前、中段にはクラスの属性がそれぞれ含まれ、最下段にはクラスの用いるメソッドや操作が記述されています。クラスとサブクラスはグループ化され、オブジェクト 間の静的な関係を表します。
Lucidchart の UML 図形ライブラリは、UML 図ツールを使って多種多様なカスタムクラス図を作成する上で役立ちます。
クラス図のメリット
クラス図作成が組織にもたらすメリットはたくさんあり、UML クラス図の用途には以下のようなものがあります。
- 複雑度にかかわらず、情報システムのデータモデルを図式化する。
- アプリケーションの概略図の全体的な概要について理解を深める。
- システムに特有のニーズを視覚的に表現し、その情報を組織全体に伝達する。
- 記述された構造を対象とした、プログラムや実装を要する特定のコードをハイライトした詳細な図を作成する。
- システムで使用され、後に構成要素間で渡される実体型を実装に依存しない形で説明する。
- システム全体を可視化で表現できる。
UML図の作成には、ぜひ Lucidchart を試してみましょう。素早く、簡単に使えて、完全に無料です。
UML図 を作成クラス図の基本的な構成要素
標準的なクラス図は以下の3つのセクションで構成されます。
上段:
クラスの名前が含まれます。分類子の場合でも、オブジェクトの場合でも、このセクションは常に必須です。中段:
クラスの属性が含まれます。クラスの性質の説明に用いるセクションです。クラスの特定のインスタンスを記述する際にのみ必要となります。下段:
クラスの操作 (メソッド) が含まれます。リスト形式で表示され、各行に1つずつ操作を記述します。これらの操作は、クラスがデータと相互作用する方法を示します。
メンバーのアクセス修飾子
各クラスには、アクセス修飾子 (可視性) によりレベルの異なるアクセス権が付与されます。アクセスレベルと対応する記号は以下のとおりです。
- 公開 (+)
- 非公開 (-)
- 保護 (#)
- パッケージ (~)
- 派生 (/)
- 静的 (下線)
メンバーのスコープ
メンバーには分類子とインスタンスの2つのスコープがあります。
分類子が静的メンバーを指すのに対し、インスタンスはクラスにnおける特定のインスタンスを指します。オブジェクト指向の基礎理論に詳しい方であれば、おなじみの内容でしょう。
その他のクラス図の構成要素
クラス図において、クラスは、コンテキストに応じて、主要なオブジェクト、アプリケーション内の相互作用またはプログラム対象のクラスを表します。「UML のクラス図とは?」という問いに答えるには、まずその基本的な仕組みを理解する必要があります。
-
クラス: システムでオブジェクトを作成し、動作を実装するためのテンプレート。UML において、クラスは、共通の構造と動作を有するオブジェクトまたは一連のオブジェクトを表します。クラスの名称、属性と操作を記述した行を含む長方形で表されます。クラス図でクラスを描画する場合に記述が必須となるのは上段の行のみです。他の行は、より詳細に記述を加えたい場合に使用します。
-
名前: クラス図形の上段の行。
-
属性: クラス図形の中段の行。クラスの属性はそれぞれ個別の行に示されます。
-
メソッド: クラス図形の下段の行。メソッドは操作とも呼ばれ、各行にそれぞれリスト形式で示されます。
-
-
シグナル: アクティブなオブジェクト間における一方向の非同期的な通信を表します。
-
データ型: データの値を定義する分類子。データ型は、プリミティブ型と列挙型にモデル化することができます。
-
パッケージ: 図内で関連する分類子を整理するための図形。大きなタブ付きの長方形で示されます。
-
インターフェイス: まとまりのある一連の振る舞いを定義する操作シグネチャや属性の定義の集合。インターフェイスはクラスに似ていますが、クラスが自身のクラスの型のインスタンスをもつことができるのに対し、インターフェイスには実装のために少なくとも1つのクラスを要する点で違いがあります。
-
列挙: ユーザー定義のデータ型。列挙には、列挙値を示す識別子のグループが含まれます。
-
オブジェクト: クラスまたはクラスのインスタンス。オブジェクトは、具体的または原型的なインスタンスを表すためのクラス図に追加することができます。
-
成果物: ドキュメント、データベース、実行可能ファイル、ソフトウェアのコンポーネントなど、ソフトウェアシステム内の具体的な実体を表すモデル要素。
相互作用
「相互作用」という用語は、クラス図やオブジェクト図に存在しうるさまざまな関係とつながりを指すものです。最も一般的な相互作用には、以下が含まれます。
-
継承: 親またはスーパークラスの機能を受け継ぐ子またはサブクラスのプロセスで、汎化とも呼ばれます。スーパークラスを指す三角形の閉じた矢印とクラスを接続する直線で示されます。
この例では、オブジェクト「車 (Car)」は、特定の属性 (モデル形式、ドア数、メーカー名) と自身のクラスのメソッド (ラジオ()、ウインドシールドワイパー()、空調()) に加え、親クラス (「車両 (Vehicle)」) のすべての属性 (速度、乗員数、燃料) とメソッド (発進する()、止まる()、方向を変更する()) を継承します。クラス図における継承は、白抜きの閉じた三角形に実線の矢印で表現されます。
-
双方向の関連: 2つのクラス間のデフォルトの関係です。いずれのクラスもお互いを認識しており、クラス間の関係についての認識もあります。この関連は、2つのクラス間の直線で表されます。
上の例では、車 (Car) クラスと走行 (RoadTrip) クラスが関係しています。線の一端で、Car は、多重度 0..1 の値で「assignedCar」の関連を持つようになります。したがって、RoadTrip インスタンスが存在する場合には、関連付けられた Car インスタンス1つを有するか、関連付けられた Car インスタンスをもたないかのいずれかとなります。この場合、RoadTrip が複数の関連付けられた Car インスタンスを有しうることを示すためには、多重度 0..* のキャラバン (Caravan) クラスが必要となります。1 つの Car インスタンスは複数の「getRoadTrip」関連を有しうるため(言い換えると、1台の車で複数回の走行が可能なため)、多重度は 0..* に設定されます。
-
単方向の関連: 2つのクラス間の関係で、双方向に比較してやや一般的でないものです。片方のクラスが他方のクラスを認識しており、クラス間の関係についての認識もあります。単方向の関連は、認識のあるクラスから認識対象のクラスへの直線の開いた矢印で表現されます。
例えば、アリゾナ州へのドライブの道中で、自動速度取締機が走行方法を監視する交通取締に遭遇する可能性があるものの、メールによる通知を受信するまであなたはそのことを知らないとします。上記の図にはこの内容が反映されていませんが、こうした状況であれば、取締に該当するような速度であなたが運転する頻度に応じて、多重度は 0..* となるでしょう。
クラス図の例
プロセスフローをマッピングするクラス図の作成は容易です。UML でクラス図を作成する際には、以下の2つの例を参考にしてみましょう。
ホテル管理システムのためのクラス図
クラス図により、利用者情報、スタッフの担当範囲や客室利用率など、ホテル管理システム内の各オブジェクト間の関係を示すことができます。以下の例では、ホテル管理システムに役立つ概要を一覧で確認することができます。以下のテンプレートをクリックしてクラス図の作成を始めましょう。
ATM システムのためのクラス図
ATM の仕組みは一見すると単純なものです。利用者が現金を引き出すにはいくつかボタンを押すだけで済みますが、詐欺行為を防ぎ、銀行の顧客に価値を提供できるよう、ATM の安全かつ効率的な稼働を確保するには、多数のセキュリティレイヤーの実装が必要となります。以下の図では、ATM のシステムの各要素を、人間が関与するものとそうでないものを含め分かりやすく描き出しています。すべてのクラスにタイトルが付けられ、その下に属性が並びます。この文書を開き、無料の Lucidchart アカウントに登録すれば、この図の編集と共有が可能になります。
わかりやすいクラス図の書き方 4 ステップ
Lucidchart では、驚くほど簡単にゼロからクラス図を作成することができます。作成は以下の3つの手順で行います。
-
空白の文書を開くか、またはテンプレートを使って作成を開始します。
-
ERD 図形ライブラリを有効化します。Lucidchart エディターの左側にある [図形] をクリックします。図形ライブラリマネージャーで、[UML] にチェックを入れ、[保存] をクリックします。
-
追加したライブラリから使用したい図形を選択し、ツールボックスからキャンバスへドラッグします。
-
図形の間に線を描画し、テキストを追加して、プロセスフローをモデル化します。
UML でクラス図を作成する方法 を紹介したこのガイドで詳細を確認しましょう。Lucidchart では、あらゆる要素のサイズやスタイルを簡単に変更することができます。SVG 図形や Visio ファイルをインポートしてのカスタマイズも可能です。UML についての詳細は、チュートリアル「UML とは?」をチェックしてみましょう。