diff --git a/src/edu/androidclub/Application.java b/src/edu/androidclub/Application.java index 4978d01..458c9fc 100644 --- a/src/edu/androidclub/Application.java +++ b/src/edu/androidclub/Application.java @@ -79,29 +79,35 @@ private void test() { ItemBox itemBox = new ProductsBox(itemScheme); // Протестируем схему - заставим витрину выдавать объекты на заданных координатах - System.out.println( // Напечатать в консоль - itemBox.emit( // Выдать предмет - new Coordinates(1, 1) // Указываем координату - ) - .getName() // Получить имя предмета - ); // OK - System.out.println(itemBox.emit(new Coordinates(1, 1)).getName()); // OK - System.out.println(itemBox.emit(new Coordinates(1, 1)).getName()); // OK - - System.out.println(itemBox.emit(new Coordinates(1, 1)).getName()); // FAIL - предметы кончились в ячейке - } + + if (itemBox.IsThereAny(new Coordinates(1, 1))) + ScreenInput.printItemInfo(itemBox.emit(new Coordinates(1, 1))); + if (itemBox.IsThereAny(new Coordinates(1, 1))) + ScreenInput.printItemInfo(itemBox.emit(new Coordinates(1, 1))); + if (itemBox.IsThereAny(new Coordinates(1, 1))) + ScreenInput.printItemInfo(itemBox.emit(new Coordinates(1, 1))); + if (itemBox.IsThereAny(new Coordinates(1, 1))) + ScreenInput.printItemInfo(itemBox.emit(new Coordinates(1, 1))); + } // Опишем Колу как подкласс Предмета public static class Cola extends Item { public Cola() { - super("Cola"); // Вызов конструктора класса-родителя (класса Item) + super(1,"Cola",12); // Вызов конструктора класса-родителя (класса Item) } } // Опишем Спрайт как подкласс Предмета public static class Sprite extends Item { public Sprite() { - super("Sprite"); + super(2,"Sprite",13); + } + } + + // Опишем Закончишийся продукт как подкласс Предмета + public static class Empty extends Item { + public Empty() { + super(0,"Товар закончился", 0); } } } diff --git a/src/edu/androidclub/ProductsBox.java b/src/edu/androidclub/ProductsBox.java index 6e71494..554c59a 100644 --- a/src/edu/androidclub/ProductsBox.java +++ b/src/edu/androidclub/ProductsBox.java @@ -24,12 +24,18 @@ public Item emit(Coordinates coordinates) { Stack items = scheme.get(coordinates); // Если пусто - возвращаем пустоту - if (items.empty()) { - return null; - } + if (IsThereAny(coordinates)) + {return items.pop();} + else + {return new Application.Empty();} - // Возвращаем верхний элемент и удаляем его с вершины стопки - return items.pop(); + } + + public boolean IsThereAny(Coordinates coordinates) + { + Stack items = scheme.get(coordinates); + if (items.empty()) { return false; } + return true; } } diff --git a/src/edu/androidclub/ScreenInput.java b/src/edu/androidclub/ScreenInput.java new file mode 100644 index 0000000..002fd98 --- /dev/null +++ b/src/edu/androidclub/ScreenInput.java @@ -0,0 +1,42 @@ +package edu.androidclub; + +import edu.androidclub.domain.Item; + +public class ScreenInput +{ + static public void clear() + { + for (int i=0; i<50 ; i++) + System.out.println(); + } + + static public void printItemInfo(Item item) + { + System.out.print("| № "+item.getNumber()); + System.out.println(Spaces(18-Integer.toString(item.getNumber()).length())+'|'); + System.out.print("| Товар: "+item.getName()); + System.out.println(Spaces(18-item.getName().length())+'|'); + System.out.print("| Цена: "+item.getPrice()); + System.out.println(Spaces(18-Float.toString(item.getPrice()).length())+'|'); + System.out.println("+--------------------------------+"); + } + + static private String Spaces(int n) + { + String s = new String(); + for (int i=0;i