UML: アプリケーションの開発
執筆:
、管理:
、
2007 年 11 月 [リビジョン番号: V1-4]
このページは、NetBeans IDE 6.0 および 6.1 リリースに適用されます。
このチュートリアルでは、IDE の UML 機能を使用して、簡単な UML クラス図を作成する方法を学びます。そのあとで、コード生成機能とリバースエンジニアリング機能を使用して、簡単な銀行業務アプリケーションを開発します。このアプリケーションは、テストクラスを実行することでテストできます。この銀行業務アプリケーションはかなり単純化されています。現実には、この種のアプリケーションでは、さらに複雑なモデリングが必要になります。このチュートリアルの目的は、UML の概念や Java プログラミング言語について説明することではなく、IDE の UML 機能をいくつか紹介することです。
予想される所要時間: 25 分
目次
チュートリアルの要件
次に進む前に、この節の要件を確認してください。
前提条件
このチュートリアルを使用するには、IDE がシステムにインストールされている必要があります。また、IDE の基本要素に関する知識が必要です。Java プログラミング言語および UML の基本的なところも知っていた方がいいでしょう。IDE の基礎については、オンラインヘルプで IDE の基礎に関する項目を参照してください。公式の UML リソースページ (http://www.uml.org/) で、UML 手法と理論に関する優れたリソースを得ることができます。
システム要件
このチュートリアルでは、ユーザーのシステムが、『NetBeans 6.1 リリースノート』の「システム要件」の節で指定された要件を満たしていることを想定しています。
このチュートリアルに必要なソフトウェア
このチュートリアルを行うには、次の表に示すソフトウェアおよびリソースが必要です。
ページの先頭へ
アプリケーション用の Java プロジェクトの作成
この節では、このチュートリアルで開発する Java アプリケーション用に新しい Java プロジェクトを作成します。
- メインメニューから「ファイル」>「新規プロジェクト」を選択し、「新規プロジェクト」ウィザードで次の操作を行います。
- 「カテゴリ」から「Java」を選択します。
- 「プロジェクト」で「Java アプリケーション」を選択します。
- 「次へ」をクリックします。
- 「プロジェクト名」フィールドに「 JavaPrj 」と入力します。
- 「プロジェクトの場所」フィールドで、「参照」をクリックし、コンピュータ上の任意のディレクトリに移動します。「開く」をクリックし、「MyPrj」と入力します。
- 「主プロジェクトとして設定」チェックボックスと「主クラスを作成」チェックボックスの選択を解除します。
- 「完了」をクリックします。
進行状況を示すダイアログが表示されます。
新しい JavaPrj プロジェクトが作成されると、「プロジェクト」ウィンドウに表示されます。
デモを表示
ページの先頭へ
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」ノードを右クリックし、ポップアップメニューから「コードを生成」を選択します。
「コードを生成」ダイアログが表示されます。次に、ターゲットプロジェクトを指定します。
- 「コードを生成」ダイアログで、デフォルトのチェックボックスの設定をそのまま使用します。
- 「閉じる」をクリックします。
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 プロジェクトに作成した要素のソースコードを生成し、生成されたソースをソースエディタで表示する
- コード生成機能とリバースエンジニアリング機能を使用してモデリングと、ソースエディタでのコードの開発を切り替える
- ソースエディタからクラスをコンパイルおよび実行する
ページの先頭へ
次の手順
ページの先頭へ