配列修羅道:Step05

配列修羅道:Step05 learn

Product クラスを定義せよ

問題を見る(javadrillへ)


問題のポイント

ここで初めて「クラス」を自分で定義する。
プログラミングの中でも重要な概念、それがクラス。
「商品名」と「在庫数」──この2つの情報を1つのまとまりにする、それがクラスの役目だ。

データを扱うとき、“構造”を自分で作れるようになるかどうかで、
「ただ書ける人」と「設計できる人」に分かれる。


まず、日本語で考えろ

  • 商品は「名前」と「在庫数」のセットである
  • それを1つのクラス(Product)で表現したい
  • クラスには以下が必要:
  • フィールド:名前・在庫数
  • コンストラクタ:2つの値を受け取る
  • ゲッターメソッド:それぞれの値を返す

コメントを書け

// 商品名(name)と在庫数(stock)を保持するクラス
// コンストラクタで2つの値を受け取る
// getName と getStock メソッドで値を返す

コメントに従ってコードを書け

public class Product {
    private String name;
    private int stock;

    // コンストラクタ
    public Product(String name, int stock) {
        this.name = name;
        this.stock = stock;
    }

    // 商品名を返す
    public String getName() {
        return name;
    }

    // 在庫数を返す
    public int getStock() {
        return stock;
    }
}

コードの解説

private String name; private int stock;
このクラスが持つ“データの中身”を定義している。
外部から直接いじらせないように private を付けているのがポイント。

public Product(String name, int stock)
クラスを使ってインスタンス(実体)を作るときに呼ばれるのがコンストラクタ。
受け取った値をフィールドに代入することで、初期化が完了する。

this.name = name;
左側がフィールド、右側が引数。名前が同じなので this を使って区別する。

getName() / getStock()
外部から namestock を参照できるようにするためのメソッド。
値は読み取れるけど、直接変更はできない──これが安全設計の基本。


つまづきやすいポイント

this ってなんだ?

メソッドの引数 name と、フィールド name が同じ名前になっているから、
this.name という形で「こっちはフィールドの方ね」と明示する。
この区別をしないと、引数の namename に代入して終わることになる(=意味がない)。

なぜ private にするのか?

クラスの中のデータを外部から勝手に書き換えられないようにするため。
これは「カプセル化」と呼ばれるオブジェクト指向の基本思想。
データは守り、操作はメソッドを通して行う。


teshのひとこと

配列やリストで“並べる”だけじゃ、まだプレイヤーだ。
クラスを書き始めたとき、おまえは“設計者”になる。

データをどうまとめるか?
どうやって隠すか? どうやって外から触らせるか?

それを考えるようになったとき、コードはただの作業じゃなくなる。

Just keep typing, baby.
「何をひとつと見なすか」──そこにおまえの設計が現れる。


👉 配列修羅道:全体のステップ構成はこちら

他のステップや学習順序を確認したい場合は、
[配列修羅道:全体のステップ構成] をチェックしてくれ。