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

3-3 クラス図の関係
その2
集約
• あるクラスが他のクラスの一部を構成しているような
とき、集約の関係という
• 全体が部分の変数を持っている
会員リスト
全体
集約
会員
部分
依存関係
• 依存関係は2つのモデル要素(クラスなど)間
に存在する利用関係を表現する
• クラス間で依存関係が使用される3つのパ
ターン
1.引数で参照する場合
2.ローカル変数として参照する場合
3.グローバルに参照する場合
1.引数で参照する場合
• クラスAがその保持している操作の引数でクラスBを
受け取っている場合
• 戻り値でも同様
クラスA
+操作(引数1:クラスB)
クラスB
2.ローカル変数として参照する
• クラスAがその保持している操作の中でクラスBを
ローカル変数として使用している場合
クラスA
クラスB
+操作1()
+操作2()
操作1(){
クラスB オブジェクト1;
オブジェクト1,操作2();
・
・
・
}
//クラスBのオブジェクトの作成
//オブジェクト1(クラスB)の操作2の呼び出し
3.グローバルに参照する場合
• クラスBがモデル全体やパッケージ全体から
見えるように宣言されており、クラスAがクラ
スBを参照している場合
クラスA
クラスB
+操作1()
+操作2()
操作1(){
オブジェクト1,操作2(); //オブジェクト1(クラスB)の操作2の呼び出し
・
・
・
}
汎化
• 汎化は、一般的な要素(スーパークラス)と特
定化された要素(サブクラス)の関係を表現す
る
• サブクラスはスーパークラスの性質をすべて
受け継ぎ、さらにサブクラス独自の性質を
持っています
• 表記の仕方が2種類ある
1.シェアード・ターゲット・スタイル
2.セパレート・ターゲット・スタイル
汎化
スーパー
スーパークラス
スーパー
汎化
サブ1
サブ2
・・・
サブ1
サブ2
・・・
省略表記
シェアード・ターゲット・スタイル
セパレート・ターゲット・スタイル
学校の汎化関係の例
学校
義務教育学校
小学校
中学校
任意教育学校
高校
大学
コラム:単一継承、多重継承
• 単一継承:1つのスーパークラスのみと汎化
関係にある
• 多重継承:2つ以上のスーパークラスと汎化
関係にある
• メリット:現実をそのままモデリングできる
• デメリット:属性、操作の衝突が起こる可能性
がある
• ※C++はサポートしているが、Java、
Smalltalkではサポートしていない
多重継承の例
動物
サイズ
属性が
ぶつかる
飛行物
サイズ
多重継承
鳥
抽象クラス
• 汎化の階層を作成したとき、実際のオブジェ
クトを作成する必要がないクラスを作る場合
がある
→オブジェクトを1つも持たないクラスを抽象ク
ラスという
• 抽象クラスはサブクラスをまとめる役割を担う
→抽象クラスは必ずサブクラスを持つ
抽象化クラス
動物
動物
{abstract}
猫
抽象化クラス
犬
馬
猿