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} 猫 抽象化クラス 犬 馬 猿
© Copyright 2024 ExpyDoc