Skip to content

Latest commit

 

History

History
164 lines (83 loc) · 4.12 KB

README.md

File metadata and controls

164 lines (83 loc) · 4.12 KB

This repo is an Object-Oriented implementation of an online bank done by Vasily Ilin and Adam Streich as part of the Spring 2020 iteration of CS591, Object-Oriented Design, at Boston University. Go to Bank Design Document.pdf for a detailed description of the project.

Below is the complete list of classes used in the Bank. We give brief comments about some of them, and indicate inheritance structure with tabs.

Core classes:

Main.java

Bank.java -- holds static pointers to manager, customers, current date and the stock market

Account.java

CheckingAccount.java

ManagerAccount.java

SavingsAccount.java

SecuritiesAccount.java

Loan.java -- a loan is a type of account. It can be transferred and deposited to.

PendingLoan.java -- pending loan. Becomes a loan if approved.

User.java -- user of the bank

Customer.java

Manager.java

StockMarket.java -- stock market has stocks and prices of stocks

Transaction.java -- holds date and amount

TransactionBuyStock.java -- holds stock

TransactionDeposit.java

TransactionSellStock.java -- holds stock

TransactionTransferIn.java

TransactionTransferOut.java

TransactionWithdrawal.java

JSONTools.java -- class with static methods to read from and write to JSON files. Each class has its own toJSON() and fromJSON() methods.

General classes:

Constants.java -- holds constants such as conversion rates between currencies, interest rates, etc.

General.java -- some general utility functions

IOTools.java -- some general utility functions related to I/O

Small helper classes:

Name.java - object for holding a user’s first and last names.

Password.java - object to hold a user’s password. Allows for specific conditional checks.

Permisions.java - a way to define what a user can do, say if you wanted different levels of customers, not really used fully, mostly for extendability.

Collateral.java -- collateral for a loan. Holds name and value of collateral

Credentials.java -- credentials for the user (name, username, password)

UName.java - object to hold a user’s username. Allows for specific conditional checks. Stock.java -- holds name and ID. Does not have price because prices are set by the stock market

Collections (each one is just a collection of the respective objects):

Accounts.java

Customers.java

Stocks.java

Transactions.java

Behaviors (each one is a behavior of an account):

DepositBehavior.java

CanDepositBehavior.java

CannotDepositBehavior.java

TransferBehavior.java

CannotTransferBehavior.java

UncheckedTransferBehavior.java

WithdrawBehavior.java

CannotWithdrawBehavior.java

CanWithdrawBehavior.java

EndOfMonthBehavior.java

EndOfMonthInterestBehavior.java

EndOfMonthNegativeInterestBehavior.java

EndOfMonthNoBehavior.java

GUI:

General GUI:

BeginGUI.form - used to help create and modify the gui

BeginGUI.java - the “Launcher” for the app, creates a new Bank and manager if one doesnt exist, loads it if one does

GUI.form - used to help create and modify the gui

GUI.java - the GUI used to login or create a new customer

Manager GUI:

AddStockPanel.java -- panel for adding a new stock

EmitterPanel.java -- abstract class for a panel that emits text, and has listeners. Useful for the log of actions.

Listener.java -- listener (listens to EmitterPanel)

MainManagerFrame.java -- main frame

ManagerGUI.java -- entry point for manager GUI

ManagerToolbar.java -- toolbar panel

SetStockPricePanel.java -- panel to set stock prices

StockPanel.java -- panel holding AddStockPanel and SetStockPricePanel

TextPanel.java -- panel able to display text

TransactionPanel.java -- panel to get daily report

TimePanel.java -- panel to move time forward

CustomerPanel.java -- a panel to view the customer information

Customer GUI:

CustomerGUI.form - used to help create and modify the gui

CustomerGUI.java - go to Appendix A, lot to say here.

NewAccountGUI.form - used to help create and modify the gui

NewAccountGUI.java - presents an application used to created a new account

NewLoanGUI.form - used to help create and modify the gui

NewLoanGUI.java - simple GUI to request a new loan

TransferGUI.form - used to help create and modify the gui

TransferGUI.java - simple GUI to transfer money