Languages/Java
[자바 객체 지향 프로그래밍] 02. 객체 설계하기
Dev다D
2021. 1. 27. 19:37
반응형
03. 접근 제어자 연습
'접근 제어자' 강의에서 한 것처럼 Person 클래스와 BankAccount 클래스의 모든 인스턴스 변수들을 private으로 설정해주세요. 각 변수에 해당하는 'setter'(예: setName)과 'getter'(예: getName) 메소드를 써주고, BankDriver에서 오류가 나지 않도록 적절히 적용해주세요!
프로그램을 수정하여 오류가 나오지 않도록 하고, 테스트 케이스는 유지하여 이전 문제와 같이 아래의 출력값이 나오도록 해야 합니다.
> 30000원 입금하였습니다. 잔고: 530000원, 현금: 70000원
> true
> 170000원 출금하였습니다. 잔고: 360000원, 현금: 240000원
> true
> 입금 실패입니다. 잔고: 360000원, 현금: 240000원
> false
> 출금 실패입니다. 잔고: 360000원, 현금: 240000원
> false
과제를 하면서 getter와 setter의 개념을 알 수 있었고 응용해서 코딩할 수 있게되었다.
public class Person01 {
private String name;
private int age;
private int cashAmount;
private BankAccount01 account;
public void setName(String newName) {
name = newName;
}
public String getName() {
return name;
}
public void setAge(int newAge) {
if (newAge >= 0) {
age = newAge;
}
}
public int getAge() {
return age;
}
public void setCashAmount(int newCashAmount) {
if (newCashAmount >= 0) {
cashAmount = newCashAmount;
}
}
public int getCashAmount() {
return cashAmount;
}
public void setAccount(BankAccount01 newAccount) {
account = newAccount;
}
public BankAccount01 getAccount() {
return account;
}
}
public class BankAccount01 {
private int balance;
private Person01 owner;
public void setBalance(int newBalance) {
if (newBalance >= 0) {
balance = newBalance;
}
}
public int getBalance() {
return balance;
}
public void setOwner(Person01 newOwner) {
owner = newOwner;
}
public Person01 getOwner() {
return owner;
}
boolean deposit (int amount) {
if((amount >= 0) && (owner.getCashAmount() > amount)) {
owner.setCashAmount(owner.getCashAmount() - amount);
balance = balance + amount;
System.out.println(amount + "원 입금하였습니다. 잔고: " + balance + "원, 현금: " + owner.getCashAmount() + "원");
return true;
} else {
System.out.println("입금 실패입니다. 잔고: " + balance + "원, 현금: " + owner.getCashAmount() + "원");
return false;
}
}
boolean withdraw (int amount) {
if((amount >= 0 && balance > amount)) {
balance = balance - amount;
owner.setCashAmount(owner.getCashAmount() + amount);
System.out.println(amount + "원 출금하였습니다. 잔고: " + balance + "원, 현금: " + owner.getCashAmount() + "원");
return true;
} else {
System.out.println("출금실패입니다. 잔고: " + balance + "원, 현금: " + owner.getCashAmount() + "원");
return false;
}
}
}
public class BankDriver01 {
public static void main(String[] args) {
// 사람 선언
Person01 p1 = new Person01();
p1.setName("김신의");
p1.setAge(28);
p1.setCashAmount(30000);
// 은행 계좌 생성
BankAccount01 a1 = new BankAccount01();
a1.setBalance(10000);
p1.setAccount(a1);
a1.setOwner(p1);
Person01 p2 = new Person01();
p2.setName("김성실");
p2.setAge(29);
p2.setCashAmount(100000);
BankAccount01 a2 = new BankAccount01();
a2.setBalance(500000);
p2.setAccount(a2);
a2.setOwner(p2);
System.out.println(a2.deposit(30000));
System.out.println(a2.withdraw(170000));
System.out.println(a2.deposit(300000));
System.out.println(a2.withdraw(450000));
}
}
본 내용은 Codeit의 '자바 기초' 강의를
참고하여 작성한 내용입니다.
반응형