diff --git a/src/edu/androidclub/Application.java b/src/edu/androidclub/Application.java index 4978d01..c3865a9 100644 --- a/src/edu/androidclub/Application.java +++ b/src/edu/androidclub/Application.java @@ -78,6 +78,8 @@ private void test() { // Создадим нашу витрину (коробку продуктов) на основании схемы ItemBox itemBox = new ProductsBox(itemScheme); + VendorScreen screen = new VendorScreen(); + // Протестируем схему - заставим витрину выдавать объекты на заданных координатах System.out.println( // Напечатать в консоль itemBox.emit( // Выдать предмет @@ -85,23 +87,23 @@ private void test() { ) .getName() // Получить имя предмета ); // OK - System.out.println(itemBox.emit(new Coordinates(1, 1)).getName()); // OK - System.out.println(itemBox.emit(new Coordinates(1, 1)).getName()); // OK + screen.printText(itemBox.emit(new Coordinates(1, 1)).toString()); + screen.printText(itemBox.emit(new Coordinates(1, 1)).toString()); + screen.printText(itemBox.emit(new Coordinates(1, 1)).toString()); - System.out.println(itemBox.emit(new Coordinates(1, 1)).getName()); // FAIL - предметы кончились в ячейке } // Опишем Колу как подкласс Предмета public static class Cola extends Item { public Cola() { - super("Cola"); // Вызов конструктора класса-родителя (класса Item) + super("Cola", 10); // Вызов конструктора класса-родителя (класса Item) } } // Опишем Спрайт как подкласс Предмета public static class Sprite extends Item { public Sprite() { - super("Sprite"); + super("Sprite", 10); } } } diff --git a/src/edu/androidclub/ProductsBox.java b/src/edu/androidclub/ProductsBox.java index 6e71494..23a5048 100644 --- a/src/edu/androidclub/ProductsBox.java +++ b/src/edu/androidclub/ProductsBox.java @@ -22,14 +22,27 @@ public ProductsBox(ItemInfoScheme scheme) { public Item emit(Coordinates coordinates) { // Получить стопку предметов на позиции Stack items = scheme.get(coordinates); + if(hasItem(items)) { + // Возвращаем верхний элемент и удаляем его с вершины стопки + return items.pop(); - // Если пусто - возвращаем пустоту - if (items.empty()) { - return null; } + Item noItem = new noItem(); + return noItem; + } + + @Override + public boolean hasItem(Stack items) { + if(items.empty()) { + return false; + } + return true; + } - // Возвращаем верхний элемент и удаляем его с вершины стопки - return items.pop(); + public static class noItem extends Item{ + public noItem(){ + super("There is no items", 0); + } } } diff --git a/src/edu/androidclub/VendorScreen.java b/src/edu/androidclub/VendorScreen.java new file mode 100644 index 0000000..76de773 --- /dev/null +++ b/src/edu/androidclub/VendorScreen.java @@ -0,0 +1,22 @@ +package edu.androidclub; + +import edu.androidclub.domain.AppScreen; + +public class VendorScreen implements AppScreen { + @Override + public void printText(String text) { + String name = text.substring(0, text.lastIndexOf(" ")); + String cost = text.substring(text.lastIndexOf(" ")+1, text.length()); + System.out.println(" ____________________________________________ "); + System.out.println("||| Name: |||||||||||||||||||| Cost: |||||||"); + System.out.println(" -------------------------------------------- "); + System.out.print("||| "); System.out.printf("%-18.18s", name); + System.out.print("||||||||| "); System.out.printf( "%-5.5s", cost); System.out.println(" |||||||"); + System.out.println(" -------------------------------------------- "); + } + + @Override + public void clear() { + printText(" "); + } +} diff --git a/src/edu/androidclub/domain/Item.java b/src/edu/androidclub/domain/Item.java index 87e3204..0a92328 100644 --- a/src/edu/androidclub/domain/Item.java +++ b/src/edu/androidclub/domain/Item.java @@ -4,13 +4,19 @@ // Он тоже неизменяемый - т.к. все поля final public abstract class Item { private final String name; + private final int cost; - public Item(String name) { + public Item(String name, int cost) { this.name = name; + this.cost = cost; } // Получить имя public String getName() { return name; } + + public String toString(){ + return name + " " + cost; + } } diff --git a/src/edu/androidclub/domain/ItemBox.java b/src/edu/androidclub/domain/ItemBox.java index dd93439..fb63238 100644 --- a/src/edu/androidclub/domain/ItemBox.java +++ b/src/edu/androidclub/domain/ItemBox.java @@ -2,6 +2,8 @@ import edu.androidclub.Coordinates; +import java.util.Stack; + /* Интерфейс, описывающий функционал (что умеет) нашей витрины (коробки с продуктами) * */ @@ -9,5 +11,6 @@ public interface ItemBox { /* Выдать предмет по его координатам */ Item emit(Coordinates coordinates); + boolean hasItem(Stack items); }