Java OOP bank simulation: customers, savings/checking accounts, deposits, withdrawals, transfers and a simple portfolio view. Originally a coursework UML project; this revision opens the source in a Maven layout, fixes account ownership, and routes money movement through BankManager.
- Individual and institutional customers
- Savings and checking accounts with interest helpers
- Account lifecycle via
AccountManagement - Deposits, withdrawals and transfers via
TransactionExecution - Per-customer financial portfolio totals
classDiagram
direction TB
class AccountManagement {
<<interface>>
+createAccount()
+deleteAccount()
+displayAccountDetails()
+updateContactDetails()
}
class TransactionExecution {
<<interface>>
+deposit()
+withdraw()
+transfer()
}
class BankManager {
-accounts: List~Account~
}
class Customer {
<<abstract>>
#name: String
#address: String
#contactDetails: String
+addAccount()
+removeAccount()
}
class IndividualCustomer
class InstitutionalCustomer
class Account {
<<abstract>>
#accountNumber: String
#balance: double
+applyInterest()
+calculateFutureBalance()
}
class SavingsAccount
class CheckingAccount
class FinancialPortfolio {
+calculateTotalValue()
+comparePortfolio()
}
class Transaction {
-type: String
-amount: double
}
AccountManagement <|.. BankManager
TransactionExecution <|.. BankManager
Customer <|-- IndividualCustomer
Customer <|-- InstitutionalCustomer
Account <|-- SavingsAccount
Account <|-- CheckingAccount
BankManager o-- Account
Customer o-- Account
Customer *-- FinancialPortfolio
FinancialPortfolio o-- Account
Account o-- Transaction
Course UML diagram (Visual Paradigm):
./mvnw test
./mvnw -q exec:javaOn Windows:
mvnw.cmd test
mvnw.cmd -q exec:java- Interest rates are annual percentages (for example
1.5means 1.5%). - Transfers fail when the source account has insufficient funds; balances stay unchanged.
- Account numbers must be unique inside one
BankManagerinstance.
MIT
Small doc touch-ups land through pull requests.
