3-3 クラス図の関係その2

クラス図(1) 後半
FM13010 村上 太一
3-3 クラス図の関係その2
集約について
• 関連がある2つのクラス間に全体と部分の関係が成り立つとき
に使用する。
• 例 「企業 は 社員 を持っている 」
企業
全体
集約
社員
部分
3-3 クラス図の関係その2
依存関係について
• 2つのモデル要素間に存在する利用関係を表現する。
• クラス間で使用する場合は以下の3つである。
① 引数で参照する場合
② ローカル変数で参照する場合
③ グローバルに参照する場合
3-3 クラス図の関係その2
依存関係について
① 引数で参照する場合
• クラスAがその保持している操作の引数でクラスBを受け取っ
ている場合
クラスA
+操作1(引数1:クラスB)
クラスB
3-3 クラス図の関係その2
依存関係について
②ローカル変数で参照する場合
• クラスAがその保持している操作の中でクラスBをローカル変
数として使用した場合
クラスA
クラスB
+操作1()
操作1(){
クラスB オブジェクト;//クラスBのオブジェクトの作成
オブジェクト1.操作2;//オブジェクト1(クラスB)の操作2の呼び出し
・
}
3-3 クラス図の関係その2
依存関係について
③グローバルに参照する場合
• クラスBがモデル全体等から見えるように宣言され、クラスAが
クラスBを参照している場合
クラスA
クラスB
+操作1()
+操作2()
操作1(){
オブジェクト1.操作2();//オブジェクト1(クラスB)の操作2の呼び出し
・
・
}
3-3 クラス図の関係その2
汎化について
• 一般的な要素(スーパークラス)と特定化された要素(サブクラ
ス)を表現する。
• サブクラスはスーパークラスの性質をすべて受け継ぎ、さらに
独自の性質を持つ。
3-3 クラス図の関係その2
汎化について
スーパークラス
スーパークラス
サブ1
サブ1
サブ2
サブ2
・・・
シェアード・ターゲット・スタイル
・・・
セパレート・ターゲット・スタイル
3-3 クラス図の関係その2
汎化について
乗り物
スーパークラス
汎化
車
乗用車
飛行機
バス
旅客機
ヘリ
3-3 クラス図の関係その2
抽象クラスについて
• 抽象クラスはオブジェクトを1つも持たない。
• サブクラスをまとめる意味で作成する為、抽象クラスは必ずサブ
クラスを持つ。
乗り物
乗り物
車
{abstract}
飛行機
3-4 クラスその2 ∽(アドバンス)
クラス名(∽アドバンス)について
• クラスにあるパッケージに属する場合には、クラスを表示する際
に、パッケージ名をクラス名の前に修飾することができます。
パッケージ名
学校
生徒
クラス名
学校: :生徒
3-4 クラスその2 ∽(アドバンス)
クラス名(∽アドバンス)について
• クラスの属性は下記の形式で多重度およびプロパティ文字列を
表記することができる。
• 例・・・学生のクラス属性
ステレオタイプ
可視性 名前 : 型表現 [多重度] =
―
学籍番号
int
初期値
[1]
生徒
-学年 : int[1] = 1
-学籍番号 : int[1] {unique}
{プロパティ文字列}
{unique}
3-4 クラスその2 ∽(アドバンス)
操作(∽アドバンス)について
• クラスの操作は以下の形式で引数の入出力種別、引数のデフォ
ルト値、プロパティ文字列を表記できる。
• 例・・・商品のクラス操作
ステレオタイプ 可視性 名前 (入出力種別 引数名 : 型 デフォルト値) : 戻り値型{プロパティ文字列}
≪accessor≫
+
生徒名設定(
in
生徒名 : String デフォルト生徒):
void
生徒
≪accessor≫+生徒名取得():String{concurrency=sequential}
≪accessor≫+生徒名設定(in 生徒名:String=デフォルト生徒):void
3-4 クラスその2 ∽(アドバンス)
タグ付値、メタ属性(∽アドバンス)
• タグ付値をUMLモデル要素に付けることにより、UMLのモデル要
素に情報を付加することができる。
• タグ付値はクラスのみの情報を表現する。
• 例・・・乗り物クラスを用いてのタグ付値の表記
乗り物
{abstract,
作成者=村上太一,
作成日=2013/5/8,
ステータス=分析}
3-4 クラスその2 ∽(アドバンス)
派生属性(∽アドバンス)
• 派生属性は、他の属性などから計算できる属性である。
• 例・・・「学校」クラスの「創立年数」は「開校年月日」と現在の日
付から計算できるので、派生属性といえる
派生属性
学校
開校年月日
/創立年数
3-4 クラスその2 ∽(アドバンス)
派生関連(∽アドバンス)
• 派生関連は、派生属性と同様に、他の関連からたどることがで
きる関連である。
• 例・・・「祖父」クラスは「父」の関連を使うことで「祖父」から見て
「私」は子供の子供であるといえる。
二重の経路で、関連が引かれたので「孫である」は派生関連と
なる。
祖父
子供である
父
子供である
/孫である(派生関連)
私