IPA過去問ドリル

令和4年度 春期 システムアーキテクト試験 午前Ⅱ 問5

テクノロジ/開発技術

デザインパターンの中のストラテジパターンを用いて,帳票出力のクラスを図のとおりに設計した。適切な説明はどれか。 〔クラス図の概要〕コンテキストクラスは,帳票出力ストラテジ抽象クラス(操作:帳票出力())を集約(コンテキストは抽象クラスへの参照をもつだけ)している。帳票出力ストラテジ抽象クラスを,PDF 帳票出力ストラテジクラスと HTML 帳票出力ストラテジクラスがそれぞれ継承し,帳票出力()操作を実装している。凡例:クラスはクラス名・属性・操作の3段で表記する。

出典:令和4年度 春期 システムアーキテクト試験 午前Ⅱ 問5

正解:イ

解説

ストラテジパターンは,アルゴリズム(戦略)をカプセル化した複数の具象クラス(ここでは PDF 帳票出力ストラテジ,HTML 帳票出力ストラテジ)を,共通の抽象クラス(帳票出力ストラテジ)のサブクラスとして用意し,コンテキストクラスがその抽象クラスへの参照を介してアルゴリズムを利用する構成です。新しい出力フォーマットに対応する場合は,抽象クラスを継承した新しいサブクラスを追加するだけでよく,既存のコンテキストクラスや他のストラテジクラスを変更する必要がないため,新規フォーマット用のアルゴリズムの追加が容易になります。

選択肢ごとの解説

  • 誤り。ストラテジパターンでは,クライアント(利用する側)が,どの具象ストラテジ(PDF用かHTML用か)を使うかをコンテキストに設定する必要があり,サブクラスを意識せずに利用できるわけではありません。
  • 正しい。新しい出力フォーマットに対応する具象ストラテジクラスを追加するだけで拡張できるため,新規フォーマット用のアルゴリズムの追加が容易です。
  • 誤り。図の帳票出力ストラテジクラスは抽象クラスであり,フォーマットの振り分け(どの具象クラスを使うかの選択)は行っていません。振り分けはクライアント側やコンテキストの設定によって行われます。
  • 誤り。帳票出力のアルゴリズムは,コンテキストクラスではなく,PDF帳票出力ストラテジ,HTML帳票出力ストラテジなどの具象ストラテジクラスの中に記述されます。
システムアーキテクトの過去問を演習モードで解く