オブジェクト指向アプローチ論 第11回
このページは,2007年前期まで実施されていた科目の補助教材ページです。既に履修し終わった方々
の参考のために公開を継続しています。したがって,内容が古いままのものが残っておりますので注意
して下さい。


※2007年度より実施されている2年生選択科目「オブジェクト指向プログラミングa」のページはここ
 ではありません。「オブジェクト指向プログラミングa」のページはこちらです。


●クラス設計の基礎・インタフェイス型「Javaを学ぶ 第13回 (最終回:2003年5月 )」

【is-a関係とhas-a関係】
 BがAのサブクラスの場合,「B is-a A 」("BはAの一種である")という関係が成立し,このとき,B型のオブジェクトはA型のメンバを継承した。
 クラスを設計しているときによく出てくる,もうひとつのクラス間どうしの関係として,「has-a」があげられる。

【has-a関係】
 「B has-a A」という関係は,文字通り「BはAを持っている」という関係のことで,より具体的に言えば,「B型がA型のメンバを持っている」ということになる。

List 1


【is-a関係とhas-a関係の使い分け】
List 2






【継承の注意点】
●何が何でも継承を使ってバリエーションを得ようとしてはいけない。
List 3


【オブジェクトコンポジション】
●has-a関係をうまく使って,オブジェクトを組み合わせることで,バリエーションを得ることが出来る場合もある。
List 4


【interface】
●複数のスーパークラスを持つサブクラスを作ろうとすると,複数のスーパークラスから継承した実装が衝突してしまうことがある。
 そのため,Javaでは複数のスーパークラスを持つサブクラスを作ることはできないようになっている(多重継承の禁止)。
 →しかし,概念を合成すること自体は便利である。そこで,実装を全く持たない特別な抽象クラスとしてinterface型
  という型を用意している。そして,interface型はいくつでも"継承"できるようになっている。


List 5