内容と予定( - jaist.ac.jpochimizu/jaist-local/静的モデリング手法.pdf ·...
TRANSCRIPT
内容と予定(1)• 目標と範囲
• 基礎概念の獲得
– オブジェクト指向の基礎概念:世界の表現
– オブジェクト指向の基礎概念:再利用
– オブジェクト指向プラグラムの構造
– オブジェクト指向技術の優位性
• モデリング手法の獲得
– 静的モデル:クラスと関連
– 動的モデル:状態機械
– 動的モデル:相互作用図
– 並行性の記述:アクティブオブジェクトとマルチスレッドプログラミング
– UML2.0概要北陸先端大 落水浩一郎
可視性
• + 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におけるクラス間の関係の表現
依存: 矢の方の変更が根の方のセマンティクスに
影響を与える場合がある
誘導: 根のクラスから矢の方のクラスにたどれる
関連
汎化
集約:全体ー部分関連
コンポジション:全体ー部分関連、寿命が同じ
北陸先端大 落水浩一郎
保険ビジネスに対するクラス図
顧客
1..*
保険証書
0..1
保険契約保険会社1
1
0..*
0..*
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ガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎
関連クラス
エレベータ制御
ボタン
エレベータ
待行列
*
4
エレベータとエレベータ制御間のリンクのおのおのには、行列がある
H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎
集約とは
• クラス間の全体-部分関係
• is-part-ofという特別な関連
• 集約の種類
– 集約
– 共用集約
– コンポジション集約
集約:全体-部分関連
コンポジション:全体-部分関連、寿命が同じ
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 */}
};
北陸先端大 落水浩一郎
導出(派生)関連
Car hirecompany
• 他の関連や属性から計算できる
• 会社が多くの顧客と契約している時、導出される関連の例として、「VIP 顧客である」がある
Hire contract
Customer
0..*
1
1
0..*
*
/ VIP customer
H.E.エリクソン、M.ペンカー「UMLガイドブック」エスアイビーアクセス北陸先端大 落水浩一郎