* Изходен код от упражнение 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;
}
}
Добави коментар