<<PREV | ToC | NEXT>>
EclipseUML の利用 - クラス図の追加
Since: June/19th/2005
クラス図の追加
パッケージ内にクラス図を追加します。EclipseUML では、クラス図を追加すると、自動的に対応するクラスのコードが作成されます。このパッケージ内で作成したクラス図に対応するソースは、このパッケージ内のものとして作成されます。
- パッケージを右クリック -> 「新規(W)」->「その他(O)」
- 「UML Diagrams」->「UML Class Diagrams」を選択し、「次へ(N)」押下
|
図:UML Class Diagram 追加 |
もしくは、パッケージを選択してから、ツールバーの "New UML Diagram" アイコンをクリック
|
図:UML Class Diagram 追加 |
- 開いたパネルで次のように指定:
- ファイル名:
demouml.ucd
- パッケージ:
demouml
- Select your diagram presentation mode:
Association
, Inheritance
, Dependency
- 「終了(F)」押下
- Reverse Engineering にチェックをいれて「終了」押下
- 確認画面で「OK」押下
- 「UML Class Diagram Editor」が開く。
|
図:UML Class Diagram Editor |
エディタの右上のマークが Omondo のロゴです。ここでは、評価版をインストールしているので、"* Evaluation *" と表示されています。無料版の場合は "* Free *" となります。
クラスの追加
- Class Diagram Editor のビューのツールバーから、 "Create a Class" アイコンをクリックしてから、ビューの任意の場所をクリック
|
図:Create a Class アイコン |
もしくは、ビューの任意の場所を右クリック ->「New」->「Class」
- 「新規 Java クラス」パネルで次のように入力:
|
図:新規 Java クラス |
- 「終了」押下
- Class Diagram Editor にクラスが追加される。
この結果、エディタにクラスを表す矩形が追加されると同時に、パッケージに、空のクラス Toybox が追加されます。
インタフェースの追加
- クラスと同様にインタフェースを追加する。
|
図:新規 Java インタフェース |
- 名前(M):
Shape
|
図:新規 Java インタフェース |
この結果、エディタにインタフェースを表す矩形が追加されると同時に、パッケージに、空のインタフェース Shape が追加されます。
メソッドの追加
- インタフェースを右クリックして、「New」->「Method」で、次のメソッドを追加:
- Name:
getArea
- Return Type:
double
|
図:メソッド追加 |
この結果、エディタのインタフェースを表す矩形に、メソッドが追加されると同時に、ソースコードに抽象メソッドが追加されます。
|
図:メソッド追加結果 |
関係の追加
- ツールバーの Association アイコンをクリック
|
図:Association アイコン |
- Shape と Toybox を順番にクリック
- 1st Association End タブ(Shape 側)で次の設定:
- Multiplicity:
0..*
- Association type:
0..*
|
図:1st End 側設定項目 |
- 「OK」押下
この結果、エディタのインタフェースとクラス間に集約の矢印が追加されます。
|
図:関係追加結果 |
それと同時に、ソースコードに色々追加されます。現時点では、次のようになっています。
Shape.java
/*
* 作成日: 2005/06/20
*
* TODO この生成されたファイルのテンプレートを変更するには次へジャンプ:
* ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
*/
package demouml;
/**
* @author msugai
*
* TODO この生成された型コメントのテンプレートを変更するには次へジャンプ:
* ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
*/
public interface Shape {
/**
*
*/
double getArea();
/**
*
* @uml.property name="toybox"
* @uml.associationEnd inverse="shape:demouml.Toybox" multiplicity="(0 1)"
*
*/
Toybox getToybox();
/**
*
* @uml.property name="toybox"
*
*/
void setToybox(Toybox toybox);
}
Toybox.java
/*
* 作成日: 2005/06/20
*
* TODO この生成されたファイルのテンプレートを変更するには次へジャンプ:
* ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
*/
package demouml;
import java.util.Collection;
import java.util.Iterator;
/**
* @author msugai
*
* TODO この生成された型コメントのテンプレートを変更するには次へジャンプ:
* ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
*/
public class Toybox {
/**
*
* @uml.property name="shape"
* @uml.associationEnd aggregation="aggregate" inverse="toybox:demouml.Shape" multiplicity="(0 -1)"
*
*/
private Collection shape;
/**
*
* @uml.property name="shape"
*/
public void setShape(java.util.Collection value) {
shape = value;
}
/**
*
* @uml.property name="shape"
*/
public Iterator shapeIterator() {
return shape.iterator();
}
/**
*
* @uml.property name="shape"
*/
public boolean addShape(demouml.Shape element) {
return shape.add(element);
}
/**
*
* @uml.property name="shape"
*/
public boolean removeShape(demouml.Shape element) {
return shape.remove(element);
}
/**
*
* @uml.property name="shape"
*/
public boolean isShapeEmpty() {
return shape.isEmpty();
}
/**
*
* @uml.property name="shape"
*/
public void clearShape() {
shape.clear();
}
/**
*
* @uml.property name="shape"
*/
public boolean containsShape(demouml.Shape element) {
return shape.contains(element);
}
/**
*
* @uml.property name="shape"
*/
public boolean containsAllShape(Collection elements) {
return shape.containsAll(elements);
}
/**
*
* @uml.property name="shape"
*/
public int shapeSize() {
return shape.size();
}
/**
*
* @uml.property name="shape"
*/
public demouml.Shape[] shapeToArray() {
return (demouml.Shape[]) shape.toArray(new demouml.Shape[shape.size()]);
}
}
実現の追加
インタフェースを実現するクラスを追加してみます。
- クラス名:
Triangle
|
図:実装クラス追加 |
- インタフェースの「追加」ボタン押下
- インタフェース名:
Shape
|
図:実装クラス追加 |
この結果、ダイアグラム・エディタに実装クラスが追加され、インタフェースとの間に実現の矢印が表示されます。
|
図:実装クラス追加 |
同時に、ソースコードにクラス Triangle が追加され、インタフェースで宣言している抽象メソッドのデフォルト実装が追加されます。
Triangle.java
/*
* 作成日: 2005/06/20
*
* TODO この生成されたファイルのテンプレートを変更するには次へジャンプ:
* ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
*/
package demouml;
/**
* @author msugai
*
* TODO この生成された型コメントのテンプレートを変更するには次へジャンプ:
* ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
*/
public class Triangle implements Shape {
/* (非 Javadoc)
* @see demouml.Shape#getArea()
*/
public double getArea() {
// TODO 自動生成されたメソッド・スタブ
return 0;
}
/* (非 Javadoc)
* @see demouml.Shape#getToybox()
*/
public Toybox getToybox() {
// TODO 自動生成されたメソッド・スタブ
return null;
}
/* (非 Javadoc)
* @see demouml.Shape#setToybox(demouml.Toybox)
*/
public void setToybox(Toybox toybox) {
// TODO 自動生成されたメソッド・スタブ
}
}
クラスを追加した後で、実現の矢印を追加することもできます。
- クラスの追加
|
図:実装クラス追加 |
- ツールバーの Generalization アイコンをクリック
|
図:実装クラス追加 |
- クラス Circle とインタフェース Shape を順番にクリック
- Override/Implement Methods で全て選択して「OK」押下
|
図:実装クラス追加 |
メンバ変数の追加
- クラス Triangle を右クリック -> 「New」->「Attribute」
- 「Parameters」->「Add」:
- Name:
height
, Type: double
, Use Accessors: チェックを外す
- Name:
width
, Type: double
, Use Accessors: チェックを外す
- 「OK」押下
- 同様に、クラス Circle を右クリック -> 「New」->「Attribute」
- 「Parameters」->「Add」:
- Name:
radius
, Type: double
, Use Accessors: チェックを外す
- 「OK」押下
private なメンバはクラス図には表示されません。
コンストラクタの追加
- クラス Triangle を右クリック -> 「New」->「Constructor」
- 「Parameters」->「Add」:
- Name:
height
, Type: double
- Name:
width
, Type: double
- 「OK」押下
- 同様に、クラス Circle を右クリック -> 「New」->「Constructor」
- 「Parameters」->「Add」:
- Name:
radius
, Type: double
- 「OK」押下
クラス図にコンストラクタが追加されると同時に、空のコンストラクタがソースに追加されます。
|
図:コンストラクタ追加 |
以上で、モデリングとしては終了です。他にも、スーパークラス、抽象クラス、内部クラスなどを作成してみてください。
<<PREV | ToC | NEXT>>
Copyright © 2005 SUGAI, Manabu. All Rights Reserved.