クラス図 (1)

40
クククク(1) FM12013 クク

Upload: hanna-delgado

Post on 31-Dec-2015

40 views

Category:

Documents


3 download

DESCRIPTION

クラス図 (1). FM12013  山口 亨. クラスとは. 現実に存在する“物体”(オブジェクト)の構造や 振る舞い などに着目して注目し抽象化したもの クラス図を含む UML のほとんどの図で使用されている. クラス の表記. クラス名 (ステレオタイプは任意 ). > クラス 名. 属性1 属性 2 属性3. 属性のリスト. 操作 1 () 操作 2 (). 操作のリスト. 属性. クラス内の、知識的な情報 属性名以外は省略可能で、以下の形式で記述. 従業員. 従業員. 勤続 年数 氏名 年齢. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: クラス図 (1)

クラス図(1)

FM12013  山口 亨

Page 2: クラス図 (1)

クラスとは• 現実に存在する“物体”(オブジェクト)

の構造や振る舞いなどに着目して注目し抽象化したもの

• クラス図を含む UML のほとんどの図で使用されている

Page 3: クラス図 (1)

クラスの表記

属性1属性2属性3

操作 1 ()操作 2 ()

<< ステレオタイプ>>

クラス名

属性のリスト

操作のリスト

クラス名(ステレオタイプは任意)

Page 4: クラス図 (1)

属性• クラス内の、知識的な情報• 属性名以外は省略可能で、以下の形式で記述

可視性 属性名 : 型表現 = 初期値

ー 勤続年数 : int = 1

従業員勤続年数氏名年齢

属性名のみ表示

従業員ー勤続年数: int=1ー氏名: Stringー年齢 :int

属性名、可視性、型、初期値を表示

Page 5: クラス図 (1)

操作• クラス内の振る舞い情報• 操作名以外は省略可能で、以下のように記述

可視性 操作名 (引数名 : 引数の型)

: 戻り値

+ 商品名設定 (商品名 : String ) : void

商品

商品名取得()商品名設定()操作名のみ表示

商品

+商品名取得(): String+商品名設定(商品名: String ): void

可視性、操作名、引数名、引数の型     戻り値の型の表示

Page 6: クラス図 (1)

クラス表記のバリエーション• クラスの表記は、クラス名以外は省略可

能商品

商品名取得()商品名設定()属性、操作名を表示

ー商品名ー価格 商品

商品名取得()商品名設定()属性非表示

商品ー商品名ー価格

操作非表示

商品

属性、操作非表示

Page 7: クラス図 (1)

クラス表記のバリエーション• 表示規則に適合するもののみを表示する

ことができる

商品

商品名取得()商品名設定()

ー商品名… 省略表記

Page 8: クラス図 (1)

可視性• 属性・操作に対して設定する、他クラスか

らの参照できる度合い• 以下の値が設定できる

記号 名称 参照度合

+ public すべてから

ー private 自分からのみ

# protected 自分とサブクラスからのみ

~ package 自分と同パッケージ内のクラスからのみ

Page 9: クラス図 (1)

可視性の表示

Class3

Class1

+操作1()#操作2()ー操作3()~操作4()

Class2

Class4

Page 10: クラス図 (1)

クラス図の関係その1• より良い構造化を行うには、他のクラス

との関係性を表現する必要がある• UML では、関連(集約)、依存(実現)、

汎化、フローを総称して関係と呼ぶ

Page 11: クラス図 (1)

関連• クラス間に構造的な関係がある場合に使

受験生 大学志望校である

Page 12: クラス図 (1)

役割(ロール)名• あるクラスが他のクラスから見た時に、

どの様な役割を持つか示すのに使用

Page 13: クラス図 (1)

役割(ロール)名

受験生 大学受験者 志望校

教授

勤務先

Page 14: クラス図 (1)

多重度• 他のクラスから接続される可能性のある

関係の数を記述• 以下のように表記

クラスA

クラスA1 0..*

Page 15: クラス図 (1)

多重度

表記 接続される可能性のある数0..1 0 か 11 1 のみ

0..* または *

0 以上

1..* 1 以上3..10 3 ~ 10

• 多重度にはこのような表記が可能

Page 16: クラス図 (1)

多重度(例)

受験生A

受験生B

受験生C

甲大学

乙大学

丙大学

Page 17: クラス図 (1)

多重度(例)

受験生 大学志望校である

0 .. * 1..*

