014-007-008
テンプレートメソッドパターンとfinal
中級
問題説明
テンプレートメソッドパターンとfinal
この問題では: 標準入力からレポート名を受け取り、AbstractReportを継承したSalesReportクラスを実装し、finalメソッドで保護されたテンプレートメソッドパターンを用いてcollectData()・processData()・formatOutput()を順に呼び出すレポート生成処理を実行し、結果を標準出力に表示するプログラムを作成します。
学習目標: finalメソッドを使ったテンプレートメソッドパターンを理解する
概要
テンプレートメソッドパターンを実装し、アルゴリズムの骨格をfinalメソッドで保護しながら、詳細を子クラスで実装するプログラムを作成してください。
入力
レポート名(例: Sales, Inventory, Customer)
仕様
- AbstractReportクラスにコンストラクタでレポート名を受け取るフィールド
nameを持つ - AbstractReportクラスにfinal void generateReport()を定義
- 内部でcollectData(), processData(), formatOutput()を順に呼び出す
- これらは抽象メソッドとして定義する
- SalesReportクラスでAbstractReportを継承し、各メソッドをnameを使って実装
- MainでScannerを使ってレポート名を読み込み、レポート生成をテスト
出力形式
Collecting [name] data...
Processing [name] data...
Formatting [name] report...
Report generated!
入出力例
入力:
Sales
出力:
Collecting Sales data...
Processing Sales data...
Formatting Sales report...
Report generated!
