dfdf
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