令和5年度 秋期 エンベデッドシステムスペシャリスト試験 午前II 問17

テクノロジシステム開発技術

この問題は2023(R5)秋 エンベデッドシステムスペシャリスト 午前IIに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

デザインパターンの中のストラテジパターンを用いて,帳票出力のクラスを図のとおりに設計した。適切な説明はどれか。

ストラテジパターンを用いた帳票出力のUMLクラス図
図の説明テキスト

ストラテジパターンを用いた帳票出力のUMLクラス図。
・凡例: 矩形は上から「クラス名」「属性」「操作」の3区画に分かれている。
・クラス「コンテキスト」からクラス「帳票出力ストラテジ」に対して集約(白抜きの菱形)の線が引かれている。
・クラス「帳票出力ストラテジ」は操作として「+ 帳票出力( )」を持つ。
・クラス「PDF 帳票出力ストラテジ」とクラス「HTML 帳票出力ストラテジ」は、ともにクラス「帳票出力ストラテジ」を継承(白抜きの三角矢印)している。これらサブクラスもそれぞれ操作として「+ 帳票出力( )」を持つ。

解答・解説を読む

正解: 選択肢

ストラテジパターンとは

ストラテジパターン (Strategy Pattern) は、アルゴリズム(振る舞い)をそれぞれ一つのクラスにカプセル化し、それらを状況に応じて交換可能にするデザインパターンです。

  • アルゴリズムの実装と利用側(コンテキスト)を分離します。
  • クライアント側で利用するアルゴリズムの具体クラスを選択し、コンテキストに設定します。

各選択肢の解説

  • : 誤り。クライアントは、利用したいフォーマットに対応する帳票出力ストラテジクラスのサブクラス(具体クラス)を意識してインスタンス化し、コンテキストに渡す必要があります。そのため、「意識せずに利用できる」とするのは誤りです。
  • : 正解。新しいフォーマットを追加する場合、帳票出力ストラテジを継承した新しいサブクラスを作成するだけでよく、既存のクラス(コンテキストなど)に影響を与えないため、アルゴリズムの追加が容易になります。
  • : 誤り。ストラテジパターンでは、条件分岐(振り分け)による処理をなくし、ポリモーフィズム(多態性)を利用してアルゴリズムを切り替えます。帳票出力ストラテジクラスの中で振り分けを行うわけではありません。
  • : 誤り。帳票出力のアルゴリズムは、コンテキストクラスではなく、それぞれに対応する 帳票出力ストラテジクラスのサブクラス の中に記述されます。