クラス図 (1)
DESCRIPTION
クラス図 (1). FM12013 山口 亨. クラスとは. 現実に存在する“物体”(オブジェクト)の構造や 振る舞い などに着目して注目し抽象化したもの クラス図を含む UML のほとんどの図で使用されている. クラス の表記. クラス名 (ステレオタイプは任意 ). > クラス 名. 属性1 属性 2 属性3. 属性のリスト. 操作 1 () 操作 2 (). 操作のリスト. 属性. クラス内の、知識的な情報 属性名以外は省略可能で、以下の形式で記述. 従業員. 従業員. 勤続 年数 氏名 年齢. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/1.jpg)
クラス図(1)
FM12013 山口 亨
![Page 2: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/2.jpg)
クラスとは• 現実に存在する“物体”(オブジェクト)
の構造や振る舞いなどに着目して注目し抽象化したもの
• クラス図を含む UML のほとんどの図で使用されている
![Page 3: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/3.jpg)
クラスの表記
属性1属性2属性3
操作 1 ()操作 2 ()
<< ステレオタイプ>>
クラス名
属性のリスト
操作のリスト
クラス名(ステレオタイプは任意)
![Page 4: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/4.jpg)
属性• クラス内の、知識的な情報• 属性名以外は省略可能で、以下の形式で記述
可視性 属性名 : 型表現 = 初期値
ー 勤続年数 : int = 1
従業員勤続年数氏名年齢
属性名のみ表示
従業員ー勤続年数: int=1ー氏名: Stringー年齢 :int
属性名、可視性、型、初期値を表示
![Page 5: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/5.jpg)
操作• クラス内の振る舞い情報• 操作名以外は省略可能で、以下のように記述
可視性 操作名 (引数名 : 引数の型)
: 戻り値
+ 商品名設定 (商品名 : String ) : void
商品
商品名取得()商品名設定()操作名のみ表示
商品
+商品名取得(): String+商品名設定(商品名: String ): void
可視性、操作名、引数名、引数の型 戻り値の型の表示
![Page 6: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/6.jpg)
クラス表記のバリエーション• クラスの表記は、クラス名以外は省略可
能商品
商品名取得()商品名設定()属性、操作名を表示
ー商品名ー価格 商品
商品名取得()商品名設定()属性非表示
商品ー商品名ー価格
操作非表示
商品
属性、操作非表示
![Page 7: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/7.jpg)
クラス表記のバリエーション• 表示規則に適合するもののみを表示する
ことができる
商品
商品名取得()商品名設定()
ー商品名… 省略表記
![Page 8: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/8.jpg)
可視性• 属性・操作に対して設定する、他クラスか
らの参照できる度合い• 以下の値が設定できる
記号 名称 参照度合
+ public すべてから
ー private 自分からのみ
# protected 自分とサブクラスからのみ
~ package 自分と同パッケージ内のクラスからのみ
![Page 9: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/9.jpg)
可視性の表示
Class3
Class1
+操作1()#操作2()ー操作3()~操作4()
Class2
Class4
![Page 10: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/10.jpg)
クラス図の関係その1• より良い構造化を行うには、他のクラス
との関係性を表現する必要がある• UML では、関連(集約)、依存(実現)、
汎化、フローを総称して関係と呼ぶ
![Page 11: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/11.jpg)
関連• クラス間に構造的な関係がある場合に使
用
受験生 大学志望校である
![Page 12: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/12.jpg)
役割(ロール)名• あるクラスが他のクラスから見た時に、
どの様な役割を持つか示すのに使用
![Page 13: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/13.jpg)
役割(ロール)名
受験生 大学受験者 志望校
教授
勤務先
![Page 14: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/14.jpg)
多重度• 他のクラスから接続される可能性のある
関係の数を記述• 以下のように表記
クラスA
クラスA1 0..*
![Page 15: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/15.jpg)
多重度
表記 接続される可能性のある数0..1 0 か 11 1 のみ
0..* または *
0 以上
1..* 1 以上3..10 3 ~ 10
• 多重度にはこのような表記が可能
![Page 16: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/16.jpg)
多重度(例)
受験生A
受験生B
受験生C
甲大学
乙大学
丙大学
![Page 17: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/17.jpg)
多重度(例)
受験生 大学志望校である
0 .. * 1..*
![Page 18: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/18.jpg)
関連の方向• 関連の棒線に矢印をつける事で、参照の
方向を指定する事が出来る• UML1.X と UML2.X では、指定方法が違う
![Page 19: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/19.jpg)
関連の方向
Object1 :Class1
Object2 :Class2
Message1 ()
Message2 ()
Object3 :Class3
Object4 :Class4
Message3 ()
双方向の呼び出し 片方向の呼び出し
![Page 20: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/20.jpg)
関連の方向
Class1
Class2
双方向の関連( UML 1.X )
Class1
Class2
双方向の関連( UML 2.X )
Class1
Class2
片方向の関連( UML 1.X )
Class1
Class2
片方向の関連( UML 2.X )
![Page 21: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/21.jpg)
UML1.X の方向表記
BAAからBへの方向性の指定があるBからAへの方向性の指定がある
BAAからBへの方向性の指定があるBからAへの方向性はなし
![Page 22: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/22.jpg)
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)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/23.jpg)
複数の関係• 同一クラス間でも、異なる関連があれば、
それぞれ複数の関連を引ける
受験生 大学第 1 志望である
第 2 志望である
![Page 24: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/24.jpg)
クラス図の関係その2• 次は、集約、依存関係、汎化、抽象クラ
スについて説明します
![Page 25: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/25.jpg)
集約• あるクラスに対して、その一部を構成して
いるクラスを表す時に使用
会員リスト
会員ー会員 ID
![Page 26: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/26.jpg)
依存関係• 2つのモデル要素間の利用関係を表現• 依存関係は以下の 3 つの場合に使用
1.引数で参照する場合2.ローカル変数として参照する場合3.グローバルに参照する場合
![Page 27: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/27.jpg)
引数で参照する場合• クラス A の操作で引数の型にクラス B を
使っている場合• クラス A の操作の戻り値型にクラス B を
使っている場合
クラスA
+操作1(引数1:クラス B )
クラスB
![Page 28: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/28.jpg)
ローカル変数として参照する場合
• クラス A 内のローカル変数として、クラス B が宣言されている場合
クラスA
+操作1()
クラスB
![Page 29: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/29.jpg)
グローバルに参照する場合• クラス A の操作から、グローバルに宣言
されているクラス B を参照している場合
クラスA
+操作1()
クラスB
+操作2()
![Page 30: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/30.jpg)
汎化• 一般的な要素(スーパークラス)と特定
化された要素(サブクラス)の関係を表現する手法
• 複数のサブクラスがある場合、”シェアード・ターゲット・スタイル”と”セパレート・ターゲット・スタイル”の2種類の表記がある
![Page 31: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/31.jpg)
汎化の表記スーパー
サブ1
サブ2
・・・
サブ1
サブ2
・・・
スーパー
シェアード・ターゲット・スタイル セパレート・ターゲット・スタイル
![Page 32: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/32.jpg)
汎化の例学校
義務教育学校 任意教育学校
小学校 中学校 高校 大学
![Page 33: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/33.jpg)
コラム (単一継承、多重継承)
日本
国
鳥
動物 飛行物
単一継承 多重継承
![Page 34: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/34.jpg)
衝突の例
鳥
動物 飛行物サイズ サイズ
多重継承により、サイズ属性が重複する
![Page 35: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/35.jpg)
抽象クラス• オブジェクトを1つも持つことが無いク
ラス• サブクラスをまとめる意味で作成され、
必ずサブクラスを持つ
![Page 36: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/36.jpg)
抽象クラスの表記
猫 犬
動物
馬 猿
{ abstract}
![Page 37: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/37.jpg)
問題• 同一パッケージ内から参照できる操作を
持っているクラスは次のうちどれ?
クラスA
+操作1()
クラスB
ー操作2()
クラスC
~操作3()
クラスD
#操作4()
![Page 38: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/38.jpg)
問題• 関連名と役割名(関連端名)は?
コンビニ
人 売買関係 お店利用客
![Page 39: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/39.jpg)
問題• この場合の多重度は?
家人
0..*
1 .. *
![Page 40: クラス図 (1)](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681309d550346895d968e9e/html5/thumbnails/40.jpg)
質問