Java | 1 日 60 分 × 7 日アプリ学習:Java基礎・オブジェクト指向 電卓編

Web APP Java
スポンサーリンク
スポンサーリンク
  1. 3日目のゴールと全体像
  2. 電卓アプリの全体構造を作る
    1. メニュー付きコンソールアプリの骨格
  3. クラスとメソッド:HistoryCalculator の役割を整理する
    1. 履歴付き電卓クラスの整理
  4. メソッド:計算処理を“意味ごとに分ける”
    1. 計算処理をメソッドとして整理する
  5. コレクション:履歴を表示するメソッドを作る
    1. List を使って履歴を表示する
  6. ファイル操作:履歴を保存するメソッドをアプリに組み込む
    1. 履歴保存をアプリの一部にする
  7. 3日目で本当に掴んでほしいこと
  8. 4日目のゴールと全体像
  9. Java文法:入力チェックと例外処理で“落ちない電卓”にする
    1. 安全な整数入力メソッドを作る
  10. クラスとメソッド:Calculator を“責務が明確な頭脳”にする
    1. 割り算の安全性を高める
  11. メソッド:アプリ側で例外を受け止める
    1. 計算メソッドで例外をキャッチしてユーザーに伝える
  12. コレクション:履歴の扱い方を“統一された窓口”にする
    1. 履歴表示メソッドを整理する
  13. ファイル操作:読み込み・保存を“エラーに強い”形にする
    1. 保存メソッドをアプリ側から呼び出す
  14. 4日目で本当に掴んでほしいこと
  15. 5日目のゴールと全体像
  16. クラスとインターフェース:役割ごとに“契約”を定義する
    1. ICalculator と IHistoryRepository を導入する
  17. メソッドとサービスクラス:電卓の操作を“ひとつの窓口”にまとめる
    1. CalculatorService で「アプリから見た電卓」を表現する
  18. Java文法:例外と入力チェックを“サービスの外側”で扱う
    1. 計算処理をサービス+例外処理で書く
  19. コレクション:履歴を“読み取り専用”として扱う
    1. 履歴表示メソッドをサービス経由にする
  20. ファイル操作:履歴保存を“差し替え可能な仕組み”として考える
    1. ファイル保存用のユーティリティをサービスと組み合わせる
  21. 5日目で本当に掴んでほしいこと
  22. 6日目のゴールと全体像
  23. 電卓アプリの全体構造をもう一度整理する
    1. クラス一覧と役割
  24. Java文法とクラス:電卓の“頭脳”を読み解く
    1. ICalculator と Calculator
  25. メソッドとサービス:電卓の“窓口”を読み解く
    1. CalculatorService
  26. コレクション:履歴の“集まり”を読み解く
    1. CalculationHistory と InMemoryHistoryRepository
  27. ファイル操作:履歴の“記憶”を読み解く
    1. HistoryFileSaver
  28. メソッドと入力:電卓の“使い方”を読み解く
    1. InputHelper と CalculatorApp
  29. 6日目で本当に掴んでほしいこと
  30. 7日目のゴールと全体像
  31. 電卓アプリの完成版:全体の流れをひとつにつなぐ
    1. 全体像のイメージ
  32. クラスとインターフェース:役割の“骨組み”をもう一度
    1. 計算と履歴の契約
  33. 計算ロジック:電卓の“頭脳”を完成させる
    1. Calculator クラス
  34. 履歴とコレクション:電卓の“記録”を完成させる
    1. CalculationHistory と InMemoryHistoryRepository
  35. サービスクラス:電卓の“窓口”を完成させる
    1. CalculatorService
  36. 入力と例外:電卓の“使い方”を完成させる
    1. InputHelper
  37. ファイル操作:電卓の“記憶”を完成させる
    1. HistoryFileSaver と HistoryFileLoader
  38. メインアプリ:電卓の“顔”を完成させる
    1. CalculatorApp
  39. 7日目で本当に掴んでほしいこと

3日目のゴールと全体像

3日目のテーマは 「電卓アプリを“アプリらしい形”に近づけること」 です。

1〜2日目で、すでに

  • コンソールから入力して計算できる
  • Calculator クラスで計算ロジックをまとめた
  • List<CalculationHistory> で履歴をため始めた
  • 履歴をファイルに保存する入口を作った

という「動く電卓の最初の形」ができました。

3日目では、これを “使う人の視点から見て分かりやすいアプリ” に近づけていきます。

  • メニューを作って「何ができるか」を明確にする
  • クラスとメソッドの役割を整理する
  • コレクション(履歴)を扱うメソッドを整える
  • ファイル保存・読み込みをアプリの流れに組み込む

「コードを増やす」というより、 「電卓アプリの骨格を整える」 日だと思って読んでみてください。

電卓アプリの全体構造を作る

メニュー付きコンソールアプリの骨格

まず、「電卓アプリの全体の流れ」を作ります。 ユーザーが何度も計算できて、履歴も見られて、最後に終了できるような形です。

import java.util.List;
import java.util.Scanner;

public class CalculatorApp {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 履歴付き電卓のインスタンス
        HistoryCalculator calculator = new HistoryCalculator();

        // 起動時に履歴ファイルから読み込む(3日目では仮の形でもOK)
        HistoryFileLoader.load(calculator, "history.txt");

        boolean running = true;

        while (running) { // アプリが終了されるまで繰り返す
            showMenu();   // メニューを表示

            System.out.print("メニュー番号を選択してください: ");
            String choice = scanner.next(); // ユーザーの選択を文字列として受け取る

            switch (choice) {
                case "1":
                    runCalculation(scanner, calculator); // 計算する
                    break;
                case "2":
                    showHistory(calculator); // 履歴を見る
                    break;
                case "3":
                    saveHistoryToFile(calculator); // 履歴をファイルに保存する
                    break;
                case "4":
                    running = false; // 終了
                    break;
                default:
                    System.out.println("不正な入力です。1〜4の番号を入力してください。");
                    break;
            }

            System.out.println(); // 区切りの空行
        }

        scanner.close();
        System.out.println("電卓アプリを終了します。");
    }

    // メニューを表示するメソッド
    private static void showMenu() {
        System.out.println("=== 電卓メニュー ===");
        System.out.println("1: 計算する");
        System.out.println("2: 履歴を見る");
        System.out.println("3: 履歴をファイルに保存する");
        System.out.println("4: 終了する");
    }
}
Java

ここで深掘りしたいのは、 「メニューはアプリ全体の“司令塔”」 だということです。

  • 何ができるかが一目で分かる
  • ユーザーの選択に応じて処理が分岐する
  • 新しい機能を追加するときも、メニューに項目を足せばよい

電卓アプリが「ただのコード」から “使う人のためのアプリ” に近づいていきます。

タイトルとURLをコピーしました