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 を「持っている」関係の呼び名は?