Javaクラスのモデリング

このOBEチュートリアルでは、JDeveloperを使用してシステム の不可欠な情報要件を捉えるためのダイアグラム作成方法を説明します。

トピック

このチュートリアルの内容は次のとおりです。


45分

このアイコンの上にカーソル を置くと、すべてのスクリーンショットが表示されます。 各手順に関連するスクリーンショットのみを表示する場合は、それぞれの手順のアイコンの上にカーソルを置いてください。

概要

モデリングにより、システムの構造、プロパティおよび動作に関する情報を 捉えることができます。 クラス図は、システムを構成するインタフェースとクラス、およびインタフェースとクラス間の対応付け、実装および一般化を視覚化します。 ダイアグラムの要素は、UML表記法を使用して表現します。

このチュートリアルでは、システムの基本データ要件をモデリングした Javaクラスの形式で捉えるためのダイアグラム作成方法を学びます。 また、既存のクラスを追加してダイアグラムを拡張する方法も学びます。 JDeveloperはダイアグラムの各要素を基盤となるJavaコードと自動的に同期化するため、モデリングを使用して視覚的にシステムを設計できま す。

作成するダイアグラムは、次のようになります。

Move your mouse over this icon to see the image

トピック・リス トに戻る

注文入力システムの一部を管理するJavaアプリケーションを設計し、そ の設計を必要なJavaクラスのクラス図として提示することが求められました。 既存のJavaクラスを設計に組み込む必要もあります。

前提条件

トピック・リス トに戻る

このレッスンを始める前に、次のことを実行しておく必要があります。

Oracle JDeveloper 10gのインス トール

クラス図の 作成

トピック・リス トに戻る

このトピックでは、JDeveloperからJavaダイアグラムを作成 する手順を説明します。 まずワークスペースと作業のプロジェクトを作成し、次に、Javaダイアグラムとダイアグラム要素を作成します。

1.

新しいワークスペースに、新しい空のプロジェク トを作成します。

アプリケーション・ナビゲータで、「アプ リケーション」を右クリックし、コンテキスト・メニューから「新規」を選択します。

カテゴリ」リストから「General」 を、「項目」リストから「ワークスペース」を選択して、「OK」をクリックします。


「ワークスペース作成」ダイアログ・ボックスで、ワークスペースにClassModelingと名前を付けます。 「新規の空プロ ジェクトを追加」がチェックされていることを確認し、「OK」をクリックします。

Move your mouse over this icon to see the image

「プロジェクトの作成」ダイアログ・ボックスで、プロジェクトにOrderEntryと 名前を付け、「OK」をクリックします。

Move your mouse over this icon to see the image

 

2.

ダイアグラムの色とフォントをオプションで選択できます。 メイン・メニューで「ツール」 →「設定」を選択して「設定」ダイアログ・ボックスを開き、次に「ダイアグラム」→「ダイアグラム」→「Java クラス」→「Java Class」ツリー構造を開きます。 ここでダイアグラム要素のデフォルトのフォントと色の設定を選択できます。 終了後、「OK」をクリックします。

Move your mouse over this icon to see the image

この例では、Javaクラスの表示を薄紫色に変更します。

 

3.

ナビゲータで「OrderEntry」を選択し、メニューから「ファイル」 →「新規」を選択してクラス図を作成します。

「新規ギャラリ」ページの「カテゴリ」ペインで「General」 →「Diagrams」を、「項目」ペインで「Java Class Diagram」を選択します。 「OK」 をクリックします。

Move your mouse over this icon to see the image

 

4.

「Java Class Diagramの作成」ダイアログ・ボックスで、「名前」をOEClassDiagramに、 パッケージ名をorderEntryに変更します。

Move your mouse over this icon to see the image

 

5.

コンポーネント・パレットはアイコンのみ表示するか、アイコンと記述を表示するかを選択できま す。 コンポーネント・パレットのコンテキスト・メニューから「アイコンで表示」か「一覧で表示」を選択すると切り替えられ ます。

Move your mouse over this icon to see the image

 

6.

「構造」ペインに、クラス図のコンテンツに関する情報が表示されます。 ダイアグラムにあるクラスの数や名前を素速く確認したい場合などに便利です。

「構造」ペインを使用すると、ダイアグラムへの要素の作成後に、特定の要素を中心にしたダイアグ ラム表示することもできます。 ダイアグラムの「構造」ペインにある要素を右クリックして、コンテキスト・メニューから「ダイアグラムでこの要素を 検索」を選択します。

