オブジェクト指向開発〜静的分析その3/継承

継承について。

メカニズム

他のクラスの属性/操作を借りて来て、自分と合成して1つのインスタンスを生成する仕組み。

目的

継承を利用する局面には、『クラスの汎化』と『クラスの特化』の2つがある。

汎化としての継承

汎化は、複数のクラスの共通概念を抽出して、独立したクラスとして実装すること。

継承の分析

Aという概念がBという概念を引き継いでいる場合を、『is-a関係』という。継承は、is-a関係を実現する際に使う。また、この場合、Bクラスを『基底クラス(スーパークラス)』、Aクラスを『派生クラス(サブクラス)』という。
継承には多重度という概念は無く、必ず明確な上下関係がある。

継承のメリット

多くの類似したクラスが共通の基底クラスとして同じクラス(概念)を持つ事が出来る。分析/設計/実装/テスト/デバッグ/保守など全ての作業が共通化できる(コスト軽減)。
継承によって汎化されている場合、基底クラスへの変更(追加)が全ての派生クラスに反映される。

特化としての継承

特化は、あるクラスを基にして、それを特殊化した派生クラスを作る事。

プログラムレベルでの継承

基になるクラスに手を加える事無く、新しい機能を追加したクラスを手に入れる事が出来る。

カスタマイズの手段としての継承

操作のオーバーライドを利用して、基底クラスのメンバ関数と同名のメンバ関数を派生クラスに実装できる。

継承したクラスの管理

継承階層が増えすぎると管理が難しくなる。ドキュメントを書く際は、対象になるクラスで実装したメンバ関数だけでなく、そのクラスのインスタンスが持つメンバ関数全てを書くべき。

プロフィール

このブログ記事について

このページは、koshigoeが2005年12月12日 21:12に書いたブログ記事です。

ひとつ前のブログ記事は「フィードとカレンダー」です。

次のブログ記事は「ブラウザの挙動確認にselenium」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。