728x90
02. 은행 계좌 만들기 (2)
1 입금, 출금
2> 접근제어자
3 계좌이체
4 생성자
5 this
2. 접근제어자
Person 클래스와 BankAccount 클래스의 모든 인스턴스 변수들을 private으로 설정해주세요. 각 변수에 해당하는 'setter'(예: setName)과 'getter'(예: getName) 메소드를 써주고, BankDriver에서 오류가 나지 않도록 적절히 적용해주세요!
프로그램을 수정하여 오류가 나오지 않도록 하고, 테스트 케이스는 유지하여 이전 문제와 같이 아래의 출력값이 나오도록 해야 합니다.
테스트
이 실행결과가 나와야 합니다.
30000원 입금하였습니다. 잔고: 530000원, 현금: 70000원
true
170000원 출금하였습니다. 잔고: 360000원, 현금: 240000원
true
입금 실패입니다. 잔고: 360000원, 현금: 240000원
false
출금 실패입니다. 잔고: 360000원, 현금: 240000원
false
A. 해설
BankAccount 클래스
public class BankAccount {
private int balance;
private Person owner;
public void setBalance(int newBalance) { balance = newBalance; }
public int getBalanve() { return balance; }
public void setOwner(Person newOwner) { owner = newOwner; }
public Person getOwner() { return owner; }
// 파라미터 : 입금할 액수(정수)
// 리턴 : 성공여부(불린)
boolean deposit(int amount) {
// 입금할 액수가 0보다 작거나 현금보유량보다 클 경우 (실패)
if (amount < 0 || amount > owner.getCashAmount()) {
System.out.println("입금 실패입니다. 잔고: " + balance
+ "원, 현금: " + owner.getCashAmount() + "원");
System.out.println("false");
return false;
// 그 밖의 경우 (성공)
} else {
balance = balance + amount;
owner.setCashAmount(owner.getCashAmount() - amount);
System.out.println(amount +"원 입금하였습니다. 잔고: " + balance
+ "원, 현금: " + owner.getCashAmount() + "원");
System.out.println("true");
return true;
}
}
// 파라미터 : 출금할 액수(정수)
// 리턴 : 성공여부(불린)
boolean withdraw(int amount) {
// 출금할 액수가 0보다 작거나 잔고보다 클 경우 (실패)
if (amount < 0 || amount > balance) {
System.out.println("출금 실패입니다. 잔고: " + balance
+ "원, 현금: " + owner.getCashAmount() + "원");
System.out.println("false");
return false;
// 그 밖의 경우 (성공)
} else {
balance -= amount;
owner.setCashAmount(owner.getCashAmount() + amount);
System.out.println(amount + "원 출금하였습니다. 잔고: " + balance
+ "원, 현금: " + owner.getCashAmount() + "원");
System.out.println("true");
return true;
}
}
}
Person 클래스
public class Person {
private String name;
private int age;
private int cashAmount;
private BankAccount account;
public String getName() { return name; }
public void setName(String newName) { name = newName; }
public int getAge() { return age; }
public void setAge(int newAge) { age = newAge; }
public int getCashAmount() { return cashAmount; }
public void setCashAmount(int newCashAmount) { cashAmount = newCashAmount; }
public BankAccount getAccount() { return account; }
public void setAccount(BankAccount newAccount) { account = newAccount; }
}
Main 클래스
public class Main {
public static void main(String[] args) {
// p1 사람 선언
Person p1 = new Person();
p1.setName("다람이");
p1.setAge(23);
p1.setCashAmount(30000);
// a2 은행 계좌 생성
BankAccount a1 = new BankAccount();
a1.setBalance(100000);
// p1의 계좌 a1, a1의 사용자 p1 연결
p1.setAccount(a1);
a1.setOwner(p1);
// p2 사람 선언
Person p2 = new Person();
p2.setName("말랑이");
p2.setAge(21);
p2.setCashAmount(100000);
// a2 은행 계좌 생성
BankAccount a2 = new BankAccount();
a2.setBalance(500000);
// p2의 계좌 a2, a2의 사용자 p2 연결
p2.setAccount(a2);
a2.setOwner(p2);
a2.deposit(30000);
a2.withdraw(170000);
a2.deposit(620000);
a2.withdraw(890000);
}
}
출처 | 코드잇 (자바 기초)
728x90
'💠문제 풀이 > Java 문제 풀이' 카테고리의 다른 글
06. 특가 할인 매장 (0) | 2021.10.05 |
---|---|
05. 은행 계좌 만들기 (5) (0) | 2021.10.05 |
04. 은행 계좌 만들기 (4) (0) | 2021.10.05 |
03. 은행 계좌 만들기 (3) (0) | 2021.10.05 |
01. 은행 계좌 만들기 (1) (0) | 2021.09.28 |