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!

コードを実行してみませんか?

この問題のコードエディタと実行機能を使用するには、ログインしてください。

アカウントをお持ちでない方

新規登録