Skip to content

Commit 46beb05

Browse files
committed
feat: added additional code to get requirement 1 (saving account) passing
1 parent 1065d42 commit 46beb05

File tree

4 files changed

+144
-239
lines changed

4 files changed

+144
-239
lines changed
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
package com.codedifferently.lesson17.bank;
2+
3+
import com.codedifferently.lesson17.bank.exceptions.InsufficientFundsException;
4+
import java.util.Set;
5+
6+
/** Represents a account. */
7+
public class Account {
8+
9+
private final Set<Customer> owners;
10+
private final String accountNumber;
11+
protected double balance;
12+
protected boolean isActive;
13+
14+
/**
15+
* Creates a new account.
16+
*
17+
* @param accountNumber The account number.
18+
* @param owners The owners of the account.
19+
* @param initialBalance The initial balance of the account.
20+
*/
21+
public Account(String accountNumber, Set<Customer> owners, double initialBalance) {
22+
this.accountNumber = accountNumber;
23+
this.owners = owners;
24+
this.balance = initialBalance;
25+
this.isActive = true;
26+
}
27+
28+
/**
29+
* Gets the account number.
30+
*
31+
* @return The account number.
32+
*/
33+
public String getAccountNumber() {
34+
return accountNumber;
35+
}
36+
37+
/**
38+
* Gets the owners of the account.
39+
*
40+
* @return The owners of the account.
41+
*/
42+
public Set<Customer> getOwners() {
43+
return owners;
44+
}
45+
46+
/**
47+
* Deposits funds into the account.
48+
*
49+
* @param amount The amount to deposit.
50+
*/
51+
public void deposit(double amount) throws IllegalStateException {
52+
if (isClosed()) {
53+
throw new IllegalStateException("Cannot deposit to a closed account");
54+
}
55+
if (amount <= 0) {
56+
throw new IllegalArgumentException("Deposit amount must be positive");
57+
}
58+
balance += amount;
59+
}
60+
61+
/**
62+
* Withdraws funds from the account.
63+
*
64+
* @param amount
65+
* @throws InsufficientFundsException
66+
*/
67+
public void withdraw(double amount) throws InsufficientFundsException {
68+
if (isClosed()) {
69+
throw new IllegalStateException("Cannot withdraw from a closed account");
70+
}
71+
if (amount <= 0) {
72+
throw new IllegalStateException("Withdrawal amount must be positive");
73+
}
74+
if (balance < amount) {
75+
throw new InsufficientFundsException("Account does not have enough funds for withdrawal");
76+
}
77+
balance -= amount;
78+
}
79+
80+
/**
81+
* Gets the balance of the account.
82+
*
83+
* @return The balance of the account.
84+
*/
85+
public double getBalance() {
86+
return balance;
87+
}
88+
89+
/** Closes the account. */
90+
public void closeAccount() throws IllegalStateException {
91+
if (balance > 0) {
92+
throw new IllegalStateException("Cannot close account with a positive balance");
93+
}
94+
isActive = false;
95+
}
96+
97+
/**
98+
* Checks if the account is closed.
99+
*
100+
* @return True if the account is closed, otherwise false.
101+
*/
102+
public boolean isClosed() {
103+
return !isActive;
104+
}
105+
106+
@Override
107+
public int hashCode() {
108+
return accountNumber.hashCode();
109+
}
110+
111+
@Override
112+
public boolean equals(Object obj) {
113+
if (obj instanceof Account other) {
114+
return accountNumber.equals(other.accountNumber);
115+
}
116+
return false;
117+
}
118+
119+
@Override
120+
public String toString() {
121+
return getClass().getSimpleName()
122+
+ "{accountNumber='"
123+
+ accountNumber
124+
+ '\''
125+
+ ", balance="
126+
+ balance
127+
+ ", isActive="
128+
+ isActive
129+
+ '}';
130+
}
131+
}
Lines changed: 4 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -1,131 +1,18 @@
11
package com.codedifferently.lesson17.bank;
22

