From edac728312500ab8b07f8192a877bb0c9a01bc77 Mon Sep 17 00:00:00 2001 From: Eugene Date: Wed, 23 Nov 2016 04:02:50 +0300 Subject: [PATCH 1/2] Check, screen, test --- src/edu/androidclub/Application.java | 15 ++++++++++----- src/edu/androidclub/ProductsBox.java | 23 ++++++++++++++++++----- src/edu/androidclub/VendorScreen.java | 22 ++++++++++++++++++++++ src/edu/androidclub/domain/Item.java | 8 +++++++- src/edu/androidclub/domain/ItemBox.java | 3 +++ 5 files changed, 60 insertions(+), 11 deletions(-) create mode 100644 src/edu/androidclub/VendorScreen.java diff --git a/src/edu/androidclub/Application.java b/src/edu/androidclub/Application.java index 4978d01..b64606e 100644 --- a/src/edu/androidclub/Application.java +++ b/src/edu/androidclub/Application.java @@ -77,6 +77,8 @@ private void test() { // Создадим нашу витрину (коробку продуктов) на основании схемы ItemBox itemBox = new ProductsBox(itemScheme); + // Создадим экран + VendorScreen screen = new VendorScreen(); // Протестируем схему - заставим витрину выдавать объекты на заданных координатах System.out.println( // Напечатать в консоль @@ -85,23 +87,26 @@ 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()); + 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); } From 42fb09591c345e9a1a6b4d1c12103816696d7908 Mon Sep 17 00:00:00 2001 From: Eugene Date: Wed, 23 Nov 2016 04:07:35 +0300 Subject: [PATCH 2/2] Check, screen, test --- src/edu/androidclub/Application.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/edu/androidclub/Application.java b/src/edu/androidclub/Application.java index b64606e..c3865a9 100644 --- a/src/edu/androidclub/Application.java +++ b/src/edu/androidclub/Application.java @@ -77,7 +77,7 @@ private void test() { // Создадим нашу витрину (коробку продуктов) на основании схемы ItemBox itemBox = new ProductsBox(itemScheme); - // Создадим экран + VendorScreen screen = new VendorScreen(); // Протестируем схему - заставим витрину выдавать объекты на заданных координатах @@ -87,9 +87,6 @@ private void test() { ) .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()); screen.printText(itemBox.emit(new Coordinates(1, 1)).toString()); screen.printText(itemBox.emit(new Coordinates(1, 1)).toString());