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

Download Report

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

オブジェクト指向モデリング
[5]
2003年10月28日
4. 関連
4.2 ロール
 関係の中で演じられる役割
関連ごとに1つのロールを持つ
ロール名
ターゲットの近傍に表記
ロールが自明のときは省略できる
問題領域における概
念数を減らす効用
 概念とロール
本質的概念
関係における概念
人
社員
勤務先
会社
生まれたときからそうだったの?
 ロールを型にしていいか
社員
所属先
組織
問題領域を限定すれば
製品
商品
取引
顧客
会社
2
4. 関連
4.4 汎化関連(2)
顧客
個人
 汎化(generalization)
 特化(specialization)
 分類(classification)
一般
重要
多重分類
動的分類
法人
 区画(partition)
完全区画
不完全区画
弁別子
(discriminator)
制約
{完全}
個人顧客
スーパータイプ
顧客
汎化
個人顧客
法人顧客
重要度
《多重》
《動的》
ステレオタイプ
重要顧客
サブタイプ
特化
一般顧客
3
4. 関連
4.5 集約関連
 集約(aggregation)
概念レベルでは
区別をしない
部分-全体関係
関連名(is a part of)を省略
 合成集約(composition)
has a
強い所有
弱いエンティティ(weak entity)
製品
is a part of
1..*
部品
6..*
「全体」のインスタンスが消滅すると「部分」のインスタンスも消滅
製品
1..*
6..*
部品
製品
1..*
6..*
品目
製品
1
9
部品
部品
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
問題解決からビジネスモデリングへ
5. オブジェクト図
5.1 インスタンス
5.2 オブジェクト図
6
5. オブジェクト図
5.1 インスタンス
 型とインスタンス
型をクラスで表記したように
インスタンスをオブジェクトで表記
: 書名
インスタンス識別:型名
属性名=属性値
:
:
実践ファンクションポイント法
タイトル=実践ファンク
ションポイント法
著者=児玉公信
: 書名
タイトル=リファクタリング
リファクタリング 著者=M. Fowler
UMLを使って
「書名」型
: 書名
タイトル=UMLを使って
著者=P. Stevens
7
5. オブジェクト図
5.2 オブジェクト図(1)
 インスタンス間のつながり(リンク)
クラス図からオブジェクト図を書く
A
A
*
*
B
B
C
D
型C
A1
A1
B1
A2
A2
型A
A3
a1:A
C1
B2
型B
b1:B
b2:B
型A
D1
A3
型B
a1:A
型D
c1:C
d2:D
8
5. オブジェクト図
5.2 オブジェクト図(2)
 クラス図を理解する
多重度を手がかりにして
顧客
氏名
生年月日
*
注文
注文日
数量
*
商品
商品名
単価
a:顧客
1:注文
氏名=小泉純一
生年月日=
注文日=03.11.21
数量=3
b:顧客
2:注文
科目名=クレジット
氏名=間尚人
/残高=
生年月日=
-2000円
注文日=03.11.21
数量=1
1:商品
商品名=フライパン
単価=2000円
3:注文
注文日=03.11.21
数量=2
c:顧客
4:注文
氏名=児玉公信
科目名=現金預金
生年月日=
/残高= 50000円
注文日=03.11.21
数量=10
2:商品
商品名= カレーパン
単価=150円
9
5. オブジェクト図
5.2 オブジェクト図(3)
 演習4
次のクラス図に基づいて,オブジェクト図を書いてください
0..1 上司
*
部下
社員
10
問題解決からビジネスモデリングへ
6. 高度な関連
6.1 関連に対する制約
6.2 関連型
6.3 知識レベル
6.4 型についての補足
6.5 型図の演習
11
6. 高度な関連
6.1 関連に対する制約(1)
 関連に対する制約
 許される関連
 短縮意味宣言
{ }制約
演習5
{xor}
{ordered}
書名
0..*
0..*
それぞれのオブジェクト図を書いてください
1
本
路線
{xor}
1
{ordered}
*
駅
雑誌
12
6. 高度な関連
6.1 関連に対する制約(2)
 制約によって曖昧な関係を排除する
演習6
制約{階層}がある/ないで,オブジェクト図
はどうかわりますか
0..1 上司
*
部下
社員
0..1 上司
{階層}
*
部下
社員
13
6. 高度な関連
6.1 関連に対する制約(3)
 制約
 詳細意味宣言