Move your mouse over this icon to see the image

 

インタフェー スおよびクラスのモデリング

トピック・リス トに戻る

このセクションでは、コンポーネント・パレットを使用してダ イアグラムを構築し、新しいJavaインタフェースとクラスをダイアグラムに作成します。 これらの要素をモデリングするために、次の手順を実行します。

1.

コンポーネント・パレットのドロップダウン・リストから「Java」を選択します。

Move your mouse over this icon to see the image

 

2.

次に、クラス図にインタフェースをモデリングします。 コンポーネント・パレットの「Java Interface」アイコンをクリックして選択し、クラス図の左上をクリックします。

Move your mouse over this icon to see the image

ダイアグラム要素は、作成するとデフォルト・サイズで表示されます。 サイズを変更するには、オブジェクトをクリックしてハンドルの1つをドラッグします。 位置を移動するには、選択した要素をクリックし新しい位置にドラッグします。

 

3.

インタフェース名としてOrderObservableと入力し、[Enter] を押します。

Move your mouse over this icon to see the image

ダイアグラムにインタフェースを作成すると、.javaファイルが自動的に作成されます。 ダイアグラム要素と.javaファイルは異なる表示形 式の同一のオブジェクトであるため、作業は同期します。

Move your mouse over this icon to see the image

クラス図で作業する場合は、クラスなどのダイアグラム要素に省略記号(...)が表示される場合 があります。 これは、要素サイズが小さすぎることにより表示されていない情報があることを意味します。 この情報を表示するには、要素をサイズ変更します。

 

4.

次に、このインタフェースの操作を作成します。 カーソルをインタフェースの操作コンパートメント(2番目の横線の下)に移動しクリックします。 選択された領域で、observeOrderと 入力し、[Enter]を押します。

Move your mouse over this icon to see the image

 

5.

「Java Class」アイコン、クラス図の OrderObservableインタフェースの下を順にクリックし、ダイアグラムにクラスをモデリングします。

クラス名としてOrderと入力します。 属性orderRefcustomerContactを 属性コンパートメント(1番目の線の下)に、操作doInvoicedoShipを操作コンパートメント(2番目の線の 下)に追加します。

Move your mouse over this icon to see the image

 

6.

JavaクラスMyOrderを、前のクラスと同じ方法でモデリングします。 MyOrderクラスをOrderクラスの右に少しだけ間隔をあけて配置します。

Move your mouse over this icon to see the image

モデリングされたJavaクラスに属性や操作を追加する方法として、クラスをダブルクリックして 属性をコード・エディタに入力することもできます。

クラス図でMyOrderクラスをダブルクリックします。 コード・エディタの最下部にある「ク ラス」タブをクリックしてから、最上部の「メソッド」タブを選択します。

Move your mouse over this icon to see the image

「追加」ボタンをクリックし、「メソッド設定」ダイ アログ・ボックスにメソッドoverrideMethodを入力します。 「スコープ」のドロップダウン・リストから「public」 を選択し「OK」をクリックします。

Move your mouse over this icon to see the image

クリックしてクラス図に戻ると、ダイアグラムのMyOrderクラスがコード・エディタで行った 変更と同期していることを確認できます。 MyOrderクラスは、overrideMethod操作を示しています。

 

7.

同様に、次のインタフェースとクラスをorderEntryパッケージとしてダイアグラムに追加 し、下図のとおりに配置します(表示されている属性や操作をオプションで追加することもできます)。

名前 属性 操作
インタフェース OrderListener   + orderChanged(): int
クラス OrderEntrySystem

 

 
クラス OrderState   + getNextState(): OrderState
getStateLocalizedName(Locale local)
- fetchInternalStateDetails(): Object
インタフェース OrderFactory   + OrderEntry(int type): Order
クラス BusinessOrderFactory    
クラス HomeOrderFactory    

Move your mouse over this icon to see the image

 

8.

OrderState」クラスをダブルクリックしてエディタで開きます。 「ソー ス」タブをクリックします。 1行目のすぐ後に次のコードがない場合、これを追加します。

import java.util.Locale;

Move your mouse over this icon to see the image

 

9 .

アプリケーション・ナビゲータで「OrderEntry」プロジェクトを右クリッ クし、コンテキスト・メニューから「メイク」を選択します。 プロジェクトがコンパイルされます。

