From 1848cf96e06ab95efe0a239a5071c01fb24edae8 Mon Sep 17 00:00:00 2001 From: dariaradko5-dev Date: Tue, 10 Feb 2026 11:38:28 +0200 Subject: [PATCH 1/3] 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 502a39f399fc5c0258c7c654f2b25ba77592247b Mon Sep 17 00:00:00 2001 From: dariaradko5-dev Date: Tue, 10 Feb 2026 11:40:30 +0200 Subject: [PATCH 2/3] 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); + } + +} From d853592662786938f347f0fd40cde3d8ecfa043e Mon Sep 17 00:00:00 2001 From: dariaradko5-dev Date: Tue, 10 Feb 2026 11:42:29 +0200 Subject: [PATCH 3/3] feat(task3): Default method conflict --- src/Task3/EmailNotifier.java | 7 +++++++ src/Task3/Main3.java | 8 ++++++++ src/Task3/MultiNotifier.java | 9 +++++++++ src/Task3/SmsNotifier.java | 7 +++++++ 4 files changed, 31 insertions(+) create mode 100644 src/Task3/EmailNotifier.java create mode 100644 src/Task3/Main3.java create mode 100644 src/Task3/MultiNotifier.java create mode 100644 src/Task3/SmsNotifier.java diff --git a/src/Task3/EmailNotifier.java b/src/Task3/EmailNotifier.java new file mode 100644 index 0000000..ef94d73 --- /dev/null +++ b/src/Task3/EmailNotifier.java @@ -0,0 +1,7 @@ +package Task3; + +interface EmailNotifier { + default void send(String message) { + System.out.println("Sending Email: " + message); + } +} diff --git a/src/Task3/Main3.java b/src/Task3/Main3.java new file mode 100644 index 0000000..a5c5b59 --- /dev/null +++ b/src/Task3/Main3.java @@ -0,0 +1,8 @@ +package Task3; + +public class Main3 { + public static void main(String[] args) { + MultiNotifier notifier = new MultiNotifier(); + notifier.send("message"); + } +} diff --git a/src/Task3/MultiNotifier.java b/src/Task3/MultiNotifier.java new file mode 100644 index 0000000..56875b6 --- /dev/null +++ b/src/Task3/MultiNotifier.java @@ -0,0 +1,9 @@ +package Task3; + +class MultiNotifier implements SmsNotifier, EmailNotifier { + @Override + public void send(String message) { + SmsNotifier.super.send(message); + EmailNotifier.super.send(message); + } +} diff --git a/src/Task3/SmsNotifier.java b/src/Task3/SmsNotifier.java new file mode 100644 index 0000000..6843b90 --- /dev/null +++ b/src/Task3/SmsNotifier.java @@ -0,0 +1,7 @@ +package Task3; + +interface SmsNotifier { + default void send(String message) { + System.out.println("Sending SMS: " + message); + } +}