From 521fa51d5e9452d947bccb87c84696e70df51217 Mon Sep 17 00:00:00 2001 From: dariaradko5-dev Date: Tue, 10 Feb 2026 11:38:28 +0200 Subject: [PATCH 1/2] feat(task1): add payment system implementation --- src/CardPayment.java | 11 +++++++++++ src/Main.java | 16 ++++++++++++++++ src/PaymentMethod.java | 14 ++++++++++++++ src/PaymentProcessor.java | 6 ++++++ src/PaypalPayment.java | 11 +++++++++++ 5 files changed, 58 insertions(+) create mode 100644 src/CardPayment.java create mode 100644 src/Main.java create mode 100644 src/PaymentMethod.java create mode 100644 src/PaymentProcessor.java create mode 100644 src/PaypalPayment.java diff --git a/src/CardPayment.java b/src/CardPayment.java new file mode 100644 index 0000000..4908cae --- /dev/null +++ b/src/CardPayment.java @@ -0,0 +1,11 @@ +class CardPayment implements PaymentMethod { + @Override + public void pay(int amount) { + System.out.println("Pay card: " + amount + " грн"); + } + + @Override + public String name() { + return "Card"; + } +} diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..c51bb1c --- /dev/null +++ b/src/Main.java @@ -0,0 +1,16 @@ +//TIP To Run code, press or +// click the icon in the gutter. +public class Main { + public static void main(String[] args) { + PaymentProcessor processor = new PaymentProcessor(); + PaymentMethod card = new CardPayment(); + PaymentMethod paypal = new PaypalPayment(); + processor.process(card, 1000); + processor.process(paypal, 500); + System.out.println(); + card.payWithFee(1000, 25); + paypal.payWithFee(500, 10); + } +} + + diff --git a/src/PaymentMethod.java b/src/PaymentMethod.java new file mode 100644 index 0000000..63a9194 --- /dev/null +++ b/src/PaymentMethod.java @@ -0,0 +1,14 @@ +interface PaymentMethod { + String name(); + + void pay(int amount); + + default void payWithFee(int amount, int fee) { + int totalAmount = amount + fee; + System.out.println("Total amount to pay: " + totalAmount); + pay(totalAmount); + } +} + + + diff --git a/src/PaymentProcessor.java b/src/PaymentProcessor.java new file mode 100644 index 0000000..da617eb --- /dev/null +++ b/src/PaymentProcessor.java @@ -0,0 +1,6 @@ +class PaymentProcessor{ + public void process(PaymentMethod method, int amount) { + System.out.println("Processing payment with " + method.name()); + method.pay(amount); + } +} \ No newline at end of file diff --git a/src/PaypalPayment.java b/src/PaypalPayment.java new file mode 100644 index 0000000..c6f5100 --- /dev/null +++ b/src/PaypalPayment.java @@ -0,0 +1,11 @@ +class PaypalPayment implements PaymentMethod { + @Override + public String name() { + return "PayPal"; + } + + @Override + public void pay(int amount) { + System.out.println("Paying " + amount + " using PayPal."); + } +} From a9d251c8e095edc0daf7be6fa66f8725ae8d5626 Mon Sep 17 00:00:00 2001 From: dariaradko5-dev Date: Tue, 10 Feb 2026 11:40:30 +0200 Subject: [PATCH 2/2] feat(task2): add daily report generator --- src/Task2/DailyReport.java | 13 +++++++++++++ src/Task2/Main2.java | 8 ++++++++ src/Task2/ReportGenerator.java | 19 +++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 src/Task2/DailyReport.java create mode 100644 src/Task2/Main2.java create mode 100644 src/Task2/ReportGenerator.java diff --git a/src/Task2/DailyReport.java b/src/Task2/DailyReport.java new file mode 100644 index 0000000..134b023 --- /dev/null +++ b/src/Task2/DailyReport.java @@ -0,0 +1,13 @@ +package Task2; + +public class DailyReport extends ReportGenerator { + @Override + protected String fetchData() { + return "Daily sales: 1000 грн, New customers: 50"; + } + + @Override + protected String formatData(String data) { + return "Formatted Daily Report:" + data; + } +} diff --git a/src/Task2/Main2.java b/src/Task2/Main2.java new file mode 100644 index 0000000..2760d91 --- /dev/null +++ b/src/Task2/Main2.java @@ -0,0 +1,8 @@ +package Task2; + +public class Main2 { + public static void main(String[] args) { + ReportGenerator dailyReport = new DailyReport(); + dailyReport.generate(); + } +} diff --git a/src/Task2/ReportGenerator.java b/src/Task2/ReportGenerator.java new file mode 100644 index 0000000..aa82324 --- /dev/null +++ b/src/Task2/ReportGenerator.java @@ -0,0 +1,19 @@ +package Task2; + +abstract class ReportGenerator { + public final void generate() { + String data = fetchData(); + String formattedData = formatData(data); + displayReport(formattedData); + } + + protected abstract String fetchData(); + + protected abstract String formatData(String data); + + protected void displayReport(String formattedData) { + System.out.println("Report:"); + System.out.println(formattedData); + } + +}