최근 김영한 선생님의 Java 강의를 다시 들으면서 복습 중인데 입문 강의가 종료된 기념으로
과거 Java의 J도 잘 모르던 시절 부트캠프 개인과제였던 키오스크 시스템을 재정비 해보았다.
우선 while문을 돌 때 가장 먼저 출력해야하는 Main Category.
1. HashMap을 하나하나 출력해주던 코드를 for문을 완벽하게 쓸 수 있게 되었기 때문에 전부 for문으로 돌면서 출력할 수 있도록 코드를 간결히 했다.
// System.out.println(menuList.get(1));
// System.out.println(menuList.get(2));
// System.out.println(menuList.get(3));
// System.out.println(menuList.get(4));
// System.out.println(menuList.get(5)); // HashMap 호출
for (int i = 1; i <= menuList.size(); i++) {
System.out.println(menuList.get(i));
}
2. if문으로 작성된 코드를 swich문으로 변경하고 String으로만 받던 scanner를 int로 직접 받아서 형변환 해주는 코드를 삭제
switch (order) {
case 1 :
commodity.output(espresso); //에스프레소 종류가 commodity 메서드 출력
//에스프레소 선택 시
Scanner scanner1 = new Scanner(System.in); // 메뉴선택 스캐너
int espressoNumber = scanner1.nextInt() ; // 유저가 입력한 특정 숫자값받기
Menu espressoList = (Menu) espresso.get(espressoNumber - 1); // 고객이 입력한 내용
System.out.println(espressoList.getName() + " | " + espressoList.getExplanation() + " | " + espressoList.getPlace());
System.out.println("위 메뉴를 장바구니에 추가하시겠습니까?");
System.out.println("1. 확인 2. 취소");
int espressoCheck = input.nextInt();
if (espressoCheck == 1) {
orderList.add(espressoList);
System.out.println("선택하신 메뉴가 장바구니에 추가되었습니다.");
} else {
}
break;
.
.
.
3. 주문 완료 후 대기 번호를 안내하는 메서드 생성
System.out.println("대기번호는 [1] 번 입니다."); //아직 구현할 수 없는 영역...
과거에는 번호 카운터를 세는 코드를 작성할 줄 몰라서 직접 출력하는 코드로 두었었다.
private static int orderNumberCounter = 1; // 주문 대기번호 카운터
static int generateOrderNumber() {
return orderNumberCounter++; // 대기번호 증가 및 반환
}
System.out.println("대기번호는 ["+ Order.generateOrderNumber() + "] 번 입니다.")
Order Class에서 대기번호 카운터를 하는 메서드를 하나 만들어 준 뒤에 Kiosk Main Class에서 불러와주는 코드로 리팩토링 해봤다.
추가로 분명 배열이나 swich문 내에서 반복적으로 주문 메뉴를 확인하는 것에 대해서도 메서드를 이용해서
간단하게 리팩토링이 될 것 같긴하나 아직 절차지향적인 코드를 가지고 간결하게 바꾸는 작업은 쉽지 않은 것 같다.
새로 코드를 짜는 것 보다 기존의 코드를 변경하는게 더 어렵다고 생각한다.
나머지 자바 강의를 다 듣고 조금 더 실력이 향상되면 이 프로젝트를 다시 리팩토링 해봐야겠다.
'🏕️내일배움캠프 > 📂키오스크 시스템 만들기(23.05.26)' 카테고리의 다른 글
개인과제 - 키오스크 시스템 만들기 (0) | 2023.06.08 |
---|