オブジェクト指向による 分析と設計

47070
オブジェクト指向モデリング
[5]
2001年11月 6日
オブジェクト指向モデリング
前回 初歩のケーススタディ
4.1 図書館問題
4.2 ユースケース
4.3 ソフトウェアプロセス
4.4 型の認識
4.5 振る舞いのモデル
4.6 概念モデルから実装モデルへ
2
初歩のケーススタディ
4.1 図書館問題
 基本定義
大学が保有する図書を利用者に貸出して,返却までを追跡
するシステム
 CATWOE分析
 システムが備えるべき機能
 基本課題
 要求記述としてのユースケース
 概念の認識
 命名と抽象
 初期のモデル
 型図(クラス図),シーケンス図,状態図,アクティビティ図
3
オブジェクト指向モデリング
第5回 静的モデル1
5.1 型の認識
5.2 関連
5.3 属性と操作
5.4 汎化関係
5.5 概念レベルでの特殊な表現
5.6 リファクタリング
テキスト 第5章
4
静的モデル1
5.1 型の認識
型
 エンティティ
 実在する概念
 名前を持つ
 指し示されるもの
 指し示すもの
 境界を持つ
 定義
 属性
 ユニークであること
 別名でない
 属性でない
 集合
 分類
<<type>>
三角形のようなもの
三角形のようなもの
5
静的モデル1
5.1 型の認識
 型の識別
 識別された型の相互作用で要求が完結
 将来の変更にも耐えられる一般性を持つ
 名詞抽出法(データ駆動)
 システムに関する記述から名詞(句)を抽出
 妥当な概念を残すように「ふるい」にかける
冗長,あいまい,イベント,操作,メタ,スコープ(,属性)
 CRCカード(責任駆動)
 Classes - Responsibilities - Collaborators
 ユースケースをやってみる(ロールプレイ)
 必要な責任を見出して,クラスに割り当てる
クラス(型)名
責任
協調相手
6
静的モデル1
5.1 型の認識
 型になるもの
目に見える「もの」:本,商品
役割(ロール):従業員,顧客
事象:受注,退会
相互作用:?
属性:高さ,灰色さ,時点,名前,住所
 属性か型かは非常に微妙
 基本型
 UoD,文脈,視点
 オブジェクトの相互作用がシステムである
 制御オブジェクトは要注意!
7
静的モデル1
5.2 関連
 関連(association)
ソースを主語とし,関
連名を述語として読
めるように...
 図書館にある「本」
 関連の方向
 ソース → ターゲット
本
is a copy of
0..*
1..1
著書
実践ファンクションポイント法
1番め
2番め
リファクタリング
3番め
UMLを使って
本
著書
8
静的モデル1
5.2 関連
 多重度(multiplicity)
 インスタンスどうしの対応(リンク)数
 対応の方向
 0,1,*
最小値..最大値
本
is a copy of
0..*
1..1
著書
実践ファンクションポイント法
1番め
2番め
リファクタリング
3番め
UMLを使って
本
著書
9
静的モデル1
5.2 関連
 演習
 問 「学生」は最多で6つまでの「授業科目」を履修でき,各
「授業科目」には最多で25人の「学生」を登録できる。
学生
0..25
0..6
授業科目
 問 このような関連の実装方法を考えてください。
10
静的モデル1
5.2 関連
 演習
 多重度を指定してください。
親
子
11
静的モデル1
5.2 関連
 演習
 多重度を指定してください。
親
0..*
0..*
子
Aさん
Dさん
Eさん
Fさん
Bさん
Cさん
親
子
12
静的モデル1
5.2 関連
 これで正しいですか
 親の親は?子の子は?
再帰関連
0..* 親
人
子
ロール(役割)
0..*
親
Dさん
Eさん
子
Fさん
Aさん
Bさん
人
Cさん
13
静的モデル1
5.2 関連
 演習
 じゃあ,兄弟は?叔父叔母は?いとこは?
0..* 親
人
子
0..*
 宿題
 6親等までを扱うための型モデルを書いてください
 養子縁組はないものとする
 離婚,再婚はないものとする
14
静的モデル1
5.3 属性と操作
 属性
 理解に必要な属性
本
何番め
購入日
借りた日
返却予定日
:
著書
is a copy of
0..*
1..1
書名
著者
訳者
発行日
ISBN
貸出可能数
:
15
静的モデル1
5.3 属性と操作
 操作
 責任の割当てを指定(暗示的仕様)
本
何番め
購入日
借りた日
返却予定日
:
is貸出可能()
借りる()
:
著書
is a copy of
0..*
1..1
書名
著者
訳者
発行日
ISBN
貸出可能数
:
貸出実施()
ユースケースを
実現するために
必要な操作
16
静的モデル1
5.3 属性と操作
 操作の割当て
著書
a:会員
b:本
c:著書
Aさん:利用者
isValid(Aさん)
借りる(b)
is貸出可能()
借りる()
書名
著者
訳者
発行日
ISBN
貸出可能数
:
貸出実施()
貸出実施()
1..1
is a copy of
0..*
本
会員
氏名
住所
:
isValid()
借りる(本)
:
borrows/returns
1..1
何番め
購入日
1..* 借りた日
返却予定日
:
is貸出可能()
借りる()
:
17
静的モデル1
5.3 属性と操作
 操作の割当て
d:貸出
a:会員
c:著書
b:本
利用者
著書
書名
著者
訳者
発行日
ISBN
/貸出可能数
:
new
1..1
is a copy of
0..*
会員
氏名
住所
:
isValid()
:
貸出
本
借りた日
0..* 返却予定日
1..1
:
借りる()
返却()
:
0..*
何番め
購入日
1..1 :
is貸出可能()
:
18
静的モデル1
5.4 汎化関係
 汎化
 部分集合
 責任の特化
会員
会員
職員の会員
職員の会員
List
複素数
実数
AddressBook
実数
複素数
AddressBook
List
19