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

47070
オブジェクト指向モデリング
[7]
2001年11月27日
質問カード
 質問
Q. UML検定だとどのレベルなの
?
 UMLの文法だけでなく,モデリングを目的としています
Q. 型とクラスの違いがいまいちわからない
83ページ
 型(タイプ)
 実装に依存しない抽象定義
 概念レベル(多重分類,動的分類)
 操作と属性を持つ…設計概念
<<type>>
A
 クラス(実装クラス)
 型の実装を定義
 実装レベル(単一分類,静的分類)…言語依存
 メソッドとデータを持つ…プログラム要素
<<implement class>>
A
2
質問カード
 質問
Q. (モデルのよさの)評価方法がいまいちわからない
 結合度,凝集度(正規形)
 概念境界の良さ(何が同じで何が違うか)
 概念間の関係の良さ(役割)
 一般性,耐変更性
Q.参考情報(サイト)を教えて
 Using UML http://www.dcs.ed.ac.uk/home/pxs/book/
 OMG http://www.omg.org/
 日本ラショナル社 http://www.rational.co.jp/uml/
 JPLoP http://www.kame-net.com/jplop/
 アナリシスパターン
3
質問カード
 要望
 講義資料を事前にアップして(4)
 テキストのページと対応させて
 実装レベルの話も入れて(4)
 UMLの具体例を多くして(4)
 演習を増やして(4)
 解答例もつけて
 授業中の演習時間を長くとって(2)
 中間レポートを課しては
 教科書がないとわからない
4
質問カード
 苦情・意見
 資料の字が小さくて見にくいことがある
→大きくします
→事前にアップします
 授業が淡々としていてメリハリがない(2)
→ポイントを絞ります
 感想
 今のところわかりやすい
 教科書に異論をふっかけるところがよい
5
宿題の解答例
 6親等までを扱うための型モデルを書いてください
 養子縁組はないものとする
 離婚,再婚はないものとする
配偶者
兄弟
子
兄弟
親
兄弟
叔父叔母
子
親
親
従兄弟
親 配偶者
2
0..1
子
0..1
はとこ *
人
従兄弟 *
叔父叔母 *
0..*
子
配偶者
self
子
兄弟 *
*
<<対称>>
/兄弟関係
<<対称>>
/叔父甥関係
<<対称>>
/従兄弟関係
<<対称>>
/はとこ関係
*
*
inv:
self.親=self.兄弟.親 and
self.親.親->intersection(self.従兄弟.親.親)->notEmpty and
self.親.親.親->intersection(self.はとこ.親.親.親)->notEmpty and
self.子.親->includes(self, self.配偶者) and
self.子.子.親->includes(self.子, self.子.配偶者) and
self.子.子.子.親->includes(self.子.子, self.子.子.配偶者)
:
6
宿題の解答例
 6親等までを扱うための型モデルを書いてください
 養子縁組はないものとする
 離婚,再婚はないものとする
子
配偶者
親
先
<<対称>>
/配偶関係
親 配偶者
2
*
<<対称>>
1
元
/親等関係
親等数
人
*
n
n
先
先
n-1 n-1
0..1
0..1
先1
n
先
*子
元
self
inv:
self.~元(親等関係)->select(p|p.親等数=0).先=self.配偶者 and
Integer.allInstances->select(n|0<n<7)->forAll(n |
self.~元(親等関係)->select(p|p.親等数=n).先=
self.~元(親等関係)->select(p|p.親等数=n-1).先.子)
->union(self.~元(親等関係)->select(p|p.親等数=n-1).先.親)
->union(self.~元(親等関係)->select(p|p.親等数=n).先.配偶者)
)
7
宿題
 典型的な解答
 関係は関係としてとらえる
 相対性,役割
0..*
配偶者
0..*
本人
0..*
兄弟
2..2
祖父母
2..2
0..*
親
2..2
2..2
叔父母
 必要以上の複雑性を持ち込まない
 親の親,親の兄弟
