商品在庫管理ミニアプリを完成させよ
問題のポイント
パーツを組み合わせて、実際に動く形にする。
ここまでに作ってきたメソッドたち──printStockList()
、searchByName()
、printLowStockProducts()
、updateStockByName()
これらを統合して、簡易的な在庫管理アプリを完成させる。
コード全体を見渡し、「設計された処理の流れ」を感じてくれ。
まず、日本語で考えろ
- 商品リストを用意して、複数の商品を登録する
- 商品の一覧を表示する
- 検索して在庫数を表示する
- 指定したしきい値未満の商品を抽出する
- 商品の在庫数を更新する
- 存在しない商品の検索や更新も試して、エラーハンドリングを確認する
コメントを書け
// 商品リストを作成し、初期データを登録する
// 商品一覧を表示する
// 商品名で検索する
// 在庫数が少ない商品だけを表示する
// 在庫数を更新する
// 存在しない商品の検索・更新も確認する
コメントに従ってコードを書け
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// 商品リストを作成し、初期データを登録する
ArrayList<Product> products = new ArrayList<>();
products.add(new Product("りんご", 10));
products.add(new Product("みかん", 5));
products.add(new Product("バナナ", 3));
// 商品一覧を表示する
System.out.println("== 一覧表示 ==");
ProductUtil.printStockList(products);
// 商品名で検索する
System.out.println("\n== 商品検索 ==");
ProductUtil.searchByName(products, "みかん");
// 在庫数が少ない商品を表示する
System.out.println("\n== 在庫が少ない商品を表示(5未満)==");
ProductUtil.printLowStockProducts(products, 5);
// 在庫数を更新する
System.out.println("\n== 在庫数の更新 ==");
ProductUtil.updateStockByName(products, "りんご", 15);
// 存在しない商品の検索・更新を確認する
System.out.println("\n== 存在しない商品の検索・更新 ==");
ProductUtil.searchByName(products, "パイナップル");
ProductUtil.updateStockByName(products, "パイナップル", 10);
}
}
コードの解説
Step06〜09で書いてきた処理を一気に使っている。
「登録 → 表示 → 検索 → 抽出 → 更新 → エラー確認」
という一連の処理の流れが、1本のコードの中に統合されている。役割の分離がされていることに注目
Main
クラスは「流れの指示」を書くだけ。
実際の処理はすべてProductUtil
に任せている。
この分業が “設計されたコード” の基本形。メソッドを使い回せる構造
一度定義したprintStockList()
やsearchByName()
を何度も使っている。
これがメソッドの 再利用性=保守性の高さ を体感できる瞬間。
つまづきやすいポイント
「全部書いたのに動かない」ときは?
- クラスのインポートが抜けてる
- スペルミス(特に
ProductUtil
やsetStock
)main
メソッドの括弧や波かっこミス
冷静に一行ずつ確認しろ。9割は凡ミスだ。「コード量が多くてムズい」と感じたら?
一度に見ようとするな。
見えてるのは、「これまで積み上げてきたパーツの集合体」だ。
不安になったら、Step06〜09をもう一回見直せ。
teshのひとこと
コードは部品じゃない。
組み合わせて、動かして、目的を果たして──そこで初めて意味を持つ。おまえがここまで書いてきたのは、単なる文法じゃねぇ。
動かすための“構造”だ。
そして今、それが一つにまとまった。
Just keep typing, baby.
プログラムは設計だ。おまえが全部、動きを決めろ。
他のステップや学習順序を確認したい場合は、
[配列修羅道:全体のステップ構成] をチェックしてくれ。