平成27年度 秋期 午前Ⅱ 問5
設計
デザインパターンに関する問題
デザインパターンの中のストラテジパターンを用いて,帳票出力のクラスを図のとおりに設計した。適切な説明はどれか。
帳票出力のクラス図:
- クラス「コンテキスト」(属性・操作の欄は空)から クラス「帳票出力ストラテジ」へ,コンテキスト側に白抜きのひし形(集約)が付いた矢印でつながる。
- 「帳票出力ストラテジ」の操作: +帳票出力()
- 「PDF 帳票出力ストラテジ」(操作: +帳票出力())と「HTML 帳票出力ストラテジ」(操作: +帳票出力())が,それぞれ白抜き三角の矢印(汎化)で「帳票出力ストラテジ」につながる。
- 凡例: クラスの箱は上から クラス名/属性/操作 の3区画。
- アクライアントは,使用したいフォーマットに対応する,帳票出力ストラテジクラスのサブクラスを意識せずに利用できる。
- イ新規フォーマット用のアルゴリズムの追加が容易である。
- ウ帳票出力ストラテジクラスの中で,どのフォーマットで帳票を出力するかの振り分けを行っている。
- エ帳票出力のアルゴリズムは,コンテキストクラスの中に記述する。
答えと解説を見る
✓ これが正解イ新規フォーマット用のアルゴリズムの追加が容易である。
解説
ストラテジを足すだけで新しい出力形式を加えやすくなります。
ストラテジパターンは、アルゴリズムを一つずつ別のクラスに閉じ込め、それらを共通の型で差し替えられるようにする設計パターンです。図では、帳票出力ストラテジが共通の操作である帳票出力を定め、PDF 帳票出力ストラテジと HTML 帳票出力ストラテジがそれを継承して、それぞれの出力方法を実装しています。コンテキストは帳票出力ストラテジという共通の型だけを知っていればよいので、新しいフォーマットに対応するときは、同じ操作をもつサブクラスを一つ追加するだけで済みます。既存のクラスに手を入れずにアルゴリズムを足せることが、このパターンの利点です。差し替えたい処理をサブクラスに分けて並べる形を見たら、追加のしやすさを思い出すと判断できます。
ほかの選択肢はなぜ違うのか
- アクライアントは,使用したいフォーマットに…:ストラテジパターンでは、どの具体的なストラテジを使うかは、コンテキストに渡す側のクライアントが選ぶのが一般的です。使いたいフォーマットに応じたサブクラスを意識せずに済むという説明は、この使い方と合いません。
- ウ帳票出力ストラテジクラスの中で,どのフォ…:図の帳票出力ストラテジは、共通の操作を定めた上位のクラスです。フォーマットごとの処理はサブクラスに分かれており、上位のクラスの中で条件によって振り分ける作りにはなっていません。
- エ帳票出力のアルゴリズムは,コンテキストク…:コンテキストのクラスは属性も操作の欄も空で、帳票出力ストラテジへの関連をもつだけです。出力の処理は PDF や HTML の各サブクラスに書かれるので、コンテキストに記述するという説明は図と食い違います。
この問題の用語
- パターン繰り返し現れる規則性や、決まった形のことを指します。膨大なデータを処理して、そこに隠れた規則性を見つける使い方が広がりました。
- アルゴリズム問題を解くための、決まった手順や考え方そのものです。同じ問題でも手順によって、処理にかかる時間や必要な記憶量が変わります。
出典:平成27年度 秋期 システムアーキテクト試験 午前Ⅱ 問5
同じ用語が出る問題
- 令和7年度 春期 午前Ⅱ 問5:デザインパターンに関する問題(パターン)
- 令和6年度 春期 午前Ⅱ 問4:デザインパターンに関する記述(パターン)
- 平成28年度 秋期 午前Ⅱ 問25:WPA2に関する問題(アルゴリズム)
- 平成25年度 秋期 午前Ⅱ 問4:ストラテジクラスの説明(アルゴリズム)
- 平成22年度 秋期 午前Ⅱ 問11:流れ図に関する問題(アルゴリズム)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)