Move your mouse over this icon to see the image

 

リレーショ ンシップと対応付けのモデリング

トピック・リス トに戻る

注文入力システムを構成するインタフェースとクラスを表示す る基本モデルが作成されました。次に、インタフェースとクラスの相互関連付けを定義する要素を追加します。 リレーションシップと対応付けをモデリングするには、次の手順を実行します。

1.

OrderとOrderObservableとの間に実装の関係をモデリングします。 「コンポーネント・パレット」で、「Implements」アイコン をクリックします。次に、ダイアグラムで「Order」 クラス、「OrderObservable」インタフェースを順にクリックします。

Move your mouse over this icon to see the image

このインタフェースを追加した後に、Order.javaファ イルを確認すると、コードが変更されて いることが分かります。 アプリケーション・ナビゲータで「Order.java」 をダブルクリックして、コード・エディタを開き変更を確認します。

Move your mouse over this icon to see the image

 

2.

OrderとMyOrderとの間に拡張の関係をモデリングします。 「Extends」 アイコンを クリックします。次に、「MyOrder」、「Order」と順にクリックします。 2つのクラス間に線を描く際に、曲げたい位置でクリックすると線を曲げて描くことができます。

Move your mouse over this icon to see the image

 

3.

OrderEntrySystemをOrderに関連付けます。 「Directed 1 to 1 Association」アイコンをクリックします。次に「OrderEntrySystem」、「Order」と順にクリックしま す。

Move your mouse over this icon to see the image

 

4.

OrderとOrderListenerの間の弱い集約の関連をモデリングします。 弱い集約の関連のアイコンはありませんが、JDeveloperでは事前定義された関連を使用して関連プロパティを変更することができるため、必要に応じ て集約単位または多重度を変更できます。

Directed 1 to 1 Association」アイコンをクリックしま す。次に、「Order」、「OrderListener」と順にクリックします。

Move your mouse over this icon to see the image

ダイアグラムで関連をダブルクリックし、「アソシエーション・プロパティ」ダイアログ・ボックス を表示します。 「集約」ドロップダウン・リストから「集約(弱い)」を選択し、「OK」をクリックします。 これで関連の始点が弱い集約として定義されます。

Move your mouse over this icon to see the image

注意: ダイアグラム要素の「アソシエーション・プロパティ」ダイアログ・ボックスは、ダイアグラムで対応付けを右クリックし、コンテキスト・メニューから「プ ロパティ」を選択して表示することもできます。

 

5.

HomeOrderFactoryOrderFactory、お よびBusinessOrderFactoryOrderFactoryの間に実装の関係をモデリングしま す。

Move your mouse over this icon to see the image

 

6.

OrderEntrySystemOrderFactoryとの 間にDirected 1 to * Associationをモデリングします。 図のように線を曲げるには、最初に「OrderEntrySystem」をクリックし、次に曲げる位置、 「OrderFactory」の順にクリックします。

Move your mouse over this icon to see the image

 

7.

Dependency」アイコンを使用し、OrderFactoryMyOrder間 の依存関係をモデリングします。 任意で依存関係のデフォルト・ラベルに別の値を上書きすると、より分かりやすい名前に変更できます。

Move your mouse over this icon to see the image

8.

ダイアグラムや任意の要素には、注を付けることができます。 「Note」アイコ ンをクリック し、ダイアグラムをクリックして注を作成します。この注に、OrderFactoryがMyOrderを作成することを記述します。 「Attach」 アイコンを クリックして依存関係に注を付けます。まず注をクリックし、次に依存関係をクリックします。

Move your mouse over this icon to see the image

 

9.

アプリケーション・ナビゲータで「OrderEntry」プロジェクトを右クリッ クし、コンテキスト・メニューから「メイク」を選択して、プロジェクトのコンパイルを試行します。

Move your mouse over this icon to see the image

ログ・ウィンドウには次のコンパイル・エラーが表示されます。

Error(3,8): class orderEntry.BusinessOrderFactory should be declared abstract; it does not define method OrderEntry(int) in interface orderEntry.OrderFactory

実装するインタフェースのメソッドでクラスに定義されていないものがあるため、これらのエラーが 生じます。

 

10.

