Python 入門コース / 第6章 オブジェクト指向(第40〜46回) / レッスン 46

【実践】クラスで在庫管理を作る

何をクラスにするか

見極め方は「名詞を探す」です。今回なら商品(Product)在庫全体(Inventory)。1 つの商品が持つ情報と操作は Product に、複数の商品をまとめて扱う操作は Inventory に。1 クラス 1 責務で分けます。

Product:1 商品の状態と操作

在庫数は _stock として直接触らせず、add_stock() / ship() という操作を通じてだけ変わるようにします。ありえない要求は自作例外で弾きます(第 34 回・第 45 回)。

editor.py

Inventory:商品をまとめて扱う

Inventory は Product を持っているだけで、Product を継承しているわけではありません。この「持たせる」関係をコンポジションと呼びます。継承より先にこちらを検討するのが基本です。

editor.py

継承で種類を増やし、保存で永続化する

「賞味期限のある商品」のように特別な性質を持つ種類が出てきたら、Product を継承した子クラスを作ります。最後に第 37 回の JSON と組み合わせれば、プログラムを終了しても在庫が残る実用ツールになります。

editor.py

ここまでで、変数・ループ・関数・例外・ファイル・クラスがすべて 1 つのプログラムに繋がりました。これが「Python が書ける」状態です。あとは作りたいものに合わせて、必要な道具を足していくだけです。

✅ 理解度チェック

Inventory が Product を「持っている」関係の呼び名は?