1 / 40

クラス図 (1)

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

Download Presentation

クラス図 (1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. クラス図(1) FM12013 山口 亨

  2. クラスとは • 現実に存在する“物体”(オブジェクト)の構造や振る舞いなどに着目して注目し抽象化したもの • クラス図を含むUMLのほとんどの図で使用されている

  3. クラスの表記 クラス名 (ステレオタイプは任意) <<ステレオタイプ>> クラス名 属性1 属性2 属性3 属性のリスト 操作1() 操作2() 操作のリスト

  4. 属性 • クラス内の、知識的な情報 • 属性名以外は省略可能で、以下の形式で記述 従業員 従業員 勤続年数 氏名 年齢 ー勤続年数:int=1 ー氏名:String ー年齢:int 属性名のみ表示 属性名、可視性、型、初期値を表示

  5. 操作 • クラス内の振る舞い情報 • 操作名以外は省略可能で、以下のように記述 商品 商品 +商品名取得():String +商品名設定(商品名:String):void 商品名取得() 商品名設定() 操作名のみ表示 可視性、操作名、引数名、引数の型      戻り値の型の表示

  6. クラス表記のバリエーション • クラスの表記は、クラス名以外は省略可能 商品 ー商品名 ー価格 商品 商品 商品名取得() 商品名設定() 商品名取得() 商品名設定() ー商品名 ー価格 商品 属性非表示 属性、操作名を表示 操作非表示 属性、操作非表示

  7. クラス表記のバリエーション • 表示規則に適合するもののみを表示することができる 商品 ー商品名 … 省略表記 商品名取得() 商品名設定()

  8. 可視性 • 属性・操作に対して設定する、他クラスからの参照できる度合い • 以下の値が設定できる

  9. 可視性の表示 Class3 Class1 Class4 +操作1() #操作2() ー操作3() ~操作4() Class2

  10. クラス図の関係その1 • より良い構造化を行うには、他のクラスとの関係性を表現する必要がある • UMLでは、関連(集約)、依存(実現)、汎化、フローを総称して関係と呼ぶ

  11. 関連 • クラス間に構造的な関係がある場合に使用 受験生 大学 志望校である

  12. 役割(ロール)名 • あるクラスが他のクラスから見た時に、どの様な役割を持つか示すのに使用

  13. 役割(ロール)名 受験生 大学 志望校 受験者 勤務先 教授

  14. 多重度 • 他のクラスから接続される可能性のある関係の数を記述 • 以下のように表記 クラスA クラスA 1 0..*

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

  16. 多重度(例) 受験生A 甲大学 受験生B 乙大学 丙大学 受験生C

  17. 多重度(例) 受験生 大学 志望校である 0..* 1..*

  18. 関連の方向 • 関連の棒線に矢印をつける事で、参照の方向を指定する事が出来る • UML1.XとUML2.Xでは、指定方法が違う

  19. 関連の方向 Object1:Class1 Object2:Class2 Object3:Class3 Object4:Class4 Message1() Message3() Message2() 双方向の呼び出し 片方向の呼び出し

  20. 関連の方向 Class1 Class2 Class1 Class2 双方向の関連(UML 1.X) 片方向の関連(UML 1.X) Class1 Class2 Class1 Class2 双方向の関連(UML 2.X) 片方向の関連(UML 2.X)

  21. UML1.Xの方向表記 AからBへの方向性の指定がある BからAへの方向性の指定がある A B AからBへの方向性の指定がある BからAへの方向性はなし A B

  22. UML2.Xの方向表記 AからBへの方向性は未定義 BからAへの方向性は未定義 A B AからBへの方向性の指定がある BからAへの方向性は未定義 A B AからBへの方向性の指定がある BからAへの方向性の指定がある A B AからBへの方向性の指定がある BからAへの方向性はなし A B AからBへの方向性はなし BからAへの方向性はなし A B

  23. 複数の関係 • 同一クラス間でも、異なる関連があれば、それぞれ複数の関連を引ける 第1志望である 受験生 大学 第2志望である

  24. クラス図の関係その2 • 次は、集約、依存関係、汎化、抽象クラスについて説明します

  25. 集約 • あるクラスに対して、その一部を構成しているクラスを表す時に使用 会員リスト 会員 ー会員ID

  26. 依存関係 • 2つのモデル要素間の利用関係を表現 • 依存関係は以下の3つの場合に使用 1.引数で参照する場合 2.ローカル変数として参照する場合 3.グローバルに参照する場合

  27. 引数で参照する場合 • クラスAの操作で引数の型にクラスBを使っている場合 • クラスAの操作の戻り値型にクラスBを使っている場合 クラスA クラスB +操作1(引数1:クラスB)

  28. ローカル変数として参照する場合 • クラスA内のローカル変数として、クラスBが宣言されている場合 クラスA クラスB +操作1()

  29. グローバルに参照する場合 • クラスAの操作から、グローバルに宣言されているクラスBを参照している場合 クラスA クラスB +操作1() +操作2()

  30. 汎化 • 一般的な要素(スーパークラス)と特定化された要素(サブクラス)の関係を表現する手法 • 複数のサブクラスがある場合、”シェアード・ターゲット・スタイル”と”セパレート・ターゲット・スタイル”の2種類の表記がある

  31. 汎化の表記 スーパー スーパー サブ1 サブ2 ・・・ サブ1 サブ2 ・・・ シェアード・ターゲット・スタイル セパレート・ターゲット・スタイル

  32. 汎化の例 学校 義務教育学校 任意教育学校 小学校 中学校 高校 大学

  33. コラム(単一継承、多重継承) 国 動物 飛行物 日本 鳥 単一継承 多重継承

  34. 衝突の例 動物 飛行物 サイズ サイズ 鳥 多重継承により、サイズ属性が重複する

  35. 抽象クラス • オブジェクトを1つも持つことが無いクラス • サブクラスをまとめる意味で作成され、必ずサブクラスを持つ

  36. 抽象クラスの表記 動物 {abstract} 猫 犬 馬 猿

  37. 問題 • 同一パッケージ内から参照できる操作を持っているクラスは次のうちどれ? クラスA クラスB クラスC クラスD +操作1() ー操作2() ~操作3() #操作4()

  38. 問題 • 関連名と役割名(関連端名)は? 人 コンビニ 売買関係 お店 利用客

  39. 問題 • この場合の多重度は? 人 家 0..* 1..*

  40. 質問

More Related