UML: クラス図の作成
執筆および管理
2007 年 11 月 [リビジョン番号: V1-4]
このページは、NetBeans IDE 6.0 リリースに適用されます
このチュートリアルでは、IDE の UML 機能を使用して、クラス図を作成する方法を学びます。このチュートリアルでは、クラス図の要素を作成するさまざまな手法や、クラス図の Java ソースコードを生成する方法を示します。このチュートリアルの目的は、IDE の UML モデリングクラス図機能の一部について説明し、クラス図の要素を作成するさまざまな手法を示すことです。
クラス図とは、アプリケーションを視覚的に表した図であり、アプリケーション内のクラスと、そのクラス間の関係を示します。クラス図を開くと、特定の UML 要素のアイコンがモデリングパレットに表示されます。クラス図モデルを使用して、アプリケーション内の要素の静的な構造を記述します。IDE では、クラスを含む図をグラフィカルに作成できます。クラスは、構造と動作が同じである階層に分けられ、ほかのクラスに関連付けられます。
予想される所要時間: 30 分
目次
チュートリアルの要件
次に進む前に、この節の要件を確認してください。
前提条件
このチュートリアルを使用するには、IDE がシステムにインストールされている必要があります。また、IDE の基本要素に関する知識が必要です。Java プログラミング言語および UML の基本的なところも知っていた方がいいでしょう。IDE の基礎については、オンラインヘルプで IDE の基礎に関する項目を参照してください。公式の UML リソースページ (http://www.uml.org/) で、UML 手法と理論に関する優れたリソースを得ることができます。
システム要件
このチュートリアルでは、ユーザーのシステムが、『NetBeans 6.0 リリースノート』の「システム要件」の節で指定された要件を満たしていることを想定しています。
このチュートリアルに必要なソフトウェア
開始する前に、次のソフトウェアをダウンロードしてインストールします。
ページの先頭へ
クラス図の使用
クラスは、各要素のインスタンスによって保持される属性と、各要素が実行する操作、または各要素に対して実行される操作を定義します。UML モデルでクラスを表現するときは、次の作業を行うことができます。
- クラスを表す要素を作成する
- クラスに名前を付ける
- クラスの属性を定義する
- クラスの操作を定義する
- リンクと関連を描画する
- コメントを追加する
このあとの各節では、銀行業務アプリケーションの簡単なクラス図を作成する方法について説明します。このチュートリアルに示す手順を完了したら、図 1 のようなクラス図が完成します。この図は参考用として示します。次の節から始まる手順に従って、クラス図を作成します。
「任意」と示されている手順は、補足的な作業、またはある作業を行う別の方法を示します。任意の手順を省略してもチュートリアルは完了できます。

図 1: クラス図の例
ページの先頭へ
クラス図の作成と要素の追加
このチュートリアルでは、チュートリアル「UML: ユースケース図の作成」で作成した UML プロジェクトを使用します。ユースケース図のチュートリアルをまだ終了していない場合は、ローカルシステムに「UMLTutorial」というディレクトリを作成し、そのディレクトリ内に「UMLTutorialProject」という Java プラットフォームモデル UML プロジェクトを作成してから、クラス図のチュートリアルを開始してください。
この節では、単純なアプリケーションをクラス図を使用してモデル化することで、基本的な UML タスクを示します。この節では、次の手順を実行します。
ページの先頭へ
クラス図を作成する
- 必要であれば、IDE を起動し以前に作成した UMLTutorialProject プロジェクトを開きます。
- 「プロジェクト」ウィンドウで、「UMLTutorialProject」ノードを展開し、「モデル」ノードを右クリックします。
- ポップアップメニューから「追加」>「図」を選択します。
「新規」ウィザードの「図を新規作成」ページが表示されます。
- 「図の種類」リストから「クラス図」を選択します。
- 「図名」フィールドに「 ClassDiagram 」と入力します。
- 「名前空間」フィールドのデフォルト設定は変更しないで、「完了」をクリックします。
IDE が次の処理を行います。
- 「モデル」ノードの下に「ClassDiagram」ノードが作成されます。
- 図エディタに新しい図が表示されます (この時点で図は空です)。
- モデリングパレットが開きます。
ページの先頭へ
クラス要素を追加してラベルを付ける
- モデリングパレットの基本区画で、「クラス (Class)」アイコン
を選択し、図エディタ内をクリックします。
この操作によって、クラス要素が図に配置されます。
- 図エディタ内の任意の場所を右クリックしてアイコンを選択解除します。
注: アイコンを選択して、図エディタ内をクリックする操作を繰り返すと、その要素の複数のインスタンスを図に配置できます。
- 新規に追加したクラス要素をクリックして選択します。
- 「 EntryStation 」と入力し、Enter キーを押します。
IDE が次の処理を行います。
- クラス要素に「EntryStation」というラベルが付けられます。
- EntryStation() という public 操作が作成されます。
- 「プロパティ」ウィンドウにクラスのプロパティが表示されます。
- 「プロジェクト」ウィンドウの「モデル」ノードの下に、EntryStation クラス要素が追加されます。
ページの先頭へ
ポップアップメニューを使用して属性を追加する
EntryStation 要素の描画とラベル付けが終わったら、その属性を記述する必要があります。
- 図エディタで EntryStation 要素を選択します。
- 「属性」を右クリックし、ポップアップメニューから「属性を挿入」を選択します。
次の情報を含む 1 行エディタが開きます。
可視性 型 名前 [範囲]=初期値{名前=値}
- 「 stationID 」と入力し、Enter キーを押します。
EntryStation クラスに int 型の stationID という属性が表示され、次の操作が作成されます。
public int getStationID()
public void setStationID(int val)
デフォルト設定で作業したため、get 操作と set 操作は自動的に作成されています。
ページの先頭へ
操作を追加する
- 図エディタで、EntryStation クラス要素を選択します。
- 「操作」を右クリックし、ポップアップメニューから「操作を挿入」を選択します。
次の情報を含む 1 行エディタが開きます。
可視性 戻り値の型 名前 (パラメータ) {プロパティ, ...}
- 「 validateEntryStation 」と入力し、Enter キーを押します。
新しい操作が作成されます。
ページの先頭へ
(任意) 属性または操作を編集する
クラス内の属性または操作をダブルクリックすると、次の図に示すようなコンボボックスエディタが表示されます。

属性または操作の各部分をクリックすると、コンボボックス内のその部分のラベルがボールドで表示されます。属性または操作の選択する部分によっては、値のドロップダウンリストが表示されます。
例:
- EntryStation クラスの「 stationID 」属性をダブルクリックします。
- 「 private 」をクリックします。
可視性 がボールドで表示されます。
- Ctrl キーと下矢印キーを同時に押します。
可視性属性に選択できる値のドロップダウンリストが表示されます。
- ドロップダウンリストから新しい値を選択し、Enter キーを押します。
属性が新しい値で更新されます。
注: エディタで新しい値を直接入力することもできます。必要な値がドロップダウンリストにない場合は、右矢印キーまたは左矢印キーを使用してカーソルを配置し、適切な値を入力します。
- このチュートリアルでは、「 private 」を使用します。Enter キーを押してエディタを閉じます。
ページの先頭へ
残りのクラスを追加して定義する
銀行業務アプリケーションのクラス図を完成させるには、さらにクラスを追加する必要があります。クラスを追加したら、これまでに学んだ方法で、ラベルを付け、属性と操作を追加します。詳しい操作手順を次に示します。
- モデリングパレットの基本区画で、「クラス (Class)」アイコン
を選択し、図エディタ内を 5 回クリックして、次の図に示すように追加のクラス要素を配置します。

- 図エディタ内の任意の場所を右クリックして「クラス (Class)」アイコンを選択解除します。
注: 新しいクラス要素は、選択してドラッグし、前の図に示すように配置すると見やすくなります。
- EntryStation 要素の下にある、名前のない 1 つ目のクラス要素を選択し、「 ATM 」という名前を付けます。
- ATM クラス要素が選択されている状態で、次の属性を追加します。
private float cashOnHand
- ATM クラスに 2 つ目の属性を追加し、次のように定義します。
private float dispensed
属性がクラス図に表示されます。
注: クラスに属性と操作を追加すると、クラス要素のサイズが拡大します。図の外観を良くするには、クラス要素が見やすいように必要に応じて各要素を移動します。このとき、クラス要素自体を選択し、個々の属性や操作を選択しないよう注意してください。
- ATM クラスの下にある 1 つ目のクラス要素を選択し、「 Consortium 」という名前を付けます。
- Consortium クラスに操作を追加します。操作を追加する方法は、属性を追加する方法と似ています。「操作」を右クリックし、「操作を挿入」を選択します。
- 「 validateAccountInfo 」と入力し、Enter キーを押します。
次に示す新しい操作が作成されます。
public void validateAccountInfo()
- ATM クラスの右側にあるクラス要素を選択し、「 CashierStation 」というラベルを付けます。
- このクラスに次の 2 つの操作を追加します。
public int verifyCard()
public float verifyAmountAvailable()
- 残り 2 つのクラス要素に、「Branch」および「User 」というラベルを付けます。
User クラスには、属性や操作はありません。
- Branch クラスには、次の属性を追加します。
private char connected
ページの先頭へ
Java ソースコードの生成と編集
この節では、前の節で作成したクラス図に対応する Java ソースコードを生成する方法を示します。UML モデルを作成したら、対応する Java ソースコードを生成できます。モデルを変更した場合は、UML のコード生成機能を使用して Java ソースコードを再生成できます。
この節では、次の手順を実行します。
Java ソースコードを生成する
Java アプリケーションをモデル化し、モデルに対応する Java ソースコードを生成できます。ソースコードを生成するには、UML プロジェクト用に生成されるコードを保存するための Java プロジェクトを作成する必要があります。
- メインメニューから「ファイル」>「新規プロジェクト」を選択し、次の操作を行います。
- 「カテゴリ」で「一般」を選択します。
- 「プロジェクト」で「Java アプリケーション」を選択します。
- 「次へ」をクリックします。
- 「プロジェクト名」フィールドに「 JavaPrj1 」と入力します。
- 「プロジェクトの場所」で、「ブラウズ」をクリックし、 UMLTutorial ディレクトリを選択します。
- 「主プロジェクトとして設定」チェックボックスと「主クラスを作成」チェックボックスの選択を解除します。
- 「完了」をクリックします。
進行状況を示すダイアログが表示されます。JavaPrj1 プロジェクトが作成されると、「プロジェクト」ウィンドウに表示されます。
- 「プロジェクト」ウィンドウで、「 UMLTutorialProject 」ノードを右クリックし、ポップアップメニューから「コードを生成」を選択します。
- 「コードを生成」ダイアログで、「ブラウズ」をクリックします。
- 「ターゲットソースフォルダを選択」ダイアログで、さきほど作成した JavaPrj1 プロジェクトのソースフォルダを指定します。
例: C:\Temp\UMLTutorial\JavPrj1\src
- 「開く」をクリックします。
- 「コードを生成」ダイアログに戻り、「既存のソースファイルをバックアップ」チェックボックスの選択を解除し、「了解」をクリックします。
- 「UML プロジェクトの保存の許可」ダイアログで「はい」をクリックします。
IDE によって Java ソースコードが生成され、「出力」ウィンドウにコード生成処理の進行状況が表示されます。
- 「プロジェクト」ウィンドウで、「JavaPrj1」>「ソースパッケージ」ノードを展開し、「<デフォルトのパッケージ>」ノードをダブルクリックします。
ClassDiagram モデルに作成したクラス要素と似た名前の Java ソースファイルがフォルダに含まれます。
ページの先頭へ
Java ソースエディタを使用して属性を追加する
ここでは、ソースエディタを使用して別の属性を EntryStation に追加します。Java ソースファイルを変更したら、リバースエンジニアリング機能を使用して、対応する UML モデル要素に変更内容を反映します。
- 「プロジェクト」ウィンドウで、必要に応じて「UMLTutorialProject」ノードと「モデル」ノードを展開します。
- 「 EntryStation 」ノードを右クリックし、ポップアップメニューから「ソースにナビゲート」を選択します。
ソースエディタの「 EntryStation.java 」タブに、クラスのソースコードが表示されます。
- ソースエディタで、1 つ目の属性の下に次のコードを入力します。
private boolean isOperating
- Ctrl-S キーを押して変更を保存します。
- ソースエディタ内を右クリックし、ポップアップメニューから「リバースエンジニアリング」を選択します。
「リバースエンジニアリング」ダイアログが表示されます。
- 「リバースエンジニアリング」ダイアログで「既存の UML プロジェクトを使用」を選択し、ターゲットプロジェクトとして「 UMLTutorialProject 」を選択します。
- 「了解」をクリックしてリバースエンジニアリングの処理を開始します。
- 「モデル要素の上書きの許可」ダイアログで「はい」をクリックして EntryStation クラスの既存のモデルを上書きします。
- 「ClassDiagram」タブをクリックして、図エディタにフォーカスを戻します。
isOperating 属性が EntryStation クラス要素に表示されます。
注: 図をウィンドウの中央に配置するには、図ツールバーの「ウィンドウに合わせる」ボタン
をクリックします。このボタンを使用すると、ズームレベルを調整して、ラベルを読めるようにしたり、ほかの要素を追加する領域を確保したりすることができます。
ページの先頭へ
図の要素の検索
図や「プロジェクト」ウィンドウでオブジェクトを簡単に見つける方法があります。図エディタでクラス要素に追加する属性と操作はすべて、「プロジェクト」ウィンドウに表示されます。属性は属性アイコン
で表され、操作は操作アイコン
で表されます。
「プロジェクト」ウィンドウから図エディタ内のオブジェクトを検索する
- 「プロジェクト」ウィンドウで、「EntryStation」ノードをダブルクリックします。
図エディタで EntryStation クラス要素が選択され、中央に表示されます。
図エディタから「プロジェクト」ウィンドウ内のオブジェクトを検索する
- 図エディタで Consortium クラスを選択し、右クリックします。
- ポップアップメニューから「モデル内を選択」を選択します。
「プロジェクト」ウィンドウで、対象となるオブジェクトの名前が強調表示されます。
ページの先頭へ
クラスと図に関するコメントの入力
クラス、属性、操作、および図の説明を示すコメントは、3 通りの方法で入力できます。この節では、次の手順でこの 3 通りの方法を示します。
「UML ドキュメント」ウィンドウを使用する
- (任意)「UML ドキュメント」ウィンドウが表示されていない場合は、「ウィンドウ」>「その他」>「UML ドキュメント」を選択します。
- 図エディタで、EntryStation クラス要素を選択します。
- 「UML ドキュメント」ウィンドウのテキストボックス内をクリックします。
- 「 Describes the actions of the EntryStation class 」と入力します。
- EntryStation クラス要素を右クリックし、ポップアップメニューから「コードを生成」を選択します。
- 「コードを生成」ダイアログで、「了解」をクリックします。
- 「UML プロジェクトの保存の許可」ダイアログで「はい」をクリックします。
新しい Java コードが生成されます。
- ソースエディタの「 EntryStation.java 」タブをクリックします。
「ドキュメント」ウィンドウで入力したテキストが、 EntryStation.java ソースファイルに追加されています。
ページの先頭へ
「プロパティ」ウィンドウを使用して属性のコメントを入力する
- 「ClassDiagram」タブをクリックして、図エディタにフォーカスを戻します。
- 「プロジェクト」ウィンドウで、「 EntryStation 」ノードを展開します。
- 「 private boolean isOperating 」というラベルの属性ノードを選択します。
「UML プロパティ」ウィンドウに属性のプロパティが表示されます。
- 「UML プロパティ」ウィンドウで、「ドキュメント」行の省略符号ボタン (...) をクリックします。
次の図に示すようなカスタムエディタが表示されます。
- 「 Maintains if EntryStation is operating 」と入力し、「了解」をクリックします。
- 図エディタで、EntryStation クラス要素を右クリックし、ポップアップメニューから「コードを生成」を選択します。
- 「コードを生成」ダイアログで、「了解」をクリックします。
- 「UML プロジェクトの保存の許可」ダイアログで「はい」をクリックします。
新しい Java コードが生成されます。
- ソースエディタの「 EntryStation.java 」タブをクリックします。
入力したテキストが、ソースコード内で isOperating 属性のすぐ上に表示されます。
ページの先頭へ
「コメント (Comment)」アイコンを使用して図のコメントを入力する
図で選択した要素に固有の情報を示すコメントを追加するには、モデリングパレットにある「コメント (Comment)」アイコンを使用します。
- 「ClassDiagram」タブをクリックして、図エディタに戻ります。
- モデリングパレットのコメント区画で、「コメント (Comment)」アイコン
を選択します。
- CashierStation 要素の右上をクリックします。
コメント要素が図に配置されます。
- 図エディタ内の任意の場所を右クリックしてアイコンを選択解除します。
- コメント要素が選択されている状態で、「 Cashier stations have limited funds 」と入力し、Enter キーを押します。
入力したテキストがコメント要素内に表示されます。
- モデリングパレットのコメント区画で、「コメントリンク (Link Comment)」
を選択します。
- CashierStation 要素内をクリックし、次にコメント要素内をクリックします。
クラス要素とコメント要素の間にリンクが表示されます。
- 図エディタ内の任意の場所を右クリックしてアイコンを選択解除します。
- 手順 2 ~ 8 を繰り返し、Branch クラス要素についても、図にコメント要素を配置し、リンクを設定します。
次の内容を使用してください。 A branch belongs to a Member Institution.
ページの先頭へ
リンクと関連の描画
関連は、構造と意味構文が同じであるリンクのグループを表します。UML 機能では、関連だけでなく、関連の多重度も設定できます。多重度は、あるクラスの 1 つのインスタンスに関連付けることができる別のクラスのインスタンスの個数を指定します。多重度によって、関連コンポーネントの個数が制限されます。この節では、次の手順を実行します。
クラスの関連を描画する
- モデリングパレットの関連区画で、「Aggregation (集約)」アイコン
を選択します。
- ATM 要素内をクリックし、次に Consortium 要素をクリックします。
2 つのクラスの間にリンクが描画されます。
- 図エディタ内の任意の場所を右クリックしてアイコンを選択解除します。
- ATM と Consortium 間の集約リンクを選択します。
リンクを選択すると、その色が青に変わります。
- 選択した線の中央付近にカーソルを配置し、右クリックします。
- ポップアップメニューから「ラベル」>「リンク名」を選択します。
- 「名前」フィールドに「 AccountVerification 」と入力し、Enter キーを押します。
次の図に示すようなラベルがリンクに付けられます。

- モデリングパレットの関連区画で、「関連 (Association)」アイコン
を選択し、CashierStation から Branch へのリンクを描画します。
- 図エディタ内の任意の場所を右クリックしてアイコンを選択解除します。
ページの先頭へ
限定子付き関連を描画する
限定子付き関連は、2 つのクラスと限定子を関連付けます。限定子は、関連の有効多重度を下げる特殊な属性です。限定子付き関連は、関連線の終端、限定対象のクラスの近くにある小さなボックスとして表現します。
次の手順では、ATM クラスと Consortium クラスの間で限定子付き関連を作成する方法を示します。
- 集約リンクが Consortium クラスに接続している箇所を右クリックし、「限定子を表示」を選択します。次の図に示すように、Consortium クラス要素に限定子が付けられます。

ページの先頭へ
関連の多重度を設定する
この関連の多重度を設定します。ただし、デフォルトで、これらのラベルは表示されません。次の手順に従って、関連リンクにラベルを表示します。
- Consortium クラスと ATM クラスの間のリンクを右クリックし、「ラベル」>「両終端の多重度」を選択します。
ポップアップメニューが閉じて、リンクのラベルが表示されます。
- 集約リンクの上部分 (ATM 要素の近く) にある小さなひし形を右クリックし、「多重度を設定」を選択します。
注: 正しいポップアップメニューが表示されない場合は、Consortium 要素を ATM 要素から離して、集約の矢印を長くします。
- 「 1..* 」を選択します。
次の図に示すように、リンクの下部分に「1」というラベルが付けられます。

- 同じ手順で、次の図に示すように、CashierStation クラスと Branch クラスの間の関連リンクに多重度を設定します。

ページの先頭へ
汎化と継承を描画する
汎化とは、1 つのクラスと、そのクラスから派生した 1 つ以上のクラスとの間の関係です。派生元のクラスをスーパークラスと呼び、派生したクラスをサブクラスと呼びます。スーパークラスの属性と操作は、そのサブクラスにもあります。このため、サブクラスはスーパークラスの機能を継承するといえます。継承を使用して構造を同じにすることで、クラスを構成できます。汎化リンクは、クラスが属性と操作の配列をその親クラスから継承できることを意味します。
- モデリングパレットの基本区画で、「汎化 (Generalization)」アイコン
を選択します。
- ATM クラス要素内をクリックし、次に EntryStation クラス要素をクリックします。
「再定義するメソッドを選択」ダイアログが表示されます。
- 「 ATM 」ノードの横にあるチェックボックスを選択してすべてのメソッドを選択し、「了解」をクリックします。
選択したメソッドが ATM クラス要素に追加され、2 つのクラス要素の間に汎化リンクが表示されます。
- CashierStation をクリックし、次に EntryStation をクリックして、別の汎化リンクを描画します。
- 「再定義するメソッドを選択」ダイアログで、「 CashierStation 」ノードの横にあるチェックボックスを選択してすべてのメソッドを選択し、「了解」をクリックします。
- 図エディタ内の任意の場所を右クリックして「汎化 (Generalization)」アイコンを選択解除します。
- 完成した図は次のようになります。

ページの先頭へ
依存図の作成
UML を使用して、分類子のすべての依存関係を示す図を作成できます。依存図には、次の種類の関係を描画できます。
- 汎化
- 関連
- 実装
- 指定された型のパラメータを持つ操作
ここで、ATM クラス図の依存図を作成します。
- 「プロジェクト」ウィンドウで、「 ATM 」ノードを右クリックします。
- ポップアップメニューから「依存図を生成」を選択します。
次の図に示すように、「ATM Dependencies」という名前の依存図が作成され、図エディタに表示されます。

ページの先頭へ
図の保存と Java ソースファイルの更新
この節では、完成した図を保存し、図の Java ソースファイルを再生成します。次のことを行います。
- 図を完成したあとで、「ClassDiagram」タブを右クリックし、ポップアップメニューから「ドキュメントを保存」を選択します。
メニューが閉じて、クラス図が保存されます。
- 「プロジェクト」ウィンドウで、「 UMLTutorialProject 」ノードを右クリックし、ポップアップメニューから「コードを生成」を選択します。
- 「コードを生成」ダイアログで、 JavaPrj1 ソースフォルダのデフォルトの場所を変更しないで、既存のソースファイルをバックアップします。
「ブラウズ」をクリックして別のソースフォルダを指定することもできます。
- 「閉じる」をクリックします。
IDE によってコードが生成され、「出力」ウィンドウにコード生成処理の進行状況が表示されます。JavaPrj1 プロジェクトの Java ソースフォルダが、図の変更内容に従って更新されます。
注: 「コードを生成」ダイアログで「既存のソースファイルをバックアップ」チェックボックスを選択し、同じソースフォルダを選択した場合は、JavaPrj1 プロジェクトのソースフォルダにバックアップファイルも含まれます。バックアップファイルは元のファイルと名前が似ていますが、ファイル拡張子に数値が含まれます。たとえば、ATM.java のバックアップファイルの名前は ATM.java1 です。
ページの先頭へ
まとめ
このチュートリアルでは、簡単な銀行業務アプリケーションのクラス図を作成する方法を学びました。具体的には、次の作業を実行する方法を学びました。
- クラス図を作成する
- モデリングパレットのアイコンを使用して図に要素を追加する
- クラス要素に属性と操作を追加して定義する
- 図と図の要素に関するコメントを入力する
- クラス要素間でリンクと関連を描画する
- 依存図を作成する
- 図に対応する Java ソースコードを生成する
- 図を保存する
ページの先頭へ
次の手順
ページの先頭へ
>> その他の UML モデリングドキュメント