AND OR

*Unified Modeling Language [#z3199e30] 内容を理解するだけよい。書けなくても大丈夫なのだ。

omondoUMLのインストール

Eclipseをインストール。 http://www.omondo.com/download/index.htmlから最新版をダウンロードします。

コンソール画面から

java -jar eclipseuml-installer.jar

を実行。 Eclipse の再起動 更新マネージャのウィンドウが表示され、再起動を促されるので、再再起動する 「ウィンドウ」→「設定」→「UML」でUMLの表示があれば、インストール成功

Academics means the UML plugin is used by universities and other academic institutions. In order 
to get an academic license professors must use their university email adress and send the 
following information to academic@omondo.com 

 Name of the university and a link to the university website 
 The university IP Network Ranges 
  Start *.*.*.* 
  End *.*.*.* 
 The university domain name 
  unversity-domain.edu 
 
Licenses will only be delivered to professors, not directly to students. 

ユースケース図

用途

開発システムとアクタとの関係を明確化

アクタと開発システムとの関係、要求、範囲外か範囲内か?抽象的な概念図

主に楕円な世界観。

※このサイトではアクターをアクタと書きます。

※楕円な世界というのは,クラスが長方形の世界なのに対して,ユースケースは楕円で描かれるからです。

アクタ(actor): 開発システムの外側のもの。主に人、もの、演じる役割そのもの。
スティックマンで記述する

関係の表記

精神は肉体に結び付けられている。関係は線で結ばれているべきである。

関連: 実線 アクタとユースケース間
拡張: 矢印つき破線   ユースケース間   : -------> : <<extends>> or <<include>>
汎化: 白抜き矢印の実線  ユースケース間 : 

クラス図

表記法を覚えないと使えない。 静的な構造図:関係を示す四角い世界観

クラス:長方形で、3つの区画をもつ。3つの区画は、上からクラス名,フィールド,メソッドの区画に分割される。

表記

属性について

+ : public;  
# : protected; 
- : private;
~ : package
/ : 派生
_ : クラススコープ (static修飾子)

多重度

下限..上限 : [0..*] : 意味は? 0から*まで;
[2..10] : 2から10まで
アスタリスクは、無限を示す。

派生属性

他の属性等から計算できる

クラススコープとインスタンススコープ

クラススコープ   : あるクラスからインスタンス化されたオブジェクトが共通の値を持っている属性
インスタンススコープ: オブジェクトごとに異なる値を持つ属性。
            オブジェクトに対して呼び出す操作

関係を示す

リンク: 関係を線で結ぶこと。

関連: 実線で結ぶ

クラス間に「所有する」の関係があることを示す。
-2項関連:2つのクラス間の関連
-n項関連:3つ以上のクラス間の関連

集約: 全体側を白抜きのひし形と実線で示す。

集約(全体)は、コンポネント(部分)間の全体-部分の関係を示す。
例:クラス車と複数のクラス部品 の関係を示せ。もしくは、この関係は?

複合(コンポジション):全体側を塗りつぶしのひし形と実線で示す。

全体クラスと部品クラスの集約より、もっと強力な関係?
集約の一形態で強い所有権をもち、部品の存在期間が全体と一致する。
終端に多重度は1を越えてはならない。

汎化:スーパークラス側を白抜き矢印の実線で示す。

一般的な要素と特殊な要素間の分類の関係 (プラネテスのハンカとはちがう)
スーパークラスとサブクラスの関係は汎化。    

依存(dependency):矢印つき破線

クラス間にUSEの関係があることを示す。
例:
クラスAがクラスBにメッセージをなげる。
クラスBがクラスAにメッセージをなげる。

実現:インタフェース側を白抜き矢印の破線

インタフェースとクラス間の関係を示す。

Interface

操作を持つだけで、実装は持たない。

UML(クラス図) と Java での簡単な例

関連(association): [B]0..1----0..*[A]0..1----0..*[C]

UML(クラス図)

フィールドの関係: フィールドでオブジェクトを参照する。

http://telecom0.eng.niigata-u.ac.jp/pub/association.png

java

 import java.util.*;
 class A {
     private B b; 
     private Collection cC;
     // ...
     public void setB(B b) {
         this.b = b;
     }
     public B getB() {
         return b;
     }
     // ...
     public void addC(C c) {
         cC.add(c);
     }
     public Iterator getCcIterator() {
        return cc.iterator();
     } 
     // ...
 }
 
 import java.util.*;
 class B {
     private Collection cA;
     // ...
 }
 
 class C {
     private A a;
     // ...
 }

集約(aggregation): [B]0..1----0..1<>[A]<>0..1----0..*[C]

UML(クラス図)

java

 import java.util.*;
 class A {
     private B b; 
     private Collection cc;
     // ...
     public void setB(B b) {
         this.b = b;
     }
     public B getB() {
         return b;
     }
     // ...
     public void addC(C c) {
         cc.add(c);
     }
     public Iterator getCcIterator() {
        return cc.iterator();
     } 
     // ...
 }
  
 class B { // can be associated to some classes other than class A.
     private A a;
     private D d;
     // ...
 }
 
 class C { // can be associated to some classes other than class A.
     private A a;
     private D d;
     // ...
 }

複合(composition): [B]0..1----0..1<+>[A]<+>0..1----0..*[C]

 java.util.*;
 class A {
     private B b; 
     private Collection cC;
     // ...
     public void setB(B b) {
         this.b = b;
     }
     public B getB() {
         return b;
     }
     // ...
     public void addC(C c) {
         cc.add(c);
     }
     public Iterator getCcIterator() {
        return cc.iterator();
     } 
     // ...
 }
  
 class B { // cannot be included in any classes other than class A (and itself?).
     private A a;
     // no member of the other classes
     // ... 
 }
 
 class C { // cannot be included in any classes other than class A (and itself?).
     private A a;
     // no member of the other classes
     //...
 }

汎化(generalization):

UML(クラス図)

http://telecom0.eng.niigata-u.ac.jp/~takumaro/midi/generilzation.png

java

 class subClass extends superClass {
     // ...
     public subClass () {
         super();
     }
     // ...
 }  
 
 class superClass {
     // ...
     public superClass () {
     }
     // ...
 }

依存(dependency): [G]- - ->[F]<- - -[H] (ちなみに、[G]<>0..1----0..1[H])

UML(クラス図) 

メソッドの関係: メソッドでオブジェクトを参照する

java

  class F {
      // ...
      // no member of G
      // no member of H
      // ...
      public H getH(G g) {
          return g.getH();
      }
      // ...
  }
  
  class G {
      private H h;
      // ...
      public H getH() {
          return h;
      }
      // ...
   }
   
   class H {
      private G g;
      // ...
   }

実現(realization): [J]<|- - -[<<interface>>I]

UML

http://telecom0.eng.niigata-u.ac.jp/pub/realization.png

java

 class superClass implements interfaceI {
     private String name[];
     // ...
     public String getName(int key) {
          return name[key];
     }
     // ...
  }
  interface interfaceI {
      // ...
      String getName(int key);
      // ...
  }

パッケージ図

モデル要素(クラスやオブジェクト)をグループ化したもの。

用途

モデルの適切な大きさにグループ化する。

表記

左上に小さな箱を置いた長方形。

オブジェクト図

オブジェクトは、オブジェクト指向(ObjectOrientation)における最も基本的な概念

オブジェクトは、クラスをインスタンス化したもの

用途

複雑な構成をもつクラス図の作成、理解する際の補助的なダイアグラム

表記

オブジェクト: 内部が2つの区画に分かれた長方形のアイコン

名前の区画

オブジェクト名/クラス名 (ただし、下線をつける必要がある)
省略して、[オブジェクト名]、[:クラス名]と表記できる

属性の区画

省略可
属性名:型=値

シーケンス図

クラス図にならぶ、重要な構成図。

静的構成図のクラス図に対し,シーケンス図は開発システムの動的な図(振る舞い)を示す。

オブジェクト間の相互作用を表すダイアグラム。 特定のシナリオについて記述する。

時系列順に記述する。

用途

分析・設計フェーズで利用する。

表記

クラス:   

オブジェクト名:クラス名  例 a:A は?

活性区間:  

オブジェクトが実際に活動している期間。ライフライン上に配置された長方形

ライフライン:

オブジェクトがシステム内で生存している期間
オブジェクトの下に引かれる破線 ’×’表記でオブジェクトが消滅

メッセージ:

オブジェクト指向の基本的概念。オブジェクト操作の呼び出しを示す
例:注文(), 確認()
   オブジェクトはメッセージを受け取ると活性化される
    矢印つきの線とメッセージ名のラベル
       :同期型   黒塗り矢印
       :非同期型  棒矢印
       :リタ-ン   破線

コラボレーション図

  • 動的振る舞いを記述する図
  • シーケンス図と同様にオブジェクト間の相互作用を表すダイアグラム

用途

シーケンス図とコラボレーション図は、オブジェクト間のメッセージのやり取りを表現する

相違点

  • シーケンス図 : 時系列の観点
  • コラボレーション図 : オブジェクト間の参照関係

メッセージの順序が必要

例 
1:検索(String 名前), 2:入力(String 番号), 3:決定(int num, String name), 4:生成()

アクティブオブジェクト

太枠で示す。「スレッド」

コンポジットオブジェクト

ステートチャート図

動的振る舞いを記述する。 状態(ステート)、つまりオブジェクトの状態を示す。

用途

表記

角の丸い四角型のアイコンで表現する。2つの区画に分割
「状態名」と「内部遷移」を記述する。
内部遷移は、「イベント名/アクション」の形式で記述する

イベント名 と 内容

entry  : この状態に入った場合にアクションが実行される
do     : この状態にある間、継続してアクションが実行される
exit   : この状態から出る場合にアクションが実行される

開始状態、終了状態

開始状態  : 黒塗りのマルのアイコン 
終了状態  : 円で囲まれた黒塗りのマルのアイコン

※アクティビティ図でも使用される。

遷移

  • オブジェクトが、ある状態からある別の状態へ移動すること。
    表記: 矢印つきの実線
    イベント名[ガード条件]/アクション
    例: キャンセル/返金   (キャンセル=イベント、返金=アクション)

ガード条件

  • 遷移が成立するための真偽値条件

※アクティビティ図でも使用される。

アクティビティ図

従来のフローチャート図と酷似。 説明は省略する。

表記

ステートチャート図を参照

履歴

円のなかに「H」を記述する

分岐

ひし形のアイコン

コンポーネント図

Key Word : 物理的な側面から設計する
  • システムの物理的な構成を表現するダイアグラム
  • コンポーネント間の依存関係を表記する

表記

長方形の左側の線上に2つの四角形を重ねたアイコン

配置図

モデリング

キーワード

ステレオタイプ

表記

要素名を「<<」「>>」で囲んだ表記
例:
<<interface>> or <<entity>>

リンク


Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2014-07-29 (Tue) 20:44:12 (1450d)