ShopMainクラスで実行されるshop.addItemの内容をShopクラスのArrayListに登録して表示させるメソッドを実装したい。
4つの商品情報を並べて表示したい。
↓の状況だとshop.addItemで最後のメソッドのみ拾われてしまう。
Java
public class ShopMain { public static void main(String[] args) { Shop shop = new Shop(); shop.addItem(new Video("V0001","ローマの休日 ",2980,6,"ウィリアム・ワイラー")); shop.addItem(new Video("V0002","風と共に去りぬ",2980,5,"ヴィクター・フレミング")); shop.addItem(new CD( "C0001","ビートルズ全集",3000,1,"ビートルズ")); shop.addItem(new CD( "C0002","スリラー ",2500,9,"マイケル・ジャクソン")); System.out.println("CODE\tタイトル\t価格\t在庫\t監督/アーティスト"); System.out.println("--------------------------------------------------------------"); shop.showItem(); System.out.println("--------------------------------------------------------------"); System.out.println(); shop.sellItem("V0001"); shop.sellItem("C0002"); System.out.println(); System.out.println("CODE\tタイトル\t価格\t在庫\t監督/アーティスト"); System.out.println("--------------------------------------------------------------"); shop.showItem(); System.out.println("--------------------------------------------------------------"); } }
Java
public class Shop { private ArrayList<String> items; //商品情報を格納するリスト Item cd = new CD(null, null, 0, 0, null); Item video = new Video(null, null, 0, 0, null); /** * @param items * コンストラクタ */ public Shop() { ArrayList<String> items = new ArrayList<>(); this.items = items; } //商品情報をitemsに登録する public void addItem(Item item) { items.add(item.getItemID()); items.add(item.getItemName()); items.add(String.valueOf(item.getPrice())); items.add(String.valueOf(item.getStock())); items.add(cd.getArtist()); items.add(video.getMovieDirector()); System.out.println("アイテムサイズ "+items.size()); } //itemsに登録されている商品情報を全て画面に表示する public void showItem() { cd.printItemDetail(); video.printItemDetail(); System.out.println(items); } //itemsに登録されている商品情報から該当する商品を検索しメッセージを表示する public void sellItem(String itemID) { // System.out.println(items.get(1) + "を" + items.get(2) + "で販売しました"); // Item.decrementStock(); } } class Item { private static String itemID; //商品ID private static String itemName; //商品名 private static int price; //値段 private static int stock; //在庫数 //デフォルトコンストラクタ public Item() {} public String getMovieDirector() { return null; } public String getArtist() { return null; } //コンストラクタ public Item(String itemID, String itemName, int price, int stock) { Item.itemID = itemID; Item.itemName = itemName; Item.price = price; Item.stock = stock; } //商品ID、商品名、値段、在庫数を表示するメソッド public void printItemDetail() { System.out.println(itemID + "\t"+ itemName + "\t" + price + "円\t" + stock + "個"); } /** * @return itemID * 商品ID を返却するメソッド */ public String getItemID() { return itemID; } /** * @return itemName * 商品名を返却するメソッド */ public String getItemName() { return itemName; } /** * @return price * 値段を返却するメソッド */ public int getPrice() { return price; } public int getStock() { return stock; } //在庫数から1個販売するメソッド public static void decrementStock() { stock -= 1; } } class CD extends Item { private static String artist; //アーティスト名 /** * @param itemID * @param itemName * @param price * @param stock * コンストラクタ */ public CD(String itemID, String itemName, int price, int stock, String artist) { super(itemID, itemName, price, stock); CD.artist = artist; } public String getArtist() { return artist; } //商品ID、商品名、値段、在庫数、アーティスト名を表示するメソッド @Override public void printItemDetail() { System.out.println(super.getItemID() + "\t" + super.getItemName() + "\t" + super.getPrice() + "円\t" + super.getStock() + "個\t" + getArtist()); } } class Video extends Item { private static String movieDirector; //監督名 /** * @param movieDirector * コンストラクタ */ public Video(String itemID, String itemName, int price, int stock, String movieDirector) { super(itemID, itemName, price, stock); Video.movieDirector = movieDirector; } public String getMovieDirector() { return movieDirector; } //。商品ID、商品名、値段、在庫数、監督名を表示するメソッド @Override public void printItemDetail() { System.out.println(super.getItemID() + "\t" + super.getItemName() + "\t" + super.getPrice() + "円\t" + super.getStock() + "個\t" + getMovieDirector()); }
宜しくお願い致します。
まだ回答がついていません
会員登録して回答してみよう