Page 18: クラス図 (1)

関連の方向• 関連の棒線に矢印をつける事で、参照の

方向を指定する事が出来る• UML1.X と UML2.X では、指定方法が違う

Page 19: クラス図 (1)

関連の方向

Object1 :Class1

Object2 :Class2

Message1 ()

Message2 ()

Object3 :Class3

Object4 :Class4

Message3 ()

双方向の呼び出し 片方向の呼び出し

Page 20: クラス図 (1)

関連の方向

Class1

Class2

双方向の関連( UML 1.X )

Class1

Class2

双方向の関連( UML 2.X )

Class1

Class2

片方向の関連( UML 1.X )

Class1

Class2

片方向の関連( UML 2.X )

Page 21: クラス図 (1)

UML1.X の方向表記

BAAからBへの方向性の指定があるBからAへの方向性の指定がある

BAAからBへの方向性の指定があるBからAへの方向性はなし

Page 22: クラス図 (1)

UML2.X の方向表記BA

AからBへの方向性は未定義BからAへの方向性は未定義

BAAからBへの方向性の指定があるBからAへの方向性は未定義

BAAからBへの方向性の指定があるBからAへの方向性の指定がある

BAAからBへの方向性の指定があるBからAへの方向性はなし

BAAからBへの方向性はなしBからAへの方向性はなし

Page 23: クラス図 (1)

複数の関係• 同一クラス間でも、異なる関連があれば、

それぞれ複数の関連を引ける

受験生 大学第 1 志望である

第 2 志望である

Page 24: クラス図 (1)

クラス図の関係その2• 次は、集約、依存関係、汎化、抽象クラ

スについて説明します

Page 25: クラス図 (1)

集約• あるクラスに対して、その一部を構成して

いるクラスを表す時に使用

会員リスト

会員ー会員 ID

Page 26: クラス図 (1)

依存関係• 2つのモデル要素間の利用関係を表現• 依存関係は以下の 3 つの場合に使用

1.引数で参照する場合2.ローカル変数として参照する場合3.グローバルに参照する場合

Page 27: クラス図 (1)

引数で参照する場合• クラス A の操作で引数の型にクラス B を

使っている場合• クラス A の操作の戻り値型にクラス B を

使っている場合

クラスA

+操作1(引数1:クラス B )

クラスB

Page 28: クラス図 (1)

ローカル変数として参照する場合

• クラス A 内のローカル変数として、クラス B が宣言されている場合

クラスA

+操作1()

クラスB

Page 29: クラス図 (1)

グローバルに参照する場合• クラス A の操作から、グローバルに宣言

されているクラス B を参照している場合

クラスA

+操作1()

クラスB

+操作2()

Page 30: クラス図 (1)

汎化• 一般的な要素(スーパークラス)と特定

化された要素(サブクラス)の関係を表現する手法

• 複数のサブクラスがある場合、”シェアード・ターゲット・スタイル”と”セパレート・ターゲット・スタイル”の2種類の表記がある

Page 31: クラス図 (1)

汎化の表記スーパー

サブ1

サブ2

・・・

サブ1

サブ2

・・・

スーパー

シェアード・ターゲット・スタイル セパレート・ターゲット・スタイル

Page 32: クラス図 (1)

汎化の例学校

義務教育学校 任意教育学校

小学校 中学校 高校 大学

Page 33: クラス図 (1)

コラム (単一継承、多重継承)

日本

動物 飛行物

単一継承 多重継承

Page 34: クラス図 (1)

衝突の例

動物 飛行物サイズ サイズ

多重継承により、サイズ属性が重複する

Page 35: クラス図 (1)

抽象クラス• オブジェクトを1つも持つことが無いク

ラス• サブクラスをまとめる意味で作成され、

必ずサブクラスを持つ

Page 36: クラス図 (1)

抽象クラスの表記

猫 犬

動物

馬 猿

{ abstract}

Page 37: クラス図 (1)

問題• 同一パッケージ内から参照できる操作を

持っているクラスは次のうちどれ?

クラスA

+操作1()

クラスB

ー操作2()

クラスC

~操作3()

クラスD

#操作4()

Page 38: クラス図 (1)

問題• 関連名と役割名(関連端名)は?

コンビニ

人 売買関係 お店利用客

Page 39: クラス図 (1)

問題• この場合の多重度は?

家人

0..*

1 .. *

Page 40: クラス図 (1)

質問