dfdf

 avatar
unknown
java
a year ago
4.6 kB
21
Indexable
import java.util.ArrayList;
import java.util.List;

// Abstract Payment Class
abstract class Payment {
    protected double balance;
    protected List<String> history = new ArrayList<>();

    public Payment(double initialBalance) {
        this.balance = initialBalance;
    }

    // পেমেন্ট ফাংশন
    public abstract boolean pay(double amount);

    // ব্যালেন্স চেক
    public double checkBalance() {
        return balance;
    }

    // পেমেন্ট হিস্ট্রি দেখানো
    public void showHistory() {
        if(history.isEmpty()) {
            System.out.println("কোনো লেনদেন নেই");
        } else {
            System.out.println("লেনদেনের হিস্ট্রি:");
            for(String record : history) {
                System.out.println(record);
            }
        }
    }
}

// Bkash Payment
class Bkash extends Payment {
    public Bkash(double initialBalance) {
        super(initialBalance);
    }

    public boolean pay(double amount) {
        if(amount <= balance) {
            balance -= amount;
            history.add("Bkash: " + amount + " টাকা পেমেন্ট");
            return true;
        } else {
            System.out.println("Bkash: ব্যালেন্স অপর্যাপ্ত");
            return false;
        }
    }
}

// Rocket Payment
class Rocket extends Payment {
    public Rocket(double initialBalance) {
        super(initialBalance);
    }

    public boolean pay(double amount) {
        if(amount <= balance) {
            balance -= amount;
            history.add("Rocket: " + amount + " টাকা পেমেন্ট");
            return true;
        } else {
            System.out.println("Rocket: ব্যালেন্স অপর্যাপ্ত");
            return false;
        }
    }
}

// Nagad Payment
class Nagad extends Payment {
    public Nagad(double initialBalance) {
        super(initialBalance);
    }

    public boolean pay(double amount) {
        if(amount <= balance) {
            balance -= amount;
            history.add("Nagad: " + amount + " টাকা পেমেন্ট");
            return true;
        } else {
            System.out.println("Nagad: ব্যালেন্স অপর্যাপ্ত");
            return false;
        }
    }
}

// Factory Interface
interface PaymentFactory {
    Payment createPayment(double initialBalance);
}

// Concrete Factories
class BkashFactory implements PaymentFactory {
    public Payment createPayment(double initialBalance) {
        return new Bkash(initialBalance);
    }
}

class RocketFactory implements PaymentFactory {
    public Payment createPayment(double initialBalance) {
        return new Rocket(initialBalance);
    }
}

class NagadFactory implements PaymentFactory {
    public Payment createPayment(double initialBalance) {
        return new Nagad(initialBalance);
    }
}

// Client class
class Client {
    private Payment payment;

    public Client(PaymentFactory factory, double initialBalance) {
        payment = factory.createPayment(initialBalance);
    }

    public Payment getPayment() {
        return payment;
    }
}

// Driver program
public class PaymentDemo {
    public static void main(String[] args) {
        Client bkashClient = new Client(new BkashFactory(), 1000.0);
        Payment bkash = bkashClient.getPayment();
        bkash.pay(300);
        bkash.pay(800); // ব্যালেন্স অপর্যাপ্ত
        System.out.println("ব্যালেন্স: " + bkash.checkBalance());
        bkash.showHistory();

        System.out.println("---------------");

        Client rocketClient = new Client(new RocketFactory(), 500.0);
        Payment rocket = rocketClient.getPayment();
        rocket.pay(200);
        System.out.println("ব্যালেন্স: " + rocket.checkBalance());
        rocket.showHistory();
    }
}


/*
Bkash: 300.0 টাকা পেমেন্ট
Bkash: ব্যালেন্স অপর্যাপ্ত
ব্যালেন্স: 700.0
লেনদেনের হিস্ট্রি:
Bkash: 300.0 টাকা পেমেন্ট
---------------
Rocket: 200.0 টাকা পেমেন্ট
ব্যালেন্স: 300.0
লেনদেনের হিস্ট্রি:
Rocket: 200.0 টাকা পেমেন্ট


*/
Editor is loading...
Leave a Comment