UML モデリング: アプリケーションの開発
最終更新日: 2007 年 4 月 3 日
このチュートリアルは、NetBeans[tm] 5.5 統合開発環境 (IDE) および NetBeans 5.5, UML モデリングモジュール用です。
このチュートリアルでは、IDE の UML モデリング機能を使用して、簡単な UML クラス図を作成する方法を学びます。そのあとで、コード生成機能とリバースエンジニアリング機能を使用して、簡単な銀行業務アプリケーションを開発します。このアプリケーションは、テストクラスを実行することでテストできます。この銀行業務アプリケーションはかなり単純化されています。現実には、この種のアプリケーションでは、さらに複雑なモデリングが必要になります。このチュートリアルの目的は、UML の概念や Java プログラミング言語について説明することではなく、IDE の UML モデリング機能をいくつか紹介することです。
NetBeans IDE の使用方法の詳細については、NetBeans の Web サイトのドキュメントページを参照してください。
注:
アイコンが表示されているところでは、それをクリックすると、チュートリアル内で説明している手順について、対話形式の詳細なデモを参照できます。
前提条件
このチュートリアルを使用するには、IDE がシステムにインストールされている必要があります。また、IDE の基本要素に関する知識が必要です。Java プログラミング言語および UML モデリングの基礎知識も必要です。IDE の基礎については、オンラインヘルプで IDE の基礎に関する項目を参照してください。公式の UML リソースページ (http://www.uml.org/) で、UML モデリング手法と理論に関する優れたリソースを得ることができます。
システム要件
このチュートリアルは、ご使用のシステムが NetBeans IDE 5.5, UML モデリングモジュール リリースノートに明記されている要件を満たしていることを前提としています。
チュートリアルに必要なソフトウェア
開始する前に、ご使用のコンピュータに次のソフトウェアをインストールしてください。
目次
ページの先頭へ
アプリケーション用の Java プロジェクトの作成
この節では、このチュートリアルで開発する Java アプリケーション用に新しい Java プロジェクトを作成します。
- メインメニューから「ファイル」>「新規プロジェクト」を選択し、「新規プロジェクト」ウィザードで次の操作を行います。
- 「カテゴリ」で「一般」を選択します。
- 「プロジェクト」で「Java アプリケーション」を選択します。
- 「次へ」をクリックします。
- 「プロジェクト名」フィールドに「JavaPrj」と入力します。
- 「プロジェクトの場所」フィールドで、「ブラウズ」をクリックし、コンピュータ上の任意のディレクトリに移動して、「MyPrj」という新規フォルダを作成します。
- 「主プロジェクトとして設定」チェックボックスと「主クラスを作成」チェックボックスの選択を解除します。
- 「完了」をクリックします。
進行状況を示すダイアログが表示されます。
新しい JavaPrj プロジェクトが作成されると、「プロジェクト」ウィンドウに表示されます。
デモを表示
ページの先頭へ
UML プロジェクトとクラス図の作成
この節では、アプリケーションの UML モデリングプロジェクト (UML プロジェクト) とクラス図を作成します。UML プロジェクトは、UML モデルのファイルを保存および管理するためのメカニズムです。UML モデルには、モデルの図、図に関連付けられている要素、および UML モデルに関連するメタデータがすべて含まれます。
- UML プロジェクトを作成するには、「ファイル」>「新規プロジェクト」を選択し、次の操作を行います。
- 「カテゴリ」で「UML」を選択します。
- 「プロジェクト」で「Java プラットフォームモデル」を選択します。
- 「次へ」をクリックします。
「新規 Java プラットフォームモデル」ページが表示されます。
- 「プロジェクト名」フィールドに「UMLPrj」と入力します。
プロジェクト名を入力すると、プロジェクトフォルダ名も自動的にこの名前になります。
- プロジェクトの場所が MyPrj であることを確認します。
- 「完了」をクリックします。
IDE によって UML プロジェクトが作成され、「図を新規作成」ダイアログが表示されます。
- 「図の種類」リストから「クラス図」を選択します。
- 「図名」フィールドに「BankClassDiagram」と入力します。
- 「名前空間」フィールドの「UMLPrj」は変更しないで、「完了」をクリックします。
IDE では次のことが行われます。
- 「プロジェクト」ウィンドウに、UMLPrj ノードが追加されます。
- 「モデル」ノードの下に「BankClassDiagram」ノードが作成されます。
- 図エディタに新しい図が表示されます (この時点で図は空です)。
- モデリングパレットが開きます。
デモを表示
ページの先頭へ
クラス要素の追加と定義
ここで、Java アプリケーションを形成するクラス要素を追加して定義します。クラス要素を作成するには、モデリングパレットから「クラス (Class)」アイコンを使用します。
- モデリングパレットの基本区画で、「クラス (Class)」アイコン
を選択し、図エディタ内をクリックします。
この操作によって、クラス要素が図エディタに配置されます。
- 図エディタ内の任意の場所を右クリックして「クラス (Class)」アイコンを選択解除します。
- 新しく追加したクラス要素を選択し、「BankAccount」と入力して Enter キーを押します。
IDE によって次のことが行われます。
- BankAccount 要素にラベルが付けられます。
- BankAccount() という public 操作が作成されます。
- 「プロパティ」ウィンドウに BankAccount クラスのプロパティが表示されます。
- 図エディタで BankAccount クラスが選択されている状態で、「属性」を右クリックし、ポップアップメニューから「属性を挿入」を選択します。
次の情報を含む 1 行エディタが開きます。
可視性 型 名前[範囲]=初期値{名前=値}
- 「balance」と入力し、Enter キーを押します。
BankAccount クラスに int 型の balance という private 属性が現れます。クラスに、次の操作が作成されます。
- public int getBalance()
- public void setBalance(int val)
- 図エディタで BankAccount クラスが選択されている状態で、「操作」を右クリックし、ポップアップメニューから「操作を挿入」を選択します。
次の情報を含む 1 行エディタが開きます。
可視性 戻り値の型 名前(パラメータ) {プロパティ...}
- 「withdraw」と入力し、キーボードの右矢印キーを使用してカーソルを括弧内に移動します。次に、「int amount」と入力し、Enter キーを押します。
IDE によって、次のように新しい操作がクラス要素に追加されます。
public void withdraw(int amount)
デモを表示
ページの先頭へ
図への要素の追加
この節では、モデリングパレットのほかの UML アイコンを使用してインタフェース、パッケージ、属性、および操作をアプリケーションに追加します。
- モデリングパレットの基本区画で、「パッケージ (Package)」アイコン
を選択します。
注: 必要なモデリングアイコンが表示されていない場合は、下にスクロールします。「ドキュメント」ウィンドウを閉じて、モデリングパレットの表示領域を広げることもできます。そうすることによって、より多くのクラス要素アイコンを表示できます。
- 図エディタ内をクリックして、パッケージ要素をクラス図に追加します。
- 図エディタ内の任意の場所を右クリックして「パッケージ (Package)」アイコンを選択解除します。
注: モデリング要素を図に追加するときは、図エディタ内で各要素を選択して移動することで、図を見やすくすることができます。右クリックするときは注意が必要です。右クリックする場所によっては、図エディタのポップアップメニューが表示されます。図エディタのコンテキストメニューが表示された場合は、図エディタ内の白い領域をクリックしてください。
- パッケージ要素が選択されている状態で、「bankpack」と入力し、Enter キーを押します。
- モデリングパレットの基本区画で、「インタフェース (Interface)」アイコン
を選択し、図エディタ内をクリックします。
- 図エディタ内の任意の場所を右クリックして「インタフェース (Interface)」アイコンを選択解除します。
- インタフェース要素が選択されている状態で、「Bank」と入力し、Enter キーを押します。
- Bank インタフェースに deposit 操作を追加します。
インタフェースに操作を追加する方法は、クラスに操作を追加する方法と同じです (前の節の手順 6 を参照)。この操作は、次のように定義します。
public void deposit(int amount)
- モデリングパレットから、「クラス (Class)」アイコン
を選択し、図エディタ内を 2 回クリックします。
- 図エディタ内の任意の場所を右クリックして「クラス (Class)」アイコンを選択解除します。
注: 必要数を超えるクラス要素を描画した場合は、「クラス (Class)」アイコンを選択解除し、削除するクラス要素を右クリックして、「編集」>「削除」を選択します。
- クラス要素にそれぞれ「Checking」、「AccountTest」という名前を付け、必要に応じてサイズを変更します。
デモを表示
ページの先頭へ
要素間の関連の指定
ここでは、モデリングパレットの UML アイコンを使用して、クラス要素間の関係を指定します。
- モデリングパレットの基本区画で、「実装 (Implementation)」アイコン
を選択し、BankAccount クラス要素内をクリックします。
- Bank インタフェース要素内をクリックし、図エディタ内の任意の場所を右クリックして「実装 (Implementation)」アイコンを選択解除します。
クラスとインタフェース要素の間に実装リンクが表示されます。実装リンクは、クラスとインタフェース間の関係を表します。
- モデリングパレットの基本区画で、「汎化 (Generalization)」アイコン
を選択します。
- Checking クラス要素 (サブクラス) 内をクリックし、BankAccount クラス要素 (スーパークラス) 内をクリックします。
「再定義するメソッドを選択」ダイアログが表示されます。
- withdraw メソッドを選択し、「了解」をクリックします。
IDE によって次のことが行われます。
- ダイアログが閉じます。
- Checking クラスに、withdraw メソッドが追加されます。
- 2 つの関連するクラス要素の間に汎化リンクが追加されます。
汎化リンクは、サブクラスとそのスーパークラスの関係を表します。サブクラスは、スーパークラスからの派生版であり、このことはスーパークラスから機能 (属性および操作) を継承できることを意味します。
- 図エディタの任意の空白の領域を右クリックして「汎化 (Generalization)」アイコンを選択解除します。
- モデリングパレットの基本区画で、「入れ子リンク (Nested Link)」アイコン
を選択し、BankAccount 要素内をクリックして、bankpack パッケージ要素内をクリックします。
- 前の手順で説明した「入れ子リンク (Nested Link)」を使用して、Checking、AccountTest、および Bank の各要素を bankpack パッケージに接続します。
- 「入れ子リンク (Nested Link)」を選択解除します。
入れ子リンクは、要素のグループ分けを表します。この場合は、すべてのクラス要素を bankpack パッケージ内の 1 つのグループにまとめました。
- 図エディタ内の任意の場所で Ctrl-S キーを押し、モデルへの変更内容を保存します。
デモを表示
ページの先頭へ
Java ソースコードの生成
この節では、UML モデリングのコード生成機能を使用して、前の節で作成した UML モデルに対応する Java ソースコードを生成します。
- 「プロジェクト」ウィンドウで、「UMLPrj」ノードを右クリックし、ポップアップメニューから「コードを生成」を選択します。
「コードを生成」ダイアログが表示されます。
- 「コードを生成」ダイアログで、「ブラウズ」をクリックします。
- 「ターゲットソースフォルダを選択」ダイアログで、このチュートリアルで作成した JavaPrj プロジェクトのソースフォルダを指定します。
例: C:\Temp\MyPrj\JavPrj\src
- 「選択」をクリックします。
- 「コードを生成」ダイアログに戻り、「既存のソースファイルをバックアップ」チェックボックスの選択を解除します。
- 「了解」をクリックします。
「UML プロジェクトの保存の許可」ダイアログが表示されます。
- 「了解」をクリックします。
IDE によってコードが生成され、「出力」ウィンドウにコード生成処理の進行状況が表示されます。
デモを表示
ページの先頭へ
リバースエンジニアリングを使用して開発を継続
この節では、生成されたソースコードをソースエディタで変更し、リバースエンジニアリング機能を使用してアプリケーションの UML モデルを更新して、アプリケーションの開発を続けます。
- 「プロジェクト」ウィンドウで、「UMLPrj」>「モデル」>「bankpack」ノードを展開します。
- 「BankAccount」ノードを右クリックし、ポップアップメニューから「ソースにナビゲート」を選択します。
- ソースエディタで deposit メソッドに次のコードを追加します。
setBalance(getBalance() + amount);
- 「プロジェクト」ウィンドウの「UMLPrj」>「モデル」>「bankpack」ノードの下で、「AccountTest」ノードを右クリックして、ポップアップメニューから「ソースにナビゲート」を選択します。
- ソースエディタで次のコードを入力 (またはコピー & ペースト) します。
public static void main(String[] args) {
Checking myChecking = new Checking();
myChecking.deposit(100);
System.out.println("Checking Balance is: " +
myChecking.getBalance() );
}
このコードは、新しい Checking オブジェクトを作成し、100 ドルの預金を指示して、その結果を出力します。
- ソースエディタ内を右クリックし、「コードを再フォーマット」を選択します。
- ソースエディタ内の任意の場所で Ctrl-S キーを押し、AccountTest.java のソースファイルへの変更内容を保存します。
- ソースエディタ内をもう一度右クリックし、ポップアップメニューから「リバースエンジニア」を選択します。
「リバースエンジニアリング」ダイアログが表示されます。
- 「リバースエンジニアリング」ダイアログで「既存の UML プロジェクトを使用」を選択し、ターゲットプロジェクトとして「UMLPrj」を選択します。
- 「了解」をクリックしてリバースエンジニアリングの処理を開始します。
- 「モデル要素の上書きの許可」ダイアログで「はい」をクリックして AccountTest クラスの既存のモデルを上書きします。
- 「BankClassDiagram」タブをクリックします。
新しく入力した main メソッドが、クラス図の AccountTest クラス要素内に表示されます。
リバースエンジニアリング機能を使用することで、Java ソースプロジェクトの変更内容を、対応する UML モデルプロジェクトに反映できます。
デモを表示
ページの先頭へ
作成したアプリケーションのテスト
ここでは、プロジェクトを構築して実行します。
- 「プロジェクト」ウィンドウで、「JavaPrj」ノードを右クリックし、ポップアップメニューから「プロジェクトを構築」を選択します。
- 「プロジェクト」ウィンドウで、「JavaPrj」ノードを右クリックし、ポップアップメニューから「プロジェクトを実行」を選択します。
「プロジェクトの実行」ダイアログが表示されます。
- 「プロジェクトの実行」ダイアログで、「了解」をクリックし、主クラスとして
bankpack.AccountTest を選択します。
アプリケーションが実行され、「出力」ウィンドウに次の出力が表示されます。
Checking Balance is: 100
デモを表示
これで、アプリケーションが完成しました。
ページの先頭へ
まとめ
このチュートリアルでは、簡単な銀行業務アプリケーションのクラス図を設計しました。具体的には、次の作業を実行する方法を学びました。
- UML プロジェクトを作成する
- モデリングパレットの UML アイコンを使用して、クラス、インタフェース、パッケージ、属性、および操作を作成する
- UML の関連を使用してクラス同士をリンクする
- 図エディタで UML プロジェクトに作成した要素を「プロジェクト」ウィンドウで確認する
- 図エディタで UML プロジェクトに作成した要素のソースコードを生成し、生成されたソースをソースエディタで表示する
- コード生成機能とリバースエンジニアリング機能を使用してモデリングと、ソースエディタでのコードの開発を切り替える
- ソースエディタからクラスをコンパイルおよび実行する
ページの先頭へ