文化人類学的
な意味はあるか
も
子
0..*
2..2
0..*
 6親等に男女の区別は必要か
 導出関連は最小限に
1..1
弟
兄
弟
息子
父
兄
男
姉
妹
父
娘
息子
母
妹
娘
女
姪
甥
叔父
母
姉
夫
叔父
甥
叔母
妻
姪
叔母
8
オブジェクト指向モデリング
前回 静的モデル2
6.1 概念レベルでの特殊な表現
6.2 リファクタリング
6.3 オブジェクト図
6.4 関連についての補足
9
静的モデル2
制約
 型(クラス)図も制約がなければただの線図
 制約に従ったオブジェクト群
 ビジネスルールとしての制約
 {制約}
 OCL
本
0..*
0..*
1
インスタンス図
(オブジェクト図)
を書いてみよう
著作
{xor}
1
雑誌
ライン
{ordered}
*
プロセス
実装はどうなる?
10
静的モデル2
型(クラス)図の理解
 オブジェクト図で理解する
勘定
勘定科目名
/残高
*
記入
2..*
金額
借方
貸方
inv:
self.the借方->sum(金額)
= self.the貸方->sum(金額)
取引
取引日
摘要
a:勘定
旅費交通費
8000円
b:勘定
クレジット
2000円
1:貸方
3000円
2:借方
1:取引
2001.11.6
つくば
3000円
1:貸方
5000円
c:勘定
現金預金
50000円
45000円
2:借方
2:取引
2001.11.31
精算
5000円
11
オブジェクト指向モデリング
第7回 静的モデル3
7.1 関連型
7.2 型についての補足
7.3 依存性
7.4 パッケージ
7.5 知識レベル
12
静的モデル3
82ページ
7.1 関連型
 関連に属性,操作を持たせる
 オブジェクト図
 もの-こと-もの
学生
履修している
1..*
6..*
授業科目
履修している
成績
/履修している
1..*
6..*
学生
6..*
1..1
成績
成績
授業科目
1..*
1..1
制約:
再履修は不可
13
静的モデル3
82ページ
7.1 関連型
 関連型
/履修している
1..*
6..*
学生
 オブジェクト図
6..*
1..1
成績
成績
授業科目
1..*
1..1
制約:
再履修は不可
a:学生
旅費交通費
小泉純二郎
8000円
:成績
A
b:学生
クレジット
山中真紀子
2000円
-5000円
:成績
A
B
現金預金
ビソラディソ
50000円
情報倫理
3:授業科目
:成績
c:学生
オブジェクト指
向モデリング
多重度も制
約の一種
2:授業科目
:成績
c:学生
現金預金
小丸
50000円
1:授業科目
情報システム概
論
C
14
静的モデル3
7.2 型についての補足
 ステレオタイプ
83ページ
パネル
 モデル要素の分類
<<type>>
<<interface>>
<<history>>
学生
学生
学生
 事前定義
 新たな分類
 制約
<<use>>
<<include>>
79ページ
 オブジェクトの存在条件
{self.noOfStudents > 10}
inv:
self.the借方->sum(金額)
= self.the貸方->sum(金額)
 コンテキスト
 self:任意のインスタンス
 プロパティ
87ページ パネル
 モデル要素のプロパティ
 タグ付き値
isXxxxxxx
取引
取引日
摘要
{isAbstract = true}
{abstract}
15
静的モデル3
89ページ
7.3 依存性
シグニチャだけ(デー
タや実装は持たない)の
クラス
ステレオタイプ
 実現の矢印
<<implement class>>
<<interface>>
A
B
<<implement class>>
<<type>>
A
A
 抽象クラス
クラスBの拡張
 依存性の矢印
操作と属性を持つ設
計概念
(少なくとも一部は)実装を
A
{abstract}
持たないクラス
B
プロパティ
 クラスの依存関係(オブジェクトの関係ではない)
 メモ
A
B
16
静的モデル3
89,90ページ
7.4 パッケージ
 モデル要素の集まり
 一方向の可視性
