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

47070
オブジェクト指向モデリング
[4]
2001年10月22日
3.オブジェクトの概念とUML
オブジェクト指向とは何か
 オブジェクト指向パラダイム
 認識世界(UoD)は「オブジェクト」たちの相互作用で成立し
ているという想定に基づいてソフトウェアを作成する
 オブジェクトとは
 メッセージを受け取って反応する(behavior)
 反応の結果はオブジェクトの内部状態(state)に依存する
 個々のオブジェクトが識別される(identity)
擬人化されたデータ
resetTimeTo(07:43)
OK
reportTime()
A
13:18
07:43
B
16:47
It’s 16:47
2
3.オブジェクトの概念とUML
UML
 表記法
関心
観点
静的側面
概念レベル
仕様レベル
実装レベル
図の要素
モデル管理
汎用拡張機構
機能側面
ユースケース図
クラス図
オブジェクト図
協調図
シーケンス図
動的側面
物理側面
ステート
チャート 活動図
コンポーネント図
図
配置図
ノート,型-インスタンスの対応
パッケージ
制約と注釈,ステレオタイプ
3
質問カードから
 設計の際にデザインパターンをどう考慮するか
 使えるときには使う
 パターンランゲージ
 force
 リファクタリングがいい例
 UMLが日本で成功する方向性は
 ベンダだけでなく,ユーザが使い始めること
 オブジェクト指向による‘情報システム’の具体的な
イメージをjavaのコードやデモで示してほしい
 いずれやらせていただきます
4
従業員タイプ
1
*
従業員
従業員
従業員タイプ
*
従業員タイプ
+型 1
「クラスによる
タイプコードの置き換え」
技術職タイプ
営業職タイプ
実装
*
従業員
技術職
1
営業職
概念モデル
従業員
タイプ
「サブクラスによる
タイプコードの置き換え」
「State/Strategyによる
タイプコードの置き換え」
「フィールドによる
サブクラスの置き換え」
従業員
技術職
営業職
5
オブジェクト指向モデリング
第4回 静的モデル1
4.1 型の認識
4.2 関連
4.3 属性と操作
4.4 汎化関係
テキスト 第5章
6
静的モデル1
4.1 型の認識
 概念レベル
 概念
 名前を持つ
 指し示されるもの
 指し示すもの
 集合
 境界を持つ
 定義
 属性
 要素
 分類
型
三角形のなかま
四角形のなかま
三角形のなかま
四角形のなかま
7
静的モデル1
4.1 型の認識
 型の表記
 UMLクラス図で型図を表記する
 型の名前
 型が持つ属性
 型が持つ操作
制約:
角が3つあること...
<<type>>
三角形のなかま
∠ABCの角度
∠BCAの角度
辺ABの長さ
辺BCの長さ
色
8
静的モデル1
4.1 型の認識
 型とクラス
 クラスは型の実装形態の1つ
 型とインスタンスの関係
 「犬」と「ポチ」
 相対的関係
 「ほ乳類」と「犬」
集合
要素
型
クラス
インスタンス オブジェクト
関連
ユースケース
リンク
シナリオ
9
静的モデル1
4.1 型の認識
 型の識別
 識別された型の相互作用で要求が完結
 将来の変更にも耐えられる一般性を持つ
 名詞抽出法(データ駆動)
56ページ
 システムに関する記述から名詞(句)を抽出
 妥当な概念を残すように「ふるい」にかける
冗長,あいまい,イベント,操作,メタ,スコープ(,属性)
 CRCカード(責任駆動)
67ページ
 Classes - Responsibilities - Collaborators
 ユースケースをやってみる(ロールプレイ)
クラス(型)名
責任
協調相手
 必要な責任を見出して,クラスに割り当てる
インスタンスから
型を見出す
10
静的モデル1
4.1 型の認識
 型になるもの
