클래스를 사용해서 돼지저금통을 만들어보자

로직 Class와 UI Class 그리고 Main으로 나누어서 만들어 보려고 한다
로직 Class 를 만들어 보자
PiggySave라는 이름의 로직 Class를 만들었다
public class PiggySave {
//데이터 누적을 위한 변수
int current;
}
그리고 데이터 즉 금액의 누적을 위해 변수를 하나 만들어주고
입금 로직
//입금 로직
//생성자
public int deposit(int money){
this.current = this.current+money;
return this.current;
}
입금 로직 을 만들어 주고 그 값을 current에 저장되도록 만들었다
출금 로직
//출금 로직
public int withdraw(int amount){
//리턴값
int result= 0;
if(this.current<amount){ // 기존 잔액이 출금액 보다 작을때
result= this.current;
this.current=0;
}else{
result=this.current-amount;
}
return result;
}
출금 로직은 입금 로직보다 조금 복잡해 보이지만 복잡하다
우선 기존 되지 저금통 안에 있는 금액보다 많은 금액을 출금하려 하면 결과가 못 나오게 만들어 주고
정상적인 출금을 진행할때는 current에서 출금 변수인 amount를 빼도록 로직을 작성하였습니다
그리고 메소드 타입의 리턴을 해주면서 출금의 로직은 끝났습니다
⭐로직 Class PiggySave 완성
public class PiggySave {
//데이터 누적을 위한 변수
int current;
//입금 로직
//생성자
public int deposit(int money){
this.current = this.current+money;
return this.current;
}
//출금 로직
public int withdraw(int amount){
//리턴값
int result= 0;
if(this.current<amount){ // 기존 잔액이 출금액 보다 작을때
result= this.current;
this.current=0;
}else{
result=this.current-amount;
}
return result;
}
}
UI로직 PiggySaveUI
의존적인 UI
public class PiggySaveUI {
PiggySave save;
//Piggysave 의 생성자
public PiggySaveUI(PiggySave save) {
this.save = save;
}
우선 만들어두었던 PiggySave를 불러왔습니다 UI Class는 로직 Class 없이는 아무것도 할 수 없기에 먼저 불러와줍니다
안내문구
public void dojob(){
Scanner scanner = new Scanner(System.in);
System.out.println("1.입금 , 2.출금 , 3.종료");
int oper = Integer.parseInt(scanner.nextLine());
}
그리고 본격적인 일을 하기 앞서 사용자에게 안내할 안내문구를 작성해주었습니다
본격적인 UI 역할
switch (oper){
case 1 :
System.out.println("입금할 금액을 입력해주세요");
//입금할 금액을 입력하는 변수 Scanner로 사용자에게 받기
int money = Integer.parseInt(scanner.nextLine());
//입금로직
int total = save.deposit(money);
System.out.println("현재 잔액은"+ total);
break;
case 2 :
System.out.println("출금할 금액을 입력해주세요");
//출금할 금액을 입력하는 변수 Scanner로 사용자에게 받기
int amount = Integer.parseInt(scanner.nextLine());
//출금로직
int totals = save.withdraw(amount);
System.out.println("현재 잔액은 "+totals);
break;
case 3 :
return;
}
입금과 출금 그리고 종료의 상황에 맞는 로직을 작성해 주었습니다 UI Class 같은경우는 복잡한 로직의 사용이 없고
입금 로직에는 입금할 금액을 Scanner로 받고 받은 값을 입금 로직으로 연결시켜주었습니다
출금 로직또한 마찬가지입니다
여기서 Integer.parseInt(scanner.nextLine()) 이것이 좀 생소한 코드인데
✨java Integer.parseInt() 은 문자열을 정수int 타입으로 변환해 주는 코드입니다
⭐UI로직 완성
public class PiggySaveUI {
PiggySave save;
//Piggysave 의 생성자
public PiggySaveUI(PiggySave save) {
this.save = save;
}
public void dojob(){
Scanner scanner = new Scanner(System.in);
System.out.println("1.입금 , 2.출금 , 3.종료");
int oper = Integer.parseInt(scanner.nextLine());
switch (oper){
case 1 :
System.out.println("입금할 금액을 입력해주세요");
//입금할 금액을 입력하는 변수 Scanner로 사용자에게 받기
int money = Integer.parseInt(scanner.nextLine());
//입금로직
int total = save.deposit(money);
System.out.println("현재 잔액은"+ total);
break;
case 2 :
System.out.println("출금할 금액을 입력해주세요");
//출금할 금액을 입력하는 변수 Scanner로 사용자에게 받기
int amount = Integer.parseInt(scanner.nextLine());
//출금로직
int totals = save.withdraw(amount);
System.out.println("현재 잔액은 "+totals);
break;
case 3 :
return;
}
dojob();
}
}
Main
Main 은 완성된 로직 Class와 UI Class를 불러오기만 하면 끝난다!!
public class Main {
public static void main(String[] args) {
PiggySave save = new PiggySave();
PiggySaveUI ui = new PiggySaveUI(save);//save가 없으면 ui는 아무것도 할수없다
//안내 UI
ui.dojob();
}
}
마지막 안내 UI를 불러주면서 깔끔하게 마무리되었습니다
'개발자 성장 일지' 카테고리의 다른 글
| 2022.03.12 반성 다짐 그리고 설계 (0) | 2022.03.12 |
|---|---|
| 2022.03.10. 투표 서비스 < 유권자 패키지> (0) | 2022.03.11 |
| 2022.03.10 투표 서비스 <설계 그리고 후보자 패키지> (0) | 2022.03.10 |
| 2022.03.08 수업일지 (0) | 2022.03.08 |
| 2022.03.07 수업 일지 (0) | 2022.03.07 |