3-
import com.codedifferently.lesson17.bank.exceptions.InsufficientFundsException;
43
import java.util.Set;
54

6-
/** Represents a checking account. */
7-
public class CheckingAccount {
8-
9-
private final Set<Customer> owners;
10-
private final String accountNumber;
11-
private double balance;
12-
private boolean isActive;
5+
public class CheckingAccount extends Account {
136

147
/**
15-
* Creates a new checking account.
8+
* Creates a new saving account.
169
*
1710
* @param accountNumber The account number.
1811
* @param owners The owners of the account.
1912
* @param initialBalance The initial balance of the account.
13+
* @return
2014
*/
2115
public CheckingAccount(String accountNumber, Set<Customer> owners, double initialBalance) {
22-
this.accountNumber = accountNumber;
23-
this.owners = owners;
24-
this.balance = initialBalance;
25-
isActive = true;
26-
}
27-
28-
/**
29-
* Gets the account number.
30-
*
31-
* @return The account number.
32-
*/
33-
public String getAccountNumber() {
34-
return accountNumber;
35-
}
36-
37-
/**
38-
* Gets the owners of the account.
39-
*
40-
* @return The owners of the account.
41-
*/
42-
public Set<Customer> getOwners() {
43-
return owners;
44-
}
45-
46-
/**
47-
* Deposits funds into the account.
48-
*
49-
* @param amount The amount to deposit.
50-
*/
51-
public void deposit(double amount) throws IllegalStateException {
52-
if (isClosed()) {
53-
throw new IllegalStateException("Cannot deposit to a closed account");
54-
}
55-
if (amount <= 0) {
56-
throw new IllegalArgumentException("Deposit amount must be positive");
57-
}
58-
balance += amount;
59-
}
60-
61-
/**
62-
* Withdraws funds from the account.
63-
*
64-
* @param amount
65-
* @throws InsufficientFundsException
66-
*/
67-
public void withdraw(double amount) throws InsufficientFundsException {
68-
if (isClosed()) {
69-
throw new IllegalStateException("Cannot withdraw from a closed account");
70-
}
71-
if (amount <= 0) {
72-
throw new IllegalStateException("Withdrawal amount must be positive");
73-
}
74-
if (balance < amount) {
75-
throw new InsufficientFundsException("Account does not have enough funds for withdrawal");
76-
}
77-
balance -= amount;
78-
}
79-
80-
/**
81-
* Gets the balance of the account.
82-
*
83-
* @return The balance of the account.
84-
*/
85-
public double getBalance() {
86-
return balance;
87-
}
88-
89-
/** Closes the account. */
90-
public void closeAccount() throws IllegalStateException {
91-
if (balance > 0) {
92-
throw new IllegalStateException("Cannot close account with a positive balance");
93-
}
94-
isActive = false;
95-
}
96-
97-
/**
98-
* Checks if the account is closed.
99-
*
100-
* @return True if the account is closed, otherwise false.
101-
*/
102-
public boolean isClosed() {
103-
return !isActive;
104-
}
105-
106-
@Override
107-
public int hashCode() {
108-
return accountNumber.hashCode();
109-
}
110-
111-
@Override
112-
public boolean equals(Object obj) {
113-
if (obj instanceof CheckingAccount other) {
114-
return accountNumber.equals(other.accountNumber);
115-
}
116-
return false;
117-
}
118-
119-
@Override
120-
public String toString() {
121-
return "CheckingAccount{"
122-
+ "accountNumber='"
123-
+ accountNumber
124-
+ '\''
125-
+ ", balance="
126-
+ balance
127-
+ ", isActive="
128-
+ isActive
129-
+ '}';
16+
super(accountNumber, owners, initialBalance);
13017
}
13118
}

0 commit comments

Comments
 (0)