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.");
+ }
+}
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);
+ }
+
+}
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);
+ }
+}