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