問題解決からビジネスモデリングへ

オブジェクト指向モデリング
[4]
2003年10月21日
3. 概念とクラス
3.4 概念と型
 概念を「型」に対応づける
 「型」を「クラス」に対応づける
型:構造化された概念
クラス:プログラムを構成するモジュールの単位
概念をエンティティセットに
対応づける
エンティティセットをRDBの
「表」に対応づける
オブジェクト指向モデリング
児玉公信
生産管理システム入門
小泉淳之介
田口洋介
中山美子
「学生」の集合
学生
氏名
学部
:
0..*
問題発見と問題解決
履修する
「授業科目」の集合
履修する
授業科目
0..* 名称
教員
:
2
3. 概念とクラス
3.4 概念と型
 「型」とは何か
 Parnus(1976)
 データ群(変数)を共通の性質でくくり出したもの
Spec-types
Rep-types
Parm-types
Variant-types
提供する操作の仕様が共通(i.e. インタフェース)
データ表現が共通(e.g. 複素数と2次元表現)
データの側面をパラメタ化したもの(i.e. マクロ,テンプレート)
データのいくつかの側面が共通(i.e. スーパタイプ)
これらの混合
 実装を抽象化したデータ構造
インタフェース(データ操作の外部表現)
内部属性(データ表現)
操作(データ操作)
データ型は「型」の一種
 「型」の具体的実装例がクラス
3
4. 関連
4.1 関連と多重度(2)
 多重度(multiplicity)
インスタンスどうしの対応(リンク)数
ターゲットの近傍に表記
0,1,*
本
最小数..最大数
is a copy of
0..*
1..1
書名
実践ファンクションポイント法
1番め
2番め
リファクタリング
3番め
UMLを使って
本
書名
4
オブジェクト指向モデリング
シラバス
 授業計画
回
1
2
3
4
5
6
7
8
9
10
11
12
13
月日
9月 30日
10月 7日
10月14日
10月21日
10月28日
11月 4日
11月11日
11月18日
12月 2日
12月 9日
12月16日
1月13日
1月20日
内容
オリエンテーション:モデルとは何か。
モデリング言語:UMLの概要
静的モデル1:概念とクラス
静的モデル2:関連
静的モデル3:オブジェクト図
静的モデル4:高度な関連
機能モデル1:ユースケース
機能モデル2:ユースケース記述,シナリオ
動的モデル:協調図,シーケンス図,状態図,活動図
モデル図の理解:アナリシスパターン,事例
モデリング1:モデル図の作成,モデルの評価基準
モデリング2:例題によるユースケース記述
モデリング3:例題によるモデル図の作成
5
問題解決からビジネスモデリングへ
4. 関連
4.1 関連と多重度
4.2 ロール
4.3 再帰関連
4.4 汎化関連
4.5 集約関連
4.6 補足的な関連
6
4. 関連
4.2 関連と多重度(6)
 演習3
次の多重度を指定してください。
親
子
解答例
7
4. 関連
4.2 ロール
 関係の中で演じられる役割
関連ごとに1つのロールを持つ
ロール名
ターゲットの近傍に表記
ロールが自明のときは省略できる
問題領域における概
念数を減らす効用
 概念とロール
本質的概念
関係における概念
人
社員
勤務先
会社
生まれたときからそうだったの?
 ロールを型にしていいか
社員
所属先
組織
問題領域を限定すれば
製品
商品
取引
顧客
会社
8
4. 関連
4.3 再帰関連(1)
 上司と部下の関係
上司の上司は
部下の部下は
上司の
上司
1
1..*
上司
1
1..*
部下
1
1..*
部下の
部下
上司,部下は「社員」のロール
社員
0..1
1..*
上司
部下
社員
同じ型をまとめて
0..1 上司
1..*
部下
社員
9
4. 関連
4.3 再帰関連(2)
 再帰関連のイメージ
上司
上司
0..1 上司
1..*
部下
社員
部下
上司
小泉淳之介
福田康志
部下
川口淳子
部下
部下
竹中半平
亀井勝一
上司
部下
石坂洋二
「社員」の集合
10
4. 関連
4.4 汎化関連(1)
 汎化
部分集合
責務の特化
会員
会員
特別会員
特別会員
List
複素数
実数
AddressBook
実数
複素数
AddressBook
List
11
4. 関連
4.4 汎化関連(2)
 汎化
顧客
多重分類
動的分類
区画
一般
個人
重要
制約
完全区画
不完全区画
{完全}
個人顧客
法人
顧客
弁別子
(discriminator)
個人顧客
法人顧客
重要度
《多重》
《動的》
ステレオタイプ
重要顧客
一般顧客
12
4. 関連
4.4 汎化関連(3)
 動的分類の意味
 オブジェクトの状態を部分集合と見る
 状態遷移
1つのオブジェクトが集合間を渡り歩く
クラス図では,遷移の方向は記述できない
顧客
重要度
一般顧客
《動的》
顧客
一般
重要
重要顧客
13
4. 関連
4.4 汎化関連(4)
 汎化の記法
{完全}
個人顧客
顧客
個人顧客
法人顧客
重要度
《多重》
《動的》
{完全}
個人顧客
顧客
重要顧客
個人顧客
法人顧客
一般顧客
重要度
重要顧客
《多重》
《動的》
一般顧客
14
4. 関連
4.4 汎化関連(5)
 実装レベルでの対応
 多重分類
単一分類に置き換える
サブクラスではなく,フラグなどの属性で実装する
 動的分類
サブクラスではなく,フラグなどの属性で実装する
顧客
顧客
重要法人
重要個人
一般法人
重要度区分
法人区分
一般個人
15
4. 関連
4.5 集約関連
 集約
部分-全体関係
関連名(is a part of)を省略
概念レベルでは
区別をしない
 合成集約
強い所有
弱いエンティティ(weak entity)
優等コース
ボード
1..*
1
6..*
9
授業科目
マス
16
4. 関連
4.6 補足的な関連(1)
 ナビゲーション可能性(navigability)の明示
双方向関連
単方向関連
仕様を限定する
顧客
顧客
請求先
1
納入先
1
請求先
1
納入先
1
*
注文
*
注文
*
1
商品
*
*
1
商品
*
17
4. 関連
4.6 補足的な関連(2)
 限定子つき関連(qualified association)
○×
×○○
多重度を1にする
限定子によって一意になるという制約を示す
辞書などによる実装を暗示
盤
1
1
盤
位置
9
マス
1
マス
*
1
位置
行
列
行:{1,2,3}
列:{1,2,3}
Class ボード {
public マス getSquareMark(int 行, int 列);
:
}
18
4. 関連
4.6 補足的な関連(3)
 導出関連(derived association)
計算で導き出せる関連
冗長
理解しやすさ
「/」でマーク
UML
導出型
導出属性
導出ロール
FP
「書名」型
*
書名
1
/borrows
2
4
*
会員
borrows
*
3
本
「会員」型
「本」型
19