目に見える「もの」:本,商品
役割(ロール):従業員,顧客
事象:受注,退会
相互作用:ミーティング,交差点?
属性:高さ,灰色さ,時点,名前,住所
 属性か型かは非常に微妙
 基本型
 UoD,場面,視点に依存
 なぜ,ミシン問題で,針,上糸,下糸,布の4つを取り上げ
たのか
11
静的モデル1
4.2 関連
 関連(association)
ソースを主語とし,関
連名を述語として読
 インスタンス間の対応関係の集合
めるように...
 関連の方向
 ソース → ターゲット
本
is a copy of
0..*
1..1
著書
実践ファンクションポイント法
1番め
2番め
リファクタリング
3番め
UMLを使って
(図書館にある)本
著書
12
静的モデル1
4.2 関連
 多重度(multiplicity)
 インスタンスどうしの対応(リンク)数
 対応の方向
 0,1,*
最小値..最大値
本
is a copy of
0..*
1..1
著書
実践ファンクションポイント法
1番め
2番め
リファクタリング
3番め
UMLを使って
(図書館にある)本
著書
13
静的モデル1
4.2 関連
 ソースのある1つのインスタンスからリンクされるターゲット
のインスタンス数
0..*
本
著書
1..1
実践ファンクションポイント法
1番め
2番め
リファクタリング
3番め
UMLを使って
(図書館にある)本
著書
14
静的モデル1
4.2 関連
 演習
 問 「学生」は最多で6つまでの「授業科目」を履修でき,各
「授業科目」には最多で25人の「学生」を登録できる。
学生
授業科目
解答
 問 このような関連の実装方法は?
15
静的モデル1
4.2 関連
 演習
 多重度を指定してください。
(生物学的親子関係に限定)
親
子
解答
16
静的モデル1
4.2 関連
 宿題
 兄弟(性別問わず)関係はどう表現する?
0..* 親
人
子
0..*
17
静的モデル1
4.3 属性と操作
 属性
 理解に必要な属性
本
何番め
購入日
借りた日
返却予定日
:
著書
is a copy of
0..*
1..1
書名
著者
訳者
発行日
ISBN
貸出可能数
:
18
静的モデル1
4.3 属性と操作
 操作
 責任の割当てを指定(暗示的仕様)
本
何番め
購入日
借りた日
返却予定日
:
is貸出可能()
借りる()
:
著書
is a copy of
0..*
1..1
書名
著者
訳者
発行日
ISBN
貸出可能数
:
貸出実施()
ユースケースを
実現するために
必要な操作
19
静的モデル1
4.3 属性と操作
 操作の割当て
著書
a:会員
b:本
c:著書
:利用者
is超過()
借りる(b)
is貸出可能()
借りる()
書名
著者
訳者
発行日
ISBN
貸出可能数
:
貸出実施()
貸出実施()
1..1
is a copy of
0..*
本
会員
氏名
住所
:
is超過()
借りる(本)
:
borrows/returns
1..1
何番め
購入日
1..* 借りた日
返却予定日
:
is貸出可能()
借りる()
:
20
静的モデル1
4.3 属性と操作
 操作の割当て
d:貸出
a:会員
c:著書
b:本
利用者
著書
書名
著者
訳者
発行日
ISBN
/貸出可能数
:
new
1..1
is a copy of
0..*
会員
氏名
住所
:
is超過()
:
貸出
本
借りた日
0..* 返却予定日
1..1
:
借りる()
返却()
:
0..*
何番め
購入日
1..1 :
is貸出可能()
:
21
静的モデル1
4.4 汎化関係
 汎化
 概念レベル
顧客
 部分集合
 責任の特化
顧客
 実装レベル
 属性,操作の置き換え
 クラスの拡張
重要顧客
重要顧客
Aさん
複素数
実数
実数
複素数
Aさんは「重要顧客」である
Aさんは「顧客」である
「重要顧客」は「顧客」である
22