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