オブジェクト指向の委譲は何を任せる仕組みか
基本情報技術者試験 平成30年度秋期 午前 問49 / システム開発技術 › ソフトウェア方式設計・詳細設計
過去問にチャレンジ
オブジェクト指向における"委譲"に関する説明として,適切なものはどれか。
- ア
あるオブジェクトに対して操作を適用したとき,関連するオブジェクトに対してもその操作が自動的に適用される仕組み
- イ
あるオブジェクトに対する操作をその内部で他のオブジェクトに依頼する仕組み
- ウ
下位のクラスが上位のクラスの属性や操作を引き継ぐ仕組み
- エ
複数のオブジェクトを部分として用いて,新たな一つのオブジェクトを生成する仕組み
会話形式の解説
講師委譲を見分けるには、操作を受けたオブジェクトが処理をどこに任せるかに注目します。
受験者関連するオブジェクトにも操作が自動的に及ぶ説明が、委譲に近いと思いました。
講師その説明は操作の伝搬です。操作が及ぶ範囲を述べていますが、処理を依頼する先は述べていません。
受験者では、操作を受けたオブジェクトが内部で別のオブジェクトに処理を依頼する説明でしょうか。
講師そのとおりです。受けた処理を他のオブジェクトに任せる仕組みが委譲です。
受験者上位クラスの属性や操作を引き継ぐ説明もありますが、これは何が違いますか。
講師それは継承です。下位クラスと上位クラスの関係を述べており、オブジェクト間で処理を依頼する話ではありません。
受験者複数のオブジェクトを部品にして一つを作る説明は、処理を任せることにもつながりそうです。
講師そこでは処理の依頼ではなく、オブジェクトの構成を述べています。これは合成です。
受験者依頼先を述べていれば委譲で、操作の広がり、クラスの引継ぎ、部品の組合せとは区別するのですね。
講師はい。「自動的に及ぶ」「引き継ぐ」「部品として用いる」という表現を見たら、処理の依頼を述べているか確かめると判断しやすくなります。
まとめ
委譲は、操作を受けたオブジェクトが内部で他のオブジェクトに処理を依頼する仕組みです。関連するオブジェクトにも操作が自動的に及ぶ説明は伝搬を表します。上位クラスの属性や操作を引き継ぐのは継承、複数のオブジェクトを部品として組み合わせるのは合成です。
解答・解説
正解はイです
この問題のテーマ
オブジェクト指向の「委譲」を、伝搬・継承・合成と区別できるかを問う問題です。
解き方の考え方
まず、操作を受けたオブジェクトが、その処理をどこに任せるかに注目します。別のオブジェクトに処理を依頼する説明を選び、自動的に操作が及ぶ仕組みや、クラス間の引継ぎ、部品を組み合わせる構造と区別します。
選択肢ごとの解説
- ×ア あるオブジェクトに対して操作を適用したとき,関連するオブジェクトに対してもその操作が自動的に適用される仕組みアの説明では、関連するオブジェクトにも操作が自動的に及びます。これは操作の伝搬を表しており、受けた処理を別のオブジェクトに依頼する委譲とは異なります。
- ○イ あるオブジェクトに対する操作をその内部で他のオブジェクトに依頼する仕組みイの説明では、操作を受けたオブジェクトが内部で他のオブジェクトに処理を依頼します。このように処理を任せる仕組みが委譲なので、適切です。
- ×ウ 下位のクラスが上位のクラスの属性や操作を引き継ぐ仕組みウの説明は、下位クラスが上位クラスの属性や操作を引き継ぐ関係です。これはクラス間の継承であり、オブジェクト間で処理を依頼する仕組みではありません。
- ×エ 複数のオブジェクトを部分として用いて,新たな一つのオブジェクトを生成する仕組みエの説明は、複数のオブジェクトを部品として組み合わせ、一つのオブジェクトを作る構造です。これは合成に当たり、操作の処理を他のオブジェクトに任せることを説明していません。
POINT
- 仕組みを見分けるときは、処理の依頼先を述べているのか、操作が及ぶ範囲を述べているのかを確認します。
- 属性や操作を「引き継ぐ」という表現では、オブジェクト同士ではなくクラスの上下関係に注目します。
- 「部品として用いる」という表現は、処理の流れよりもオブジェクトの構成を示します。
