Skip to content

Commit 107a59e

Browse files
committed
feat: implement BusinessCheckingAccount and MoneyOrder classes
1 parent 1c93014 commit 107a59e

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.codedifferently.lesson17.bank;
2+
import java.util.Set;
3+
4+
public class BusinessCheckingAccount extends CheckingAccount {
5+
6+
public BusinessCheckingAccount(String accountNumber, Set<Customer> owners) {
7+
super(accountNumber, owners);
8+
validateBusinessOwners();
9+
}
10+
11+
public BusinessCheckingAccount(String accountNumber, Set<Customer> owners, double initialBalance) {
12+
super(accountNumber, owners, initialBalance);
13+
validateBusinessOwners();
14+
}
15+
16+
private void validateBusinessOwners() {
17+
boolean hasBusinessOwner = getOwners().stream()
18+
.anyMatch(Customer::isBusiness);
19+
20+
if(!hasBusinessOwner) {
21+
throw new IllegalArgumentException("At least one owner must be a business.");
22+
}
23+
}
24+
25+
26+
public String getAccountType() {
27+
return "Business Checking Account";
28+
}
29+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.codedifferently.lesson17.bank;
2+
3+
public class MoneyOrder {
4+
private final String moneyOrderNumber;
5+
private final String payee;
6+
private final String sourceAccountNumber;
7+
private final Double amount;
8+
private Boolean deposited = false;
9+
10+
public MoneyOrder(String moneyOrderNumber, String payee, String sourceAccountNumber, Double amount) {
11+
if (amount <= 0) {
12+
throw new IllegalArgumentException("Invalid amount");
13+
}
14+
this.moneyOrderNumber = moneyOrderNumber;
15+
this.payee = payee;
16+
this.sourceAccountNumber = sourceAccountNumber;
17+
this.amount = amount;
18+
}
19+
20+
public void depositFunds(CheckingAccount account) {
21+
if (deposited) {
22+
throw new IllegalStateException("Money order " + moneyOrderNumber + " has already been deposited.");
23+
}
24+
account.deposit(amount);
25+
deposited = true;
26+
}
27+
28+
public String getMoneyOrderNumber() {
29+
return moneyOrderNumber;
30+
}
31+
32+
public String getPayee() {
33+
return payee;
34+
}
35+
36+
public String getSourceAccountNumber() {
37+
return sourceAccountNumber;
38+
}
39+
40+
public Double getAmount() {
41+
return amount;
42+
}
43+
44+
public Boolean getDeposited() {
45+
return deposited;
46+
}
47+
}

0 commit comments

Comments
 (0)