* Изходен код от упражнение 4, 2015
Публикувано на 29 октомври 2015 в раздел ПИК3 Java.
Задача 1. Дефинирайте интерфейс “Buyable”, в който дефинирайте действиe “int buy(int quantity)” (купуване на продукт) и действие “String getName()” (взимане на името на продукта).
Задача 2. Дефинирайте клас “Product”, който имплементира интерфейс “Buyable”. Член променливи са:
- id – идентификатор на продукта в склада от тип int;
- name – описание на продукта, записано в String;
- quantity – наличност (бройки) в склада от тип int.
Защитете член променливите по следния начин:
- id трябва да е винаги положително число (строго по-голямо от 0);
- quantity трябва да е винаги по-голямо или равно на 0;
- name да бъде само за четене.
Реализирайте метод buy. Идеята му е по подадено количество стока от даден продукт да връща или “id” на продукта в склада (ще бъде положително число), или -1 (невалидно id) ако такова количество не е налично или ако е подадена невалидна стойност за количество (<=0). Ако покупката е успешна, да намалява стойността на член-променлива quantity с количеството, което е закупено.
Задача 3. Реализирайте клас “BetterProduct”, който наследява клас “Product” и предефинира метод buy по следния начин – вече вместо да връща -1 при неуспех, трябва да хвърля RuntimeException с подходящо съобщение за грешка.
Задача 4. Направете клас с main метод, в който инициализирайте масив с два елемента от тип Buyable. В него запишете един Product и един BetterProduct. Обходете масива с цикъл и отпечатайте имената на продуктите на екрана.
Забележка: и при двата класа правете само конструктор с подадени параметри.
Решение:
public class Upr4{ public static void main(String[] args){ Buyable[] arr = new Buyable[2]; try{ arr[0] = new Product(1, 5, "Product A"); arr[1] = new BetterProduct(2, 6, "Product B"); } catch(Exception e){ System.err.println(e.getMessage()); } for(Buyable b : arr){ System.out.println(b.getName()); } } } interface Buyable{ int buy(int quantity); String getName(); } class Product implements Buyable{ private int id; private int quantity; String name; public Product(int id, int quantity, String name) throws Exception{ this.setId(id); this.setQuantity(quantity); this.name = name; } int getId(){ return this.id; } void setId(int id) throws Exception{ if(id<=0) throw new Exception("Идентификатора трябва да е > 0"); else this.id = id; } int getQuantity(){ return this.quantity; } public String getName(){ return this.name; } void setQuantity(int quantity) throws Exception{ if(quantity<0) throw new Exception("Количеството трябва да е > 0"); else this.id = id; } public int buy(int quantity){ if(quantity<=0 || quantity>this.quantity){ return -1; } else{ this.quantity -= quantity; return this.id; } } } class BetterProduct extends Product{ public BetterProduct(int id, int quantity, String name) throws Exception{ super(id, quantity, name); } public int buy(int quantity){ int productId = super.buy(quantity); if(productId==-1) throw new RuntimeException("Няма такава наличност"); else return productId; } }
Добави коментар