From 38738eda9e2e9d08c4dade8228580322967f6331 Mon Sep 17 00:00:00 2001 From: AwdhatCodes <157990984+AwdhatCodes@users.noreply.github.com> Date: Sun, 1 Dec 2024 09:54:15 +0300 Subject: [PATCH 01/10] Create Assignment1 Assignment 1 --- src/Assignment1 | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/Assignment1 diff --git a/src/Assignment1 b/src/Assignment1 new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/Assignment1 @@ -0,0 +1 @@ + From 963c0bd710ee6ef53f12384a9e0503177c12a1b4 Mon Sep 17 00:00:00 2001 From: AwdhatCodes <157990984+AwdhatCodes@users.noreply.github.com> Date: Sun, 1 Dec 2024 09:55:29 +0300 Subject: [PATCH 02/10] Delete src/Assignment1 --- src/Assignment1 | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/Assignment1 diff --git a/src/Assignment1 b/src/Assignment1 deleted file mode 100644 index 8b13789..0000000 --- a/src/Assignment1 +++ /dev/null @@ -1 +0,0 @@ - From 74fbde1405c30d61db537719b3651472b5a99ec9 Mon Sep 17 00:00:00 2001 From: AwdhatCodes <157990984+AwdhatCodes@users.noreply.github.com> Date: Sun, 1 Dec 2024 10:00:47 +0300 Subject: [PATCH 03/10] Add files via upload --- src/AP-Assignment-main/BankAccount.java | 25 ++++++++++++ ...ionClass Implementing TransactionInterface | 38 +++++++++++++++++++ .../DepositTransactionClass | 12 ++++++ .../InsufficientFundsExceptionClass | 5 +++ src/AP-Assignment-main/MainClass | 26 +++++++++++++ src/AP-Assignment-main/README.md | 15 ++++++++ src/AP-Assignment-main/TransactionInterface | 9 +++++ .../WithdrawalTransactionClass | 23 +++++++++++ 8 files changed, 153 insertions(+) create mode 100644 src/AP-Assignment-main/BankAccount.java create mode 100644 src/AP-Assignment-main/BaseTransactionClass Implementing TransactionInterface create mode 100644 src/AP-Assignment-main/DepositTransactionClass create mode 100644 src/AP-Assignment-main/InsufficientFundsExceptionClass create mode 100644 src/AP-Assignment-main/MainClass create mode 100644 src/AP-Assignment-main/README.md create mode 100644 src/AP-Assignment-main/TransactionInterface create mode 100644 src/AP-Assignment-main/WithdrawalTransactionClass diff --git a/src/AP-Assignment-main/BankAccount.java b/src/AP-Assignment-main/BankAccount.java new file mode 100644 index 0000000..c68a713 --- /dev/null +++ b/src/AP-Assignment-main/BankAccount.java @@ -0,0 +1,25 @@ +public class BankAccount { + private String accountNumber; + private double balance; + + public BankAccount(String accountNumber, double balance) { + this.accountNumber = accountNumber; + this.balance = balance; + } + + public String getAccountNumber() { + return accountNumber; + } + + public double getBalance() { + return balance; + } + + public void deposit(double amount) { + this.balance += amount; + } + + public void withdraw(double amount) { + this.balance -= amount; + } +} diff --git a/src/AP-Assignment-main/BaseTransactionClass Implementing TransactionInterface b/src/AP-Assignment-main/BaseTransactionClass Implementing TransactionInterface new file mode 100644 index 0000000..04abbc1 --- /dev/null +++ b/src/AP-Assignment-main/BaseTransactionClass Implementing TransactionInterface @@ -0,0 +1,38 @@ +import java.util.Calendar; + +public abstract class BaseTransaction implements TransactionInterface { + private double amount; + private Calendar date; + private String transactionID; + + public BaseTransaction(double amount, Calendar date, String transactionID) { + this.amount = amount; + this.date = date; + this.transactionID = transactionID; + } + + @Override + public double getAmount() { + return this.amount; + } + + @Override + public Calendar getDate() { + return this.date; + } + + @Override + public String getTransactionID() { + return this.transactionID; + } + + @Override + public void printTransactionDetails() { + System.out.println("Transaction ID: " + transactionID); + System.out.println("Amount: " + amount); + System.out.println("Date: " + date.getTime()); + } + + // Abstract method for applying a transaction on a bank account + public abstract void apply(BankAccount ba); +} diff --git a/src/AP-Assignment-main/DepositTransactionClass b/src/AP-Assignment-main/DepositTransactionClass new file mode 100644 index 0000000..2f8af0a --- /dev/null +++ b/src/AP-Assignment-main/DepositTransactionClass @@ -0,0 +1,12 @@ +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(getAmount()); + System.out.println("Deposited " + getAmount() + " to account " + ba.getAccountNumber()); + } +} diff --git a/src/AP-Assignment-main/InsufficientFundsExceptionClass b/src/AP-Assignment-main/InsufficientFundsExceptionClass new file mode 100644 index 0000000..6f55cf6 --- /dev/null +++ b/src/AP-Assignment-main/InsufficientFundsExceptionClass @@ -0,0 +1,5 @@ +public class InsufficientFundsException extends Exception { + public InsufficientFundsException(String message) { + super(message); + } +} diff --git a/src/AP-Assignment-main/MainClass b/src/AP-Assignment-main/MainClass new file mode 100644 index 0000000..376b600 --- /dev/null +++ b/src/AP-Assignment-main/MainClass @@ -0,0 +1,26 @@ +import java.util.Calendar; + +public class Main { + public static void main(String[] args) { + BankAccount account = new BankAccount("12345", 500.0); + + // Create a DepositTransaction + Calendar depositDate = Calendar.getInstance(); + DepositTransaction deposit = new DepositTransaction(200.0, depositDate, "D123"); + deposit.printTransactionDetails(); + deposit.apply(account); // Apply deposit transaction + + // Create a WithdrawalTransaction + Calendar withdrawDate = Calendar.getInstance(); + WithdrawalTransaction withdrawal = new WithdrawalTransaction(100.0, withdrawDate, "W123"); + withdrawal.printTransactionDetails(); + try { + withdrawal.apply(account); // Apply withdrawal transaction + } catch (InsufficientFundsException e) { + System.out.println(e.getMessage()); + } + + // Reverse the withdrawal + withdrawal.reverse(account); // Reverse the transaction + } +} diff --git a/src/AP-Assignment-main/README.md b/src/AP-Assignment-main/README.md new file mode 100644 index 0000000..2350062 --- /dev/null +++ b/src/AP-Assignment-main/README.md @@ -0,0 +1,15 @@ +# AP-Assignment 1 +Question 1 - Extending Interface in Concrete Class +Question 2 - Differentiate functionality of DepositTransaction +and WithdrawalTransaction +Question 3 - Exception Handling and Client Codes +Question 4 - Writing the Client Code + +files; +TransactionInterface.java +BaseTransaction.java +DepositTransaction.java +WithdrawalTransaction.java +InsufficientFundsException.java +BankAccount.java +Main.java diff --git a/src/AP-Assignment-main/TransactionInterface b/src/AP-Assignment-main/TransactionInterface new file mode 100644 index 0000000..4b2e165 --- /dev/null +++ b/src/AP-Assignment-main/TransactionInterface @@ -0,0 +1,9 @@ +import java.util.Calendar; + +public interface TransactionInterface { + double getAmount(); // Get the transaction amount + Calendar getDate(); // Get the transaction date + String getTransactionID(); // Get the transaction ID + void printTransactionDetails(); // Print transaction details + void apply(BankAccount ba); // Apply transaction to the bank account +} diff --git a/src/AP-Assignment-main/WithdrawalTransactionClass b/src/AP-Assignment-main/WithdrawalTransactionClass new file mode 100644 index 0000000..c029d4b --- /dev/null +++ b/src/AP-Assignment-main/WithdrawalTransactionClass @@ -0,0 +1,23 @@ +public class WithdrawalTransaction extends BaseTransaction { + + public WithdrawalTransaction(double amount, Calendar date, String transactionID) { + super(amount, date, transactionID); + } + + @Override + public void apply(BankAccount ba) throws InsufficientFundsException { + if (ba.getBalance() >= getAmount()) { + ba.withdraw(getAmount()); + System.out.println("Withdrew " + getAmount() + " from account " + ba.getAccountNumber()); + } else { + throw new InsufficientFundsException("Insufficient funds for withdrawal."); + } + } + + // Method to reverse a withdrawal transaction + public boolean reverse(BankAccount ba) { + ba.deposit(getAmount()); // Reverse by depositing the same amount back + System.out.println("Reversed withdrawal of " + getAmount() + " from account " + ba.getAccountNumber()); + return true; + } +} From 1605f6bb75a4428aafe326e36523f5061b56293e Mon Sep 17 00:00:00 2001 From: AwdhatCodes <157990984+AwdhatCodes@users.noreply.github.com> Date: Sun, 1 Dec 2024 10:01:43 +0300 Subject: [PATCH 04/10] Rename BaseTransactionClass Implementing TransactionInterface to BaseTransaction.java --- ...ass Implementing TransactionInterface => BaseTransaction.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/AP-Assignment-main/{BaseTransactionClass Implementing TransactionInterface => BaseTransaction.java} (100%) diff --git a/src/AP-Assignment-main/BaseTransactionClass Implementing TransactionInterface b/src/AP-Assignment-main/BaseTransaction.java similarity index 100% rename from src/AP-Assignment-main/BaseTransactionClass Implementing TransactionInterface rename to src/AP-Assignment-main/BaseTransaction.java From f1e114a76f2ea935aa714fc3a5941713ef2444b5 Mon Sep 17 00:00:00 2001 From: AwdhatCodes <157990984+AwdhatCodes@users.noreply.github.com> Date: Sun, 1 Dec 2024 10:02:02 +0300 Subject: [PATCH 05/10] Rename DepositTransactionClass to DepositTransaction.java --- .../{DepositTransactionClass => DepositTransaction.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/AP-Assignment-main/{DepositTransactionClass => DepositTransaction.java} (100%) diff --git a/src/AP-Assignment-main/DepositTransactionClass b/src/AP-Assignment-main/DepositTransaction.java similarity index 100% rename from src/AP-Assignment-main/DepositTransactionClass rename to src/AP-Assignment-main/DepositTransaction.java From 3f6b66fee212abbcec0f0c3a01fff582525e5c62 Mon Sep 17 00:00:00 2001 From: AwdhatCodes <157990984+AwdhatCodes@users.noreply.github.com> Date: Sun, 1 Dec 2024 10:02:25 +0300 Subject: [PATCH 06/10] Rename InsufficientFundsExceptionClass to InsufficientFundsException.java --- ...ficientFundsExceptionClass => InsufficientFundsException.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/AP-Assignment-main/{InsufficientFundsExceptionClass => InsufficientFundsException.java} (100%) diff --git a/src/AP-Assignment-main/InsufficientFundsExceptionClass b/src/AP-Assignment-main/InsufficientFundsException.java similarity index 100% rename from src/AP-Assignment-main/InsufficientFundsExceptionClass rename to src/AP-Assignment-main/InsufficientFundsException.java From 94486ee0dfdbd0d4edb534bcc1469c090541d963 Mon Sep 17 00:00:00 2001 From: AwdhatCodes <157990984+AwdhatCodes@users.noreply.github.com> Date: Sun, 1 Dec 2024 10:02:43 +0300 Subject: [PATCH 07/10] Rename MainClass to Main.java --- src/AP-Assignment-main/{MainClass => Main.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/AP-Assignment-main/{MainClass => Main.java} (100%) diff --git a/src/AP-Assignment-main/MainClass b/src/AP-Assignment-main/Main.java similarity index 100% rename from src/AP-Assignment-main/MainClass rename to src/AP-Assignment-main/Main.java From 34547d328fd85404094061410ff4952b1411021a Mon Sep 17 00:00:00 2001 From: AwdhatCodes <157990984+AwdhatCodes@users.noreply.github.com> Date: Sun, 1 Dec 2024 10:03:00 +0300 Subject: [PATCH 08/10] Rename TransactionInterface to TransactionInterface.java --- .../{TransactionInterface => TransactionInterface.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/AP-Assignment-main/{TransactionInterface => TransactionInterface.java} (100%) diff --git a/src/AP-Assignment-main/TransactionInterface b/src/AP-Assignment-main/TransactionInterface.java similarity index 100% rename from src/AP-Assignment-main/TransactionInterface rename to src/AP-Assignment-main/TransactionInterface.java From 104ee6aafcd4107886d9e0f34f11c85a5f0e8b7d Mon Sep 17 00:00:00 2001 From: AwdhatCodes <157990984+AwdhatCodes@users.noreply.github.com> Date: Sun, 1 Dec 2024 10:03:23 +0300 Subject: [PATCH 09/10] Rename WithdrawalTransactionClass to WithdrawalTransaction.java --- .../{WithdrawalTransactionClass => WithdrawalTransaction.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/AP-Assignment-main/{WithdrawalTransactionClass => WithdrawalTransaction.java} (100%) diff --git a/src/AP-Assignment-main/WithdrawalTransactionClass b/src/AP-Assignment-main/WithdrawalTransaction.java similarity index 100% rename from src/AP-Assignment-main/WithdrawalTransactionClass rename to src/AP-Assignment-main/WithdrawalTransaction.java From cc0e7391f8e936de70c92d0b1f4e538a55c67e7f Mon Sep 17 00:00:00 2001 From: AwdhatCodes Date: Wed, 11 Dec 2024 21:51:12 +0300 Subject: [PATCH 10/10] Advanced Programming Assignment --- src/farid/BankAccount.java | 19 +++++++++ src/farid/BaseTransaction.java | 47 +++++++++++++++++++++++ src/farid/DepositTransaction.java | 20 ++++++++++ src/farid/InsufficientFundsException.java | 6 +++ src/farid/Main.java | 26 +++++++++++++ src/farid/TransactionInterface.java | 10 +++++ src/farid/WithdrawalTransaction.java | 28 ++++++++++++++ 7 files changed, 156 insertions(+) create mode 100644 src/farid/BankAccount.java create mode 100644 src/farid/BaseTransaction.java create mode 100644 src/farid/DepositTransaction.java create mode 100644 src/farid/InsufficientFundsException.java create mode 100644 src/farid/Main.java create mode 100644 src/farid/TransactionInterface.java create mode 100644 src/farid/WithdrawalTransaction.java diff --git a/src/farid/BankAccount.java b/src/farid/BankAccount.java new file mode 100644 index 0000000..27573a3 --- /dev/null +++ b/src/farid/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/farid/BaseTransaction.java b/src/farid/BaseTransaction.java new file mode 100644 index 0000000..6001e33 --- /dev/null +++ b/src/farid/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/farid/DepositTransaction.java b/src/farid/DepositTransaction.java new file mode 100644 index 0000000..bea2e69 --- /dev/null +++ b/src/farid/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/farid/InsufficientFundsException.java b/src/farid/InsufficientFundsException.java new file mode 100644 index 0000000..494041d --- /dev/null +++ b/src/farid/InsufficientFundsException.java @@ -0,0 +1,6 @@ +public class InsufficientFundsException extends Exception { + public InsufficientFundsException(String message) { + super(message); + } +} +//insufficient Funds diff --git a/src/farid/Main.java b/src/farid/Main.java new file mode 100644 index 0000000..314d389 --- /dev/null +++ b/src/farid/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/farid/TransactionInterface.java b/src/farid/TransactionInterface.java new file mode 100644 index 0000000..376b299 --- /dev/null +++ b/src/farid/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/farid/WithdrawalTransaction.java b/src/farid/WithdrawalTransaction.java new file mode 100644 index 0000000..4d37c48 --- /dev/null +++ b/src/farid/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; + } +}