Skip to content

Lab Complete #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -103,4 +103,5 @@ target/*

.project
.classpath
.settings
.settings
/target/
Binary file added UML/Bank-AccountUML.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 0 additions & 4 deletions src/main/java/io/zipcoder/Account.java

This file was deleted.

83 changes: 83 additions & 0 deletions src/main/java/io/zipcoder/account/Account.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package io.zipcoder.account;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import io.zipcoder.holder.AccountHolder;
import io.zipcoder.transaction.Transaction;
import io.zipcoder.transaction.TransactionType;

public abstract class Account {

private final AccountHolder accountHolder;
private BigDecimal balance;
private final long accountNumber;
private final List<Transaction> transactionList;

public Account(AccountHolder accountHolder, BigDecimal balance, long accountNumber) {
if(balance.compareTo(BigDecimal.ZERO)<0){
throw new IllegalArgumentException("Initial balance can't be negative");
}
this.accountHolder = accountHolder;
this.balance = balance;
this.accountNumber = accountNumber;
this.transactionList = new ArrayList<Transaction>();
addTransaction(TransactionType.CREATION, balance, balance);
}

public AccountHolder getAccountHolder() {
return accountHolder;
}

public BigDecimal getBalance() {
return balance;
}

public long getAccountNumber() {
return accountNumber;
}

public void withdraw(BigDecimal amount) {
if (amount.compareTo(BigDecimal.ZERO) > 0) {
this.balance = balance.subtract(amount);
this.transactionList.add(new Transaction(TransactionType.WITHDRAWAL, amount, this.balance));
} else {
throw new IllegalArgumentException("The amount is negative.");
}

}

public void deposit(BigDecimal amount) {

if (amount.compareTo(BigDecimal.ZERO) > 0) {
this.balance = balance.add(amount);
this.addTransaction(TransactionType.DEPOSIT, amount, this.balance);

} else {
throw new IllegalArgumentException("Amount can't be negative.");
}

}

protected void addTransaction(TransactionType type, BigDecimal amount, BigDecimal remainingBalance ){
transactionList.add(new Transaction(type, amount, remainingBalance));
}

public String printTransactions(int n) {
String result = "";
int index = transactionList.size();

if (n <= index) {
for (int i = 0; i < n; i++) {
result+=transactionList.get(index-1)+"\n";
index--;
}
}else{
return "There are not enough transactions in this account.";
}
return result;
}


}
40 changes: 40 additions & 0 deletions src/main/java/io/zipcoder/account/CheckingAccount.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package io.zipcoder.account;

import java.math.BigDecimal;

import io.zipcoder.holder.AccountHolder;

public class CheckingAccount extends Account {

private boolean canOverDraft;


public CheckingAccount(AccountHolder accountHolder, BigDecimal balance, long accountNumber, boolean canOverDraft) {
super(accountHolder, balance, accountNumber);
this.canOverDraft=canOverDraft;
}


public boolean isCanOverDraft() {
return canOverDraft;
}


public void setCanOverDraft(boolean canOverDraft) {
this.canOverDraft = canOverDraft;
}

@Override
public void withdraw(BigDecimal amount){
if(amount.subtract(this.getBalance()).compareTo(BigDecimal.ZERO)>0){
if(isCanOverDraft()){
super.withdraw(amount);
}else{
System.out.println("This accoun't doesn't have enough founds.");
}
}else{
super.withdraw(amount);
}
}

}
40 changes: 40 additions & 0 deletions src/main/java/io/zipcoder/account/InvestmentAccount.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package io.zipcoder.account;

import java.math.BigDecimal;

import io.zipcoder.holder.AccountHolder;

public class InvestmentAccount extends Account {

private double interestRate;

public InvestmentAccount(AccountHolder accountHolder, BigDecimal balance, long accountNumber, double interestRate) {
super(accountHolder, balance, accountNumber);
this.interestRate = interestRate;
}

public double getInterestRate() {
return interestRate;
}

public void setInterestRate(double interestRate) {
this.interestRate = interestRate;
}

public void applyInterest(){

BigDecimal interestBD = new BigDecimal(this.interestRate);

BigDecimal totalInterest = interestBD.multiply(this.getBalance()).divide(new BigDecimal("100.00"));

super.deposit(totalInterest);

}







}
40 changes: 40 additions & 0 deletions src/main/java/io/zipcoder/account/SavingAccount.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package io.zipcoder.account;

import java.math.BigDecimal;

import io.zipcoder.holder.AccountHolder;

public class SavingAccount extends InvestmentAccount{

private boolean canOverDraft;


public SavingAccount(AccountHolder accountHolder, BigDecimal balance, long accountNumber, boolean canOverDraft,double interestRate) {
super(accountHolder, balance, accountNumber,interestRate);
this.canOverDraft=canOverDraft;
}


public boolean isCanOverDraft() {
return canOverDraft;
}


public void setCanOverDraft(boolean canOverDraft) {
this.canOverDraft = canOverDraft;
}

@Override
public void withdraw(BigDecimal amount){
if(amount.subtract(this.getBalance()).compareTo(BigDecimal.ZERO)>0){
if(isCanOverDraft()){
super.withdraw(amount);
}else{
System.out.println("This accoun't doesn't have enough founds.");
}
}else{
super.withdraw(amount);
}
}

}
5 changes: 5 additions & 0 deletions src/main/java/io/zipcoder/holder/AccountHolder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package io.zipcoder.holder;

public abstract class AccountHolder {

}
23 changes: 23 additions & 0 deletions src/main/java/io/zipcoder/holder/Business.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package io.zipcoder.holder;

public class Business extends AccountHolder {

private String businessName;

public Business(String businessName) {
this.businessName = businessName;
}

public String getBusinessName() {
return businessName;
}

public void setBusinessName(String businessName) {
this.businessName = businessName;
}





}
40 changes: 40 additions & 0 deletions src/main/java/io/zipcoder/holder/Person.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package io.zipcoder.holder;

public class Person extends AccountHolder {
private String firstName;
private String middleName;
private String lastName;

public Person(String firstName, String middleName, String lastName){

this.firstName = firstName;
this.middleName = middleName;
this.lastName = lastName;

}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getMiddleName() {
return middleName;
}

public void setMiddleName(String middleName) {
this.middleName = middleName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

}
28 changes: 28 additions & 0 deletions src/main/java/io/zipcoder/transaction/Transaction.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package io.zipcoder.transaction;

import java.math.BigDecimal;

public class Transaction {

private final TransactionType type;
private final BigDecimal amount;
private final BigDecimal remainingBalance;


public Transaction(TransactionType type, BigDecimal amount, BigDecimal remainingBalance ){

this.type = type;
this.amount = amount;
this.remainingBalance = remainingBalance;

}


@Override
public String toString() {
return "Transaction: [Type=" + type + ", Amount=" + amount + ", Remaining Balance=" + remainingBalance + "]";
}



}
7 changes: 7 additions & 0 deletions src/main/java/io/zipcoder/transaction/TransactionType.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package io.zipcoder.transaction;

public enum TransactionType {

WITHDRAWAL,DEPOSIT, CREATION, INTEREST

}
Loading