From 8880c58cd2957a89fae61af8ba13cb0de24a1fb4 Mon Sep 17 00:00:00 2001 From: "Task-1.1" Date: Sun, 27 Dec 2020 05:03:56 +0500 Subject: [PATCH 1/3] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=205.2(1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task02/src/com/example/task02/Bill.java | 79 ++++++------------- 1 file changed, 25 insertions(+), 54 deletions(-) diff --git a/05-java-oop-principles/task02/src/com/example/task02/Bill.java b/05-java-oop-principles/task02/src/com/example/task02/Bill.java index 08ca2e897..86e1ac99f 100644 --- a/05-java-oop-principles/task02/src/com/example/task02/Bill.java +++ b/05-java-oop-principles/task02/src/com/example/task02/Bill.java @@ -1,65 +1,36 @@ package com.example.task02; -import java.util.ArrayList; -import java.util.List; - -/** - * Счет к оплате - */ -public class Bill { - private List items = new ArrayList<>(); - - /** - * Добавляет товар в корзину - * - * @param item товар - * @param amount количество - */ - public void add(Item item, int amount) { - boolean found = false; - for (BillItem billItem: items) { - if (billItem.item.equals(item)) { - found = true; - billItem.amount += amount; - break; - } - } - if (!found) { - items.add(new BillItem(item, amount)); +public class DiscountBill extends Bill +{ + private final long discount; + /** @param discount процент скидки в промежутке [0;100] */ + public DiscountBill(long discount) + { + if (discount >= 0 && discount <= 100) + { + this.discount = discount; + } else + { + throw new IllegalArgumentException("аргумент вне промежутка [0;100]"); } } - /** - * Подсчитывает общую сумму покупки - * - * @return общую стоимость покупки - */ - public long getPrice() { - long price = 0; - for (BillItem item: items) { - price += item.item.getPrice() * item.amount; - } - return price; + /** @return процент скидки */ + public long getDiscount() + { + return discount; } - @Override - public String toString() { - StringBuilder sb = new StringBuilder("Счет к оплате\n"); - for(BillItem item : items) { - sb.append(item.item.getName()).append('(').append(item.amount).append(')'); - sb.append('\n'); - } - sb.append("Сумма к оплате: ").append(getPrice()); - return sb.toString(); + /** @return разница между суммой и суммой со скидкой */ + public long getDiscountAbsolut() + { + return (long)(super.getPrice() * (discount/100d)); } - private static class BillItem { - final Item item; - int amount; - BillItem(Item item, int amount) { - this.item = item; - this.amount = amount; - } + @Override + public long getPrice() + { + return (super.getPrice() - getDiscountAbsolut()); } -} +} \ No newline at end of file From 666b32eb324babdf5d7eaaacef1b9b41afa6c723 Mon Sep 17 00:00:00 2001 From: "Task-1.1" Date: Sun, 27 Dec 2020 05:05:00 +0500 Subject: [PATCH 2/3] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=205.2(2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/example/task02/Task02Main.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/05-java-oop-principles/task02/src/com/example/task02/Task02Main.java b/05-java-oop-principles/task02/src/com/example/task02/Task02Main.java index 3f0025be0..444371c43 100644 --- a/05-java-oop-principles/task02/src/com/example/task02/Task02Main.java +++ b/05-java-oop-principles/task02/src/com/example/task02/Task02Main.java @@ -1,15 +1,14 @@ package com.example.task02; - -public class Task02Main { - +public class Task02Main +{ private static final Item ITEM1 = new Item("Товар 1", 10); private static final Item ITEM2 = new Item("Товар 2", 20); private static final Item ITEM3 = new Item("Товар 3", 30); private static final Item ITEM4 = new Item("Товар 4", 40); private static final Item ITEM5 = new Item("Товар 5", 50); private static final Item ITEM6 = new Item("Товар 6", 60); - - public static void main(String[] args) { + public static void main(String[] args) + { Bill bill = new Bill(); bill.add(ITEM1, 10); bill.add(ITEM3, 3); @@ -17,5 +16,12 @@ public static void main(String[] args) { System.out.println(bill); bill.add(ITEM3, 3); System.out.println(bill); + + DiscountBill db = new DiscountBill(50); + db.add(ITEM1, 10); + db.add(ITEM3, 3); + db.add(ITEM6, 1); + db.add(ITEM3, 3); + System.out.println(db.getPrice()); } -} +} \ No newline at end of file From 5a45a339361a0c54ba05dc9a161625704feef3f0 Mon Sep 17 00:00:00 2001 From: "Task-1.1" Date: Sun, 27 Dec 2020 05:07:25 +0500 Subject: [PATCH 3/3] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=205.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/example/task03/TimeUnit.java | 56 ++++++++++--------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/05-java-oop-principles/task03/src/com/example/task03/TimeUnit.java b/05-java-oop-principles/task03/src/com/example/task03/TimeUnit.java index 6b983daec..b92160aa7 100644 --- a/05-java-oop-principles/task03/src/com/example/task03/TimeUnit.java +++ b/05-java-oop-principles/task03/src/com/example/task03/TimeUnit.java @@ -1,31 +1,37 @@ package com.example.task03; -/** - * Интерфейс для интервалов времени в определенных единицах - */ -public interface TimeUnit { +public class Hours implements TimeUnit +{ + private final long amount; - /** - * Возвращает продолжительность текущего интервала, пересчитанного в миллисекундах. - * - * @return количество миллисекунд в текущем интервале - */ - long toMillis(); + public Hours(long amount) + { + if (amount < 0) + throw new IllegalArgumentException("amount must be >= 0"); + this.amount = amount; + } - /** - * Возвращает продолжительность текущего интервала, пересчитанного в секундах. - * При необходимости округлять по обычным правилам округления (число, меньшее 0.5 переходит в 0, большее или равное - в 1) - * - * @return количество секунд в текущем интервале - */ - long toSeconds(); + @Override + public long toMillis() + { + return this.toSeconds() * 1000; + } - /** - * Возвращает продолжительность текущего интервала, пересчитанного в минутах. - * При необходимости округлять по обычным правилам округления (число, меньшее 0.5 переходит в 0, большее или равное - в 1) - * - * @return количество минут в текущем интервале - */ - long toMinutes(); + @Override + public long toSeconds() + { + return this.toMinutes() * 60; + } -} + @Override + public long toMinutes() + { + return this.amount * 60; + } + + @Override + public long toHours() + { + return this.amount; + } +} \ No newline at end of file