ノート
OCL(Object Constraint Language)
勘定
勘定科目名
/残高
*
仕訳記入
金額
2..*
注釈:
金額の移動の方向をその符号
で表す
取引
取引日
摘要
不変表明:
inv:
self.the仕訳記入.金額->sum
取引にリンクする仕訳記入の金
額の合計は0であること
=0
14
6. 高度な関連
6.1 関連に対する制約(4)
 オブジェクト図を書いてみよう
勘定
勘定科目名
/残高
*
仕訳記入 2..*
取引
取引日
摘要
金額
a:勘定
科目名=旅費交通費
/残高= 8000円
/残高=11000円
b:勘定
科目名=クレジット
/残高= -2000円
0円
-5000円
1:仕訳記入
金額=3000円
1:取引
2:仕訳記入
取引日=2003.11.6
摘要=つくば
金額= -3000円
1:仕訳記入
金額= 5000円
2:取引
c:勘定
科目名=現金預金
/残高= 45000円
50000円
2:仕訳記入
取引日= 2003.11.31
摘要=精算
金額= -5000円
15
6. 高度な関連
6.2 関連型(1)
 関連に属性,操作を持たせる
 オブジェクト図
 もの-こと-もの
学生
履修している
1..25
1..6
氏名
授業科目
科目名
履修している
成績
学生
氏名
成績
1..6
1..1
成績
授業科目
1..25
1..1 科目名
制約:
再履修は不可
16
6. 高度な関連
6.2 関連型(2)
学生
 関連型
氏名
1..6
1
成績
評価
 オブジェクト図
a:学生
旅費交通費
氏名=小泉淳之介
8000円
b:学生
クレジット
氏名=山中真紀子
2000円
-5000円
授業科目
1..25
1 科目名
制約:
再履修は不可
:成績
評価=A
1:授業科目
:成績
科目名=オブジェクト
指向モデリング
多重度も制
約の一種
評価=A
2:授業科目
科目名=情報倫理
c:学生
現金預金
氏名=福田康志
50000円
d:学生
現金預金
氏名=山口淳子
50000円
:成績
評価=B
3:授業科目
:成績
科目名=情報システ
ム概論
評価=C
17
6. 高度な関連
6.2 関連型(3)
 演習7
関連を含んだ簡単な型図を書いてみましょう。
「ものーことーもの」で表される概念構造で,できるだけユニーク
なものを考えてみてください。ロールに気をつけて。
18
6. 高度な関連
6.3 属性型
 属性かどうか決められない概念
型として書いておく
基本型
人
人
人
氏名
*
1
*
氏名
1
文字列
文字列
人の集合
氏名の集合
氏名
生年月日
血液型
身長
体重
19
6. 高度な関連
6.4 知識レベル(1)
 べき集合(power set)
カテゴリ化
書名と本
ジャンル
頭の中にあるオブジェクト
インスタンス:
技術職タイプ
営業職タイプ
○○タイプ,
○○種,
○○名
従業員タイプ
営業職の集合を
意味するメンバ
型 1
従業員タイプの集合
技術職の集合を
意味するメンバ
*
従業員
技術職の
集合
営業職
技術職
営業職の
集合
従業員の集合
20
6. 高度な関連
6.4 知識レベル(2)
 知識レベルの実装
従業員タイプ
1
*
従業員
従業員
従業員タイプ
*
従業員タイプ
+型 1
「クラスによる
タイプコードの置き換え」
技術職タイプ
営業職タイプ
実装
*
従業員
技術職
1
営業職
従業員
タイプ
「サブクラスによる
タイプコードの置き換え」
「State/Strategyによる
タイプコードの置き換え」
「フィールドによる
サブクラスの置き換え」
従業員
概念モデル
技術職
営業職
21
6. 高度な関連
6.5 型についての補足
 ステレオタイプ
 モデル要素の分類
《type》
《interface》
《history》
学生
学生
学生
 事前定義
 新たな分類
《use》
 制約
《include》
 オブジェクトの存在条件
{self.noOfStudents > 10}
inv:
self.the借方->sum(金額)
= self.the貸方->sum(金額)
 コンテキスト
 self:任意のインスタンス
 プロパティ
 モデル要素のプロパティ
 タグ付き値
isXxxxxxx
取引
取引日
摘要
{isAbstract = true}
{abstract}
22