エラーを修正するには、OrderFactoryインタフェースのOrderEntryメ ソッド・ラインをクリックします。再度クリックしてメソッドを選択します。 [Ctrl-C]を押してメソッドをクリップボードにコピー します。 HomeOrderFactoryクラスのメソッド・ラインをクリックします。再度クリックしてデフォルトのメソッドを追加し ます。 [Ctrl-V]を押してOrderEntryメソッドを貼り付け、デフォルトのメソッドを上書きし、[Enter] を押します。

同様に、OrderEntryメソッドをBusinessOrderFactoryク ラスに貼り付けます。

Move your mouse over this icon to see the image

 

11 .

OrderクラスにOrderObservableインタフェースのメソッドが定義されていない という問題は、メソッドをコピーして貼り付ける以外の方法でも解決できます。

クラス図で「Order」クラスを選択し、メニューから「ツール」 →「インタフェースの実装」を選択します。

Move your mouse over this icon to see the image

「インタフェースの実装」ダイアログ・ボックスの「使用可能なインタフェース」領 域で、「orderEntry」パッケージを開いて「OrderObservable」を選択します。 「OK」 をクリックします。 OrderクラスにobserveOrderメソッドが追加されます。

Move your mouse over this icon to see the image

 

12. 前述の手順9を終えたら、再度プロジェクト のコンパイルを試行します。 ここではプロジェクトが適切にコンパイルされます。

インナー・ クラスのモデリング

トピック・リス トに戻る

JDeveloperのクラス図では、インナー・クラスをモ デリングすることもできます。 インナー・クラスをモデリングするには、次の手順を実行します。

1.

OrderState」を右クリックして「表示モード」→「拡 張済」を選択します。

Move your mouse over this icon to see the image

 

2.

拡張されたOrderStateクラス内に、JavaクラスClearedPackedShippedお よびInvoicedをモデリングします。 これらのクラスは、OrderStateのインナー・クラスとして作成します。 (これはインナー・クラスの一般的使用法ではありませんが、インナー・クラスをクラス図に作成する方法として示します。)

Move your mouse over this icon to see the image

 

3.

アプリケーション・ナビゲータでファイル名をダブルクリックして、OrderState.javaをコード・エディタで開 きます。 4つのインナー・クラスのコードが自動的に追加されたことが確認できます。

Move your mouse over this icon to see the image

 

4.

Directed Strong Aggregation 」アイコ ンをクリックします。次に「Order」、「OrderState」と順にクリックして強い集約の関連をモデリングします。

Move your mouse over this icon to see the image

5.

関連をダブルクリックします。 「アソシエーション・プロパティ」ダイアログ・ボックスの「多 重度」ドロップダウン・リストから「1」を選択します。 「OK」をクリックします。

Move your mouse over this icon to see the image

 

既存のクラ スとパッケージの追加

トピック・リス トに戻る

このタスクでは既存のクラスとパッケージをプロジェクトに追 加し、次にこれらをダイアグラムに追加してダイアグラムを拡張する方法を学びます。 既存のクラスをモデリングする機能により、既存のシステムのダイアグラムを作成したり、既存のクラスを新しいシステム設計にマージすることができます。

クラス・モデルを拡張するには、次の手順を実行します。

1.

「ナビゲータ」ペインでプロジェクト・ノードを右クリックし「新規」を選択し、次 に「新規ギャラリ」の「General」カテゴリから「Javaクラス」を選択します。 「OK」をクリック します。

Move your mouse over this icon to see the image

 

2.

クラスの「名前」にOrderItemと入力します。 「パッ ケージ」にorderEntryと入力します。

デフォルトのコンストラクタを生成」チェック・ボックスのチェックを外します。 「OK」をクリックします。

コード・エディタに新しいOrderItemクラスが開きます。

Move your mouse over this icon to see the image

 

3.

ツールバーの「保存」アイコンをクリックするか、「ファイル」→ 「保存」を選択してOrderItem.javaへ の変更を保存します。

Move your mouse over this icon to see the image

4.

エディタ・ウィンドウ最上部のタブにあるダイアグラム名をクリックします。 アプリケーション・ナビゲータからOrderItemクラスをドラッグし、ダイアグラムにドロップします。

Move your mouse over this icon to see the image

 

5.

OrderOrderItemの間の強い集約の関連をモデリング します。

Move your mouse over this icon to see the image

 

6.

Order.javaの Javaソース・コードで表示される変更を確認します。

Move your mouse over this icon to see the image

 

7.

