014-004-007

protectedとテンプレートメソッド

上級

問題説明

protectedとテンプレートメソッド

この問題では: protectedメソッドオーバーライドしてテンプレートメソッドパターンを実装し、SalesReportInventoryReportの2種類のレポートを生成するプログラムを作成します。

学習目標: protected修飾子を使ったテンプレートメソッドパターンの基礎を理解する

概要

スーパークラスReportにpublicメソッドgenerate()とprotectedメソッドformatHeader()formatBody()を定義し、サブクラスSalesReportInventoryReportがprotectedメソッドをオーバーライドすることで、異なるレポートを生成するプログラムを作成してください。

入力

  • 1行目: 売上金額(整数)
  • 2行目: 在庫数(整数)

仕様

Reportクラス

  • public void generate() メソッドを定義する
    • formatHeader() を呼び出してその戻り値を出力する
    • formatBody() を呼び出してその戻り値を出力する
  • protected String formatHeader() メソッドを定義し、"=== Report ===" を返す
  • protected String formatBody() メソッドを定義し、"No data" を返す

SalesReportクラス(Reportを継承

  • コンストラクタで売上金額(整数)を受け取る
  • formatHeader() をオーバーライドし、"=== Sales Report ===" を返す
  • formatBody() をオーバーライドし、"Total sales: $" + 売上金額 の形式で返す

InventoryReportクラス(Reportを継承)

  • コンストラクタで在庫数(整数)を受け取る
  • formatHeader() をオーバーライドし、"=== Inventory Report ===" を返す
  • formatBody() をオーバーライドし、"Items in stock: " + 在庫数 の形式で返す

Mainクラス

  • Scannerで売上金額と在庫数を読み込む
  • SalesReportのインスタンスを作成し、generate()を呼び出す
  • InventoryReportのインスタンスを作成し、generate()を呼び出す

出力形式

=== Sales Report ===
Total sales: $<売上金額>
=== Inventory Report ===
Items in stock: <在庫数>

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

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

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

新規登録