内容と予定( - jaist.ac.jpochimizu/jaist-local/静的モデリング手法.pdf ·...

34
内容と予定(1目標と範囲 基礎概念の獲得 – オブジェクト指向の基礎概念:世界の表現 – オブジェクト指向の基礎概念:再利用 – オブジェクト指向プラグラムの構造 – オブジェクト指向技術の優位性 モデリング手法の獲得 – 静的モデル:クラスと関連 – 動的モデル:状態機械 – 動的モデル:相互作用図 – 並行性の記述:アクティブオブジェクトとマルチスレッ ドプログラミング – UML2.0概要 北陸先端大 落水浩一郎

Upload: nguyencong

Post on 29-Aug-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

内容と予定(1)• 目標と範囲

• 基礎概念の獲得

– オブジェクト指向の基礎概念:世界の表現

– オブジェクト指向の基礎概念:再利用

– オブジェクト指向プラグラムの構造

– オブジェクト指向技術の優位性

• モデリング手法の獲得

– 静的モデル:クラスと関連

– 動的モデル:状態機械

– 動的モデル:相互作用図

– 並行性の記述:アクティブオブジェクトとマルチスレッドプログラミング

– UML2.0概要北陸先端大 落水浩一郎

静的モデル(クラスと関連)

落水 浩一郎

北陸先端大 情報科学研究科

北陸先端大 落水浩一郎

保険ビジネスの単純なモデル

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス

保険会社保険契約

顧客1 0..* 0..* 1..*

北陸先端大 落水浩一郎

可視性

• + public そのクラスの外側から参照できる– 本例は情報隠蔽原理に反している

• - private 他のクラスから参照できない

• # protected サブクラスからは参照できる

請求書

+ amount : Real+ date : Date+ customer : String+ specification : String- administration : String

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

クラススコープ属性またはクラス変数

• クラス変数(下線)とはクラスのすべてのオブジェクトで共有される属性である

請求書

+ amount : Real+ date : Date = Current date+ customer : String+ specification : String- administration : String = “Unspecified”- number of invoices : Integer

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

クラス・スコープ操作

• クラス変数の操作

• オブジェクトの生成

size : Sizepos : Positionfigcounter : Integer

draw()getCounter(): Integer

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

操作の可視性

• 操作の構文• 可視性名前(パラメータリスト):戻り値の型{プロパティストリン

グ}

size : Sizepos : Position

+ draw()+ scaleFigure(percent: Integer = 25)+ returnPos(): Position

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

操作のシグニチャ

• 戻り値の型、名前、パラメータの型を操作のシグニチャと呼ぶ

自動車

+ registration number : String- data : CarData+ speed : Integer+ direction : Direction- administration : String

+ drive(speed: Integer, direction: Direction)+ getData(): CarData

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

UML記法

羽生田栄一監訳「UMLユーザガイド」ピアソンエデュケーション

UMLにおけるクラス間の関係の表現

依存: 矢の方の変更が根の方のセマンティクスに

影響を与える場合がある

誘導: 根のクラスから矢の方のクラスにたどれる

関連

汎化

集約:全体ー部分関連

コンポジション:全体ー部分関連、寿命が同じ

北陸先端大 落水浩一郎

多重度

人 自動車0..*1..*

人 自動車0..*所有する

所有される

所有する

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

保険ビジネスに対するクラス図

顧客

1..*

保険証書

0..1

保険契約保険会社1

1

0..*

0..*

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

再帰的関連

Node

Connects

*

*

結婚している

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

Component

Operation()Add(Component)

Remove(Component)GetChild(int)

Composite (複合)

Client*

Leaf

Operation()

本位田真一、吉田和樹監訳「デザインパターン」SoftBank Books

Clientは、Componentクラスのインタフェースを使って、Composite構造内のオブジェクトを操作する。オペレーションの受け手がleafであれば、その要求は直接処理される。Compositeが受け取った場合には、通常、その要求を子にあたるcomponentに転送し、さらに転送の前後に付加的なオペレーションを実行することもある。

CompositeOperation()

Add(Component)Remove(Component)

GetChild(int)

forall gin children

g.Operation()

children

北陸先端大 落水浩一郎

オブジェクト図の例

本位田真一、吉田和樹監訳「デザインパターン」SoftBank Books

aComposite

aCompositeaLeafaLeaf

aLeafaLeafaLeaf

aLeaf

北陸先端大 落水浩一郎

限定付き関連

図*キャンバス

図キャンバスfigure ID

限定付き関連はモデルの多重度を1対多から1対1に削減する

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

OR関連

人 会社

0..*保険契約保険会社

1

0..

0..*

1..*1..*

人 会社

0..*保険契約保険会社

1

0..

0..*

1..*1..*

{or}

保険会社は一度に会社と人の両方に関連を持てない

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

順序付き関連

保険契約

0..*

1..*

{ ordered }

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

関連クラス

エレベータ制御

ボタン

エレベータ

待行列

*

4

エレベータとエレベータ制御間のリンクのおのおのには、行列がある

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

3項関連

保険証書

保険契約保険会社

1 0..*

1..*

0..1

0..*

証書保管者

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

集約とは

• クラス間の全体-部分関係

• is-part-ofという特別な関連

• 集約の種類

– 集約

– 共用集約

– コンポジション集約

集約:全体-部分関連

コンポジション:全体-部分関連、寿命が同じ

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

集約

軍艦*海軍

この例はあまりよくない

保有する

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

共用集約

人チーム

部分が複数の全体の部分であってよい

会員である

**

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

コンポジション集約

ウィンドウ

全体が削除されると部分もなくなる

*

*

*

テキスト

リストボックス

ボタン

メニュー

*

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

まとめた表現

ウィンドウ

全体が削除されると部分もなくなる

*

*

*

*

テキスト

リストボックス

ボタン

メニュー

テキスト

リストボックス

ボタン

メニュー

ウィンドウ

*

*

*

*

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

汎化

• 関連や集約は,現在関心のある世界の構造を定義する

• 汎化は、複数の問題世界に共通の概念を定義する

財産性

問題適合性

乗り物

自動車 ボート

北陸先端大 落水浩一郎

汎化と関連

株券問題世界2class drawer{ }

class stock{ }今年4月 引き出し

財布 引き出し お金 株券

A B問題世界3class A extend{ }

class B extend{ }来年5月

財布 お金問題世界1class purse{ }

class money{ }昨年5月

入れ物 中身

A B

北陸先端大 落水浩一郎

集約と汎化の組み合わせ

図{abstract}

position: Posdraw(){abstract}

キャンバス

draw()

線分

draw()

グループ

draw()

多角形

draw()

から成る

*

から成る *

から成る *

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

Javaによる実装

図{abstract}

position: Posdraw(){abstract}

グループ

draw()

多角形

draw()

*

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス

abstract public class Figure{

abstract public void draw();protected Pos position;

};

public class Polygon extends Figure{

public void draw();{

/* draw polygon code */}

};

北陸先端大 落水浩一郎

制約付き汎化

クラスA

クラスB クラスC

{制約1,制約2, … ,}

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

重複と排他

乗り物

車 ボート

水陸両用車

{重複}

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

完全と不完全

男 女

{完全}

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

導出(派生)関連

Car hirecompany

• 他の関連や属性から計算できる

• 会社が多くの顧客と契約している時、導出される関連の例として、「VIP 顧客である」がある

Hire contract

Customer

0..*

1

1

0..*

*

/ VIP customer

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

導出属性

品物

原価売価/利益

{ 利益 = 売価 - 原価 }

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎

subset 制約

政治家 政党

1..* 1

1 1

党員である

党首である

(subset}

H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