本の購入処理をプログラム化する
概要
本の購入をプログラム化して動作を確認する。既出のHuman_01を継承したBookBuyerクラスのオブジェクトが既出のShohinクラスを継承したShohinBookクラスのオブジェクトを購入する。継承の基本を学ぶ。
import java.util.ArrayList; /*本を買う人*/ class BookBuyer extends Human_01 { int myFunds; // 手持ちの資金 ArrayList<ShohinBook> bookShelf = new ArrayList<ShohinBook>();// 本棚の確保 ShohinBook myBook; // 手持ちの書籍 BookBuyer(String name, int age, String address, int birth, int fund) { this.name = name; this.age = age; this.address = address; this.birth = birth; this.myFunds = fund; this.myBook = new ShohinBook("nothing", 0, "nothing", 0); } // ほしい本とその数を引数とする public void buyBook(ShohinBook wishBook, int wishBookAmount) { System.out.println( this.name + "さんが" + wishBook.getName() + "/" + wishBookAmount + "冊を購入されようとしていますので、在庫を調べます。"); // 条件1/2:在庫の数が十分にあるか if (wishBookAmount <= wishBook.getStock()) { // 条件2/2:買うだけの金があるか if (this.myFunds >= wishBook.getPrice() * wishBookAmount) { // 購入出来る場合の処理 myBook = new ShohinBook( wishBook.getName(), wishBook.getPrice(), wishBook.getPublisher(), wishBookAmount); // 本棚に入れる bookShelf.add(myBook); // (店の?)在庫を売れた分減らす wishBook.decrementStock(wishBookAmount); // 支払い分の資金を減らす this.myFunds -= wishBook.getPrice() * wishBookAmount; System.out.println( wishBook.getName() + "を" + wishBookAmount + "冊お買い上げ、" + this.name + "様、ありがとうございました。"); // 金が足りない場合の処理 } else { System.out.println( this.name + "様のお手持ち資金が足りません。" + "お買い上げできません。あしからずご了承ください。"); } // 在庫がない場合の処理 } else { System.out.println( wishBook.getName() + "の在庫が" + wishBook.getStock() + "ですので、" + "お買い上げできません。あしからずご了承ください。"); } } void display() { System.out.println( name + " " + age + " " + address + " " + birth + " " + myFunds); } public void displayMyProperty() { if (this.myBook.getStock() == 0) { System.out.println( this.name + "に手持ちの本はありません。"); } else { System.out.println( this.name + "の手持ちの資金は" + this.myFunds + "円"); System.out.println( this.name + "の手持ちの本は:"); for (int i = 0; i < this.bookShelf.size(); i++) { System.out.println(this.bookShelf.get(i)); } } } public String toString() { return this.myBook.getName() + " " + this.myBook.getPrice() + " " + this.myBook.getPublisher() + " " + this.myBook.getStock(); } } public class BookShoppingTest_1 { public static void main(String[] args) { // 初期在庫の生成 ShohinBook sbt1 = new ShohinBook("人月の神話【新装版】", 3500, "丸善出版", 10); ShohinBook sbt2 = new ShohinBook("闘うプログラマー[新装版]", 2000, "日経BP社", 5); // 買い手の生成 BookBuyer Alan = new BookBuyer("アラン・チューリング", 43, "新宿区新宿", 1912, 10000); System.out.println("買い手の状況"); System.out.println(); Alan.display(); Alan.displayMyProperty(); System.out.println(); System.out.println("只今の在庫状況"); System.out.println(sbt1); System.out.println(sbt2); System.out.println(); // アランがsbt1を2冊購入しようとする Alan.buyBook(sbt1, 2); System.out.println(); Alan.displayMyProperty(); System.out.println(); System.out.println(sbt1.getName() + "の在庫は、" + sbt1.getStock() + "冊"); System.out.println(); // アランがsbt1を10冊購入しようとする Alan.buyBook(sbt1, 10); System.out.println(); Alan.displayMyProperty(); System.out.println(); System.out.println(sbt1.getName() + "の在庫は、" + sbt1.getStock() + "冊"); System.out.println(); // アランがsbt1を4冊購入しようとする Alan.buyBook(sbt1, 4); System.out.println(); Alan.displayMyProperty(); System.out.println(); System.out.println(sbt1.getName() + "の在庫は、" + sbt1.getStock() + "冊"); System.out.println(); // アランがsbt2を1冊購入しようとする Alan.buyBook(sbt2, 1); System.out.println(); Alan.displayMyProperty(); System.out.println(); System.out.println(sbt2.getName() + "の在庫は、" + sbt2.getStock() + "冊"); System.out.println(); } }
実行結果
買い手の状況
アラン・チューリング 43 新宿区新宿 1912 10000
アラン・チューリングに手持ちの本はありません。
只今の在庫状況
人月の神話【新装版】 3500 丸善出版 10
闘うプログラマー[新装版] 2000 日経BP社 5
アラン・チューリングさんが人月の神話【新装版】/2冊を購入されようとしていますので、在庫を調べます。
人月の神話【新装版】を2冊お買い上げ、アラン・チューリング様、ありがとうございました。
アラン・チューリングの手持ちの資金は3000円
アラン・チューリングの手持ちの本は:
人月の神話【新装版】 3500 丸善出版 2
人月の神話【新装版】の在庫は、8冊
アラン・チューリングさんが人月の神話【新装版】/10冊を購入されようとしていますので、在庫を調べます。
人月の神話【新装版】の在庫が8ですので、お買い上げできません。あしからずご了承ください。
アラン・チューリングの手持ちの資金は3000円
アラン・チューリングの手持ちの本は:
人月の神話【新装版】 3500 丸善出版 2
人月の神話【新装版】の在庫は、8冊
アラン・チューリングさんが人月の神話【新装版】/4冊を購入されようとしていますので、在庫を調べます。
アラン・チューリング様のお手持ち資金が足りません。お買い上げできません。あしからずご了承ください。
アラン・チューリングの手持ちの資金は3000円
アラン・チューリングの手持ちの本は:
人月の神話【新装版】 3500 丸善出版 2
人月の神話【新装版】の在庫は、8冊
アラン・チューリングさんが闘うプログラマー[新装版]/1冊を購入されようとしていますので、在庫を調べます。
闘うプログラマー[新装版]を1冊お買い上げ、アラン・チューリング様、ありがとうございました。
アラン・チューリングの手持ちの資金は1000円
アラン・チューリングの手持ちの本は:
人月の神話【新装版】 3500 丸善出版 2
闘うプログラマー[新装版] 2000 日経BP社 1
闘うプログラマー[新装版]の在庫は、4冊
チューリングの大聖堂: コンピュータの創造とデジタル世界の到来
- 作者: ジョージ・ダイソン,吉田三知世
- 出版社/メーカー: 早川書房
- 発売日: 2013/02/22
- メディア: 単行本
- クリック: 161回
- この商品を含むブログ (20件) を見る
- 作者: G・パスカル・ザカリー,山岡洋一
- 出版社/メーカー: 日経BP社
- 発売日: 2009/07/23
- メディア: 単行本
- 購入: 23人 クリック: 203回
- この商品を含むブログ (64件) を見る
- 作者: Jr Frederick P. Brooks,滝沢徹,牧野祐子,富澤昇
- 出版社/メーカー: 丸善出版
- 発売日: 2014/04/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (9件) を見る