オブジェクト指向言語Javaにおける継承と委譲に関する記述の
うち、最も不適切なものはどれか。
@ 委譲とは継承関係にないクラスに共通部をくくりだし、
そのクラスのオブジェクトを通して共通部を利用する
プログラミング手法である。
A 共通部を含むプログラムに対しては、共通部を基底
クラスにくくりだし、基底クラスを継承することに
よって冗長なプログラム記述を排除するべきである。
B 継承することによって上位型のすべてのプログラム
記述が下位型に存在することになる。
C すべての上位型のプログラムが継承の対象となるため、
クラス階層は注意して設計しなくてはならない。
D 汎化関係にないクラスを下位型として定義することで
重複する共通部分の排除を行うことは弊害が大きい
ため、継承ではなく委譲を利用するべきである。
@適切である。
委譲 (=デリゲーション) は、あるオブジェクトに依頼されたメッセージの処理を、
他のオブジェクトに委ねることである。
A適切である。ただし、「冗長なプログラム記述を排除するべきである」という
表現が言いすぎの感があるが、最も不適切でもない。
B継承 (=インヘリタンス) は、あるクラスAのフィールドやメソッドをクラスBが
そのまま同様に利用できることである。
上位型のプログラム記述が下位型に存在しないこともある。
C適切である。
D適切である。
汎化は、複数のクラスに共通する部分を一般化すること。
また、汎化の逆の特化は、抽象クラスから下位のクラスに特殊化すること。
「重複する共通部分の排除を行うことは弊害が大きい」とは言い切れないが
最も不適切でもない。
EXCELのマクロのご相談なら ファーストマクロ へ
タグ:オブジェクト指向言語