diff --git a/README.md b/README.md index 99b7168..6fd500a 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # Advanced-Programming A Repository for Programming Exercises and Assignments in Advanced Programming +SCT212-0717/2022 + diff --git a/src/assignment1/BankAccount.java b/src/assignment1/BankAccount.java new file mode 100644 index 0000000..11a32ac --- /dev/null +++ b/src/assignment1/BankAccount.java @@ -0,0 +1,19 @@ +public class BankAccount { + private double balance; + + public BankAccount(double balance) { + this.balance = balance; + } + + public double getBalance() { + return balance; + } + + public void deposit(double amount) { + balance += amount; + } + + public void withdraw(double amount) { + balance -= amount; + } +} diff --git a/src/assignment1/BaseTransaction.java b/src/assignment1/BaseTransaction.java new file mode 100644 index 0000000..82d03bd --- /dev/null +++ b/src/assignment1/BaseTransaction.java @@ -0,0 +1,47 @@ +import java.util.Calendar; + +public class BaseTransaction implements TransactionInterface { + protected double amount; + protected Calendar date; + protected String transactionID; + + // Constructor + public BaseTransaction(double amount, Calendar date, String transactionID) { + this.amount = amount; + this.date = date; + this.transactionID = transactionID; + } + + @Override + public double getAmount() { + return amount; + } + + @Override + public Calendar getDate() { + return date; + } + + @Override + public String getTransactionID() { + return transactionID; + } + + // Common method to print transaction details + public void printTransactionDetails() { + System.out.println("Transaction ID: " + transactionID); + System.out.println("Amount: " + amount); + System.out.println("Date: " + date.getTime()); + } + + // Method to apply the transaction (meant to be overridden by subclasses) + public void apply(BankAccount ba) { + System.out.println("Applying transaction..."); + } + + // Default reverse method (can be overridden if needed) + public boolean reverse(BankAccount ba) { + System.out.println("Reversal not supported for this transaction."); + return false; + } +} diff --git a/src/assignment1/DepositTransaction.java b/src/assignment1/DepositTransaction.java new file mode 100644 index 0000000..4f9c3e8 --- /dev/null +++ b/src/assignment1/DepositTransaction.java @@ -0,0 +1,20 @@ +import java.util.Calendar; + +public class DepositTransaction extends BaseTransaction { + + public DepositTransaction(double amount, Calendar date, String transactionID) { + super(amount, date, transactionID); + } + + @Override + public void apply(BankAccount ba) { + ba.deposit(amount); + System.out.println("Deposit successful: " + amount); + } + + @Override + public boolean reverse(BankAccount ba) { + System.out.println("Deposits cannot be reversed."); + return false; + } +} diff --git a/src/assignment1/InsufficientFundsException.java b/src/assignment1/InsufficientFundsException.java new file mode 100644 index 0000000..70ef8c9 --- /dev/null +++ b/src/assignment1/InsufficientFundsException.java @@ -0,0 +1,6 @@ +public class InsufficientFundsException extends Exception { + public InsufficientFundsException(String message) { + super(message); + } +} +//insufficient Funds diff --git a/src/assignment1/Main.java b/src/assignment1/Main.java new file mode 100644 index 0000000..734019b --- /dev/null +++ b/src/assignment1/Main.java @@ -0,0 +1,26 @@ +import java.util.Calendar; + +public class Main { + public static void main(String[] args) { + BankAccount account = new BankAccount(1000.0); + Calendar date = Calendar.getInstance(); + + // Create DepositTransaction + DepositTransaction deposit = new DepositTransaction(500.0, date, "D123"); + deposit.apply(account); + deposit.printTransactionDetails(); + + // Create WithdrawalTransaction + WithdrawalTransaction withdrawal = new WithdrawalTransaction(300.0, date, "W456"); + withdrawal.apply(account); + withdrawal.printTransactionDetails(); + + // Test reversal of withdrawal + withdrawal.reverse(account); + + // Try to reverse deposit + deposit.reverse(account); + + System.out.println("Final Balance: " + account.getBalance()); + } +} diff --git a/src/assignment1/TransactionInterface.java b/src/assignment1/TransactionInterface.java new file mode 100644 index 0000000..9642377 --- /dev/null +++ b/src/assignment1/TransactionInterface.java @@ -0,0 +1,10 @@ +import java.util.Calendar; + +public interface TransactionInterface { + double getAmount(); + Calendar getDate(); + String getTransactionID(); + void printTransactionDetails(); + void apply(BankAccount ba); + boolean reverse(BankAccount ba); +} diff --git a/src/assignment1/WithdrawalTransaction.java b/src/assignment1/WithdrawalTransaction.java new file mode 100644 index 0000000..40b450b --- /dev/null +++ b/src/assignment1/WithdrawalTransaction.java @@ -0,0 +1,28 @@ +import java.util.Calendar; + +public class WithdrawalTransaction extends BaseTransaction { + + public WithdrawalTransaction(double amount, Calendar date, String transactionID) { + super(amount, date, transactionID); + } + + @Override + public void apply(BankAccount ba) { + try { + if (ba.getBalance() < amount) { + throw new InsufficientFundsException("Insufficient funds for withdrawal."); + } + ba.withdraw(amount); + System.out.println("Withdrawal successful: " + amount); + } catch (InsufficientFundsException e) { + System.out.println(e.getMessage()); + } + } + + @Override + public boolean reverse(BankAccount ba) { + ba.deposit(amount); + System.out.println("Withdrawal reversed: " + amount); + return true; + } +} diff --git a/src/mwariri/BankAccount.java b/src/mwariri/BankAccount.java new file mode 100644 index 0000000..27573a3 --- /dev/null +++ b/src/mwariri/BankAccount.java @@ -0,0 +1,19 @@ +public class BankAccount { + private double balance; + + public BankAccount(double balance) { + this.balance = balance; + } + + public double getBalance() { + return balance; + } + + public void deposit(double amount) { + balance += amount; + } + + public void withdraw(double amount) { + balance -= amount; + } +} diff --git a/src/mwariri/BaseTransaction.java b/src/mwariri/BaseTransaction.java new file mode 100644 index 0000000..6001e33 --- /dev/null +++ b/src/mwariri/BaseTransaction.java @@ -0,0 +1,47 @@ +import java.util.Calendar; + +public class BaseTransaction implements TransactionInterface { + protected double amount; + protected Calendar date; + protected String transactionID; + + // Constructor + public BaseTransaction(double amount, Calendar date, String transactionID) { + this.amount = amount; + this.date = date; + this.transactionID = transactionID; + } + + @Override + public double getAmount() { + return amount; + } + + @Override + public Calendar getDate() { + return date; + } + + @Override + public String getTransactionID() { + return transactionID; + } + + // Common method to print transaction details + public void printTransactionDetails() { + System.out.println("Transaction ID: " + transactionID); + System.out.println("Amount: " + amount); + System.out.println("Date: " + date.getTime()); + } + + // Method to apply the transaction (meant to be overridden by subclasses) + public void apply(BankAccount ba) { + System.out.println("Applying transaction..."); + } + + // Default reverse method (can be overridden if needed) + public boolean reverse(BankAccount ba) { + System.out.println("Reversal not supported for this transaction."); + return false; + } +} diff --git a/src/mwariri/DepositTransaction.java b/src/mwariri/DepositTransaction.java new file mode 100644 index 0000000..bea2e69 --- /dev/null +++ b/src/mwariri/DepositTransaction.java @@ -0,0 +1,20 @@ +import java.util.Calendar; + +public class DepositTransaction extends BaseTransaction { + + public DepositTransaction(double amount, Calendar date, String transactionID) { + super(amount, date, transactionID); + } + + @Override + public void apply(BankAccount ba) { + ba.deposit(amount); + System.out.println("Deposit successful: " + amount); + } + + @Override + public boolean reverse(BankAccount ba) { + System.out.println("Deposits cannot be reversed."); + return false; + } +} diff --git a/src/mwariri/InsufficientFundsException.java b/src/mwariri/InsufficientFundsException.java new file mode 100644 index 0000000..494041d --- /dev/null +++ b/src/mwariri/InsufficientFundsException.java @@ -0,0 +1,6 @@ +public class InsufficientFundsException extends Exception { + public InsufficientFundsException(String message) { + super(message); + } +} +//insufficient Funds diff --git a/src/mwariri/Main.java b/src/mwariri/Main.java new file mode 100644 index 0000000..314d389 --- /dev/null +++ b/src/mwariri/Main.java @@ -0,0 +1,26 @@ +import java.util.Calendar; + +public class Main { + public static void main(String[] args) { + BankAccount account = new BankAccount(1000.0); + Calendar date = Calendar.getInstance(); + + // Create DepositTransaction + DepositTransaction deposit = new DepositTransaction(500.0, date, "D123"); + deposit.apply(account); + deposit.printTransactionDetails(); + + // Create WithdrawalTransaction + WithdrawalTransaction withdrawal = new WithdrawalTransaction(300.0, date, "W456"); + withdrawal.apply(account); + withdrawal.printTransactionDetails(); + + // Test reversal of withdrawal + withdrawal.reverse(account); + + // Try to reverse deposit + deposit.reverse(account); + + System.out.println("Final Balance: " + account.getBalance()); + } +} diff --git a/src/mwariri/TransactionInterface.java b/src/mwariri/TransactionInterface.java new file mode 100644 index 0000000..376b299 --- /dev/null +++ b/src/mwariri/TransactionInterface.java @@ -0,0 +1,10 @@ +import java.util.Calendar; + +public interface TransactionInterface { + double getAmount(); + Calendar getDate(); + String getTransactionID(); + void printTransactionDetails(); + void apply(BankAccount ba); + boolean reverse(BankAccount ba); +} diff --git a/src/mwariri/WithdrawalTransaction.java b/src/mwariri/WithdrawalTransaction.java new file mode 100644 index 0000000..4d37c48 --- /dev/null +++ b/src/mwariri/WithdrawalTransaction.java @@ -0,0 +1,28 @@ +import java.util.Calendar; + +public class WithdrawalTransaction extends BaseTransaction { + + public WithdrawalTransaction(double amount, Calendar date, String transactionID) { + super(amount, date, transactionID); + } + + @Override + public void apply(BankAccount ba) { + try { + if (ba.getBalance() < amount) { + throw new InsufficientFundsException("Insufficient funds for withdrawal."); + } + ba.withdraw(amount); + System.out.println("Withdrawal successful: " + amount); + } catch (InsufficientFundsException e) { + System.out.println(e.getMessage()); + } + } + + @Override + public boolean reverse(BankAccount ba) { + ba.deposit(amount); + System.out.println("Withdrawal reversed: " + amount); + return true; + } +}