ユーザインタフェース
ユーザインタフェース
アプリケーション
あ
アプリケーション(機能)
ドメイン
ドメイン(概念の世界)
永続化
A
*
B
永続化
α
17
静的モデル3
教科書外
7.5 知識レベル
 べき集合(power set)
 著書と本
 ジャンル
 ルールの記述
従業員タイプ
型
1
インスタンス:
技術職タイプ
営業職タイプ
営業職の集合を
意味するメンバ
従業員タイプの集合
技術職の集合を
意味するメンバ
*
従業員
技術職の
集合
営業職
技術職
営業職の
集合
従業員の
集合
18
静的モデル3
教科書外
7.5 知識レベル
 知識レベルの実装
従業員タイプ
1
*
従業員
従業員
従業員タイプ
*
従業員タイプ
+型 1
「クラスによる
タイプコードの置き換え」
技術職タイプ
営業職タイプ
実装
*
従業員
技術職
1
営業職
概念モデル
従業員
タイプ
「サブクラスによる
タイプコードの置き換え」
「State/Strategyによる
タイプコードの置き換え」
「フィールドによる
サブクラスの置き換え」
従業員
技術職
営業職
19
静的モデル3
演習問題
 次の型図に対応するオブジェクト図を書いてください。
 貸出のシナリオを考えて...
 インスタンスをでっち上げて...
制約:
「未成年会員」に「成
人向き」を貸し出せない
インスタンス:
未成年会員
成年会員
ジャンル
インスタンス:
アニメ,邦画,
洋画,成人向き
ジャンル名
型
会員型
*
貸出条件
*
*
ビデオタイトル
単価
* 作品名
型
主演
{不完全}
*
会員
氏名
住所
*
*
貸出
貸出日
/返却予定日
/代金
*
*
新作
ビデオ
ビデオNo.
20
静的モデル3
演習問題
 シナリオ
未成年会員である児玉和香子は,2001年11月6日,アニメ「となりのトトロ」を7泊
借りていった。借りていったビデオはNo.2013であった。
成年:貸出条件
成年:会員型
単価:200円/泊
成年:貸出条件
単価:100円/泊
未成年:会員型
未成年:貸出条件
単価:380円/7泊
:会員
:会員
氏名:高橋尚子
住所:東京都大田区
氏名:山田太郎
住所:横浜市港北区
:会員
:会員
氏名:児玉和香子
住所:川崎市中原区
氏名:児玉和香子
住所:川崎市中原区
:ジャンル
ジャンル名:成人向け
:ジャンル
ジャンル名:アニメ
:ビデオタイトル(新作)
作品名:見ちゃだめ
:ビデオタイトル
主演
作品名:となりのトトロ
主演
:ビデオ
:ビデオ
:ビデオ ビデオNo.:2016
:ビデオ ビデオNo.:2015
ビデオNo.:2014
ビデオNo.:2013
21
静的モデル3
演習問題
 シナリオ
未成年会員である児玉和香子は,2001年11月6日,アニメ「となりのトトロ」を7泊
借りていった。借りていったビデオはNo.2013であった。
成年:貸出条件
成年:会員型
単価:200円/泊
成年:貸出条件
単価:100円/泊
未成年:会員型
未成年:貸出条件
単価:380円/7泊
:会員
:会員
氏名:高橋尚子
住所:東京都大田区
氏名:山田太郎
住所:横浜市港北区
:会員
:会員
氏名:児玉和香子
住所:川崎市中原区
氏名:児玉和香子
住所:川崎市中原区
:貸出
貸出日:2001年11月6日
返却予定日:
返却予定日:2001年11月13日
料金:
料金:380円
:ジャンル
ジャンル名:成人向け
:ジャンル
ジャンル名:アニメ
:ビデオタイトル(新作)
作品名:見ちゃだめ
:ビデオタイトル
主演
作品名:となりのトトロ
主演
:ビデオ
:ビデオ
:ビデオ ビデオNo.:2016
:ビデオ ビデオNo.:2015
ビデオNo.:2014
ビデオNo.:2013
22