「ナビゲータ」ペインでプロジェクト・ノードを右クリックして「新規」を選択し、 次に「新規ギャラリ」の「General」カテゴリから「Javaクラス」を選択します。 「OK」をクリッ クします。

Move your mouse over this icon to see the image

 

8.

クラスの「名前」をReport1と入力します。 「パッ ケージ」をmonthEndと入力します。

デフォルトのコンストラクタを生成」チェック・ボックスのチェックを外します。 「OK」をクリックします。

Move your mouse over this icon to see the image

コード・エディタに新しいReport1クラスが開きます。

 

9.

同様に、Report2クラスをmonthEndパッケージに作成 します。

Move your mouse over this icon to see the image

 

10.

ダイアグラマの「OEClassDiagram」タブをクリックします。 アプリケーション・ナビゲータから、monthEndパッケージをクラス図にドラッグします。

Move your mouse over this icon to see the image

 

11.

ダイアグラム内のmonthEndパッケージを右クリックし、コンテキスト・メ ニューから「ドリルダウン」選択して、パッケージの内容を表示します。

Move your mouse over this icon to see the image

monthEndパッケージのクラス図が開きます。

Move your mouse over this icon to see the image

 

12.

すでにダイアグラム上にあるクラスに関連する既存のクラスを追加できます。 これを図に示すため、ダイアグラムの「OEClassDiagram」をクリックします。 ダイアグラムで「MyOrder」 クラスを選択し、[Delete]を押します。

Move your mouse over this icon to see the image

MyOrderクラスはダイアグラムから削除されますが、MyOrder.javaファイルはアプリケーション・ナビゲー タに残ります。

 

13.

Orderクラスは、継承によってMyOrderクラスに関連付けられます。 ダイアグラムで「Order」 クラスを右クリックし、コンテキスト・メニューから「表示w」→「関連する要素」を選択します。

Move your mouse over this icon to see the image

MyOrderクラスがダイアグラムに追加され、ダイアグラム上にあるOrderに関連するすべ ての要素が強調表示されます。 MyOrder要素をダイアグラム上の前の位置に移動できます。

注意: クラスがプロジェクトのソース・パスからダイアグラムに追加されると、それらのクラスがすでに現在のプロジェクトに組み込まれていない場合、自動的に追加 されます。

ダイアグラ ムのレイアウト変更

トピック・リス トに戻る

クラス図のサイズが増し、複雑化すると、読取りや管理が難し くなる場合があります。 この最後のタスクでは、クラス図のレイアウトを変更する方法を示します。

ダイアグラムのレイアウトを変更するには、次の手順を実行し ます。

1.

OEClassDiagramで空白の部分を右クリックし、コンテキスト・メニューから「図 形をレイアウト」→「階層(上から下)」を選択します。

Move your mouse over this icon to see the image

ダイアグラム要素は継承構造に基づいたトップダウン階層でレイアウトされ、他のコネクタは定義さ れた方向でレイアウトされます。 ノード間のコネクタは、最も直接的なルートでレイアウトされます。 この例で示すmonthEndパッケージなど他のノードに接続されていないダイアグラム上のノードは、グリッド・レイアウトで表示されます。

 

2.

エディタの右下隅の「ズーム・アウト」ツールZoom Out toolをクリックして、スクロールせずにダイアグラムのより広い部分を表示します。

Move your mouse over this icon to see the image

 

「図形をレイアウト」の他の型を試す場合、前述のようにダイアグラム全体 に適用したり、選択した要素のみに適用することもできます。

トピック・リス トに戻る

このレッスンでは、新しいJavaクラス図を作成し、Javaクラスとイ ンタフェース、およびその関連をモデリングする方法を学びました。 次のタスクを行いました。

Java クラス図の作成

コンポーネント・パレットを使用した新しいJavaインタフェースとクラスのクラス図への作成

属性と操作のクラス図への直接追加
ダイアグラムでの変更とJavaコードの自動的な同期の確認

コンポーネント・パレットを使用したインタフェースとクラスのリレーションシップと対応付けのク ラス図への作成

対応付けのプロパティの変更による集約度と多重性の変更

注の追加と依存関係への貼り付け

クラスのビューの拡張およびコンポーネント・パレットを使用したクラス内へのJavaクラス作成 によるインナー・クラスの作成

既存のクラスとパッケージのダイアグラムへの追加

クラス図のレイアウトの変更

このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。