| 필수기능 | 단계별 | 요구사항 |
|---|---|---|
| ✅ | Level 1 | 메뉴 출력하기, Scanner로 입력 받기 ( + 숫자 0 입력시 프로그램 종료 ) |
| ✅ | Level 2 | MenuItem 클래스 생성 (이름, 가격, 설명), List<MenuItem> 활용해 메뉴 목록 저장 + 출력 |
| ✅ | Level 3 | Kiosk 클래스 생성, start()로 프로그램 흐름 관리 ( + 메뉴 선택 기능 구현 ) |
| ✅ | Level 4 | Menu 클래스 생성, MenuItem을 카테고리별로 나누기 |
| ✅ | Level 5 | 캡슐화 , Getter, Setter 활용하여 데이터 접근 및 수정 |
| 도전기능 | 단계별 | 요구사항 |
|---|---|---|
| ✅ | Level 1 | 장바구니에 담기 (목록 + 금액 출력), 주문 완료 시 장바구니 초기화 |
| ❌ | Level 2 | Enum, 람다 & 스트림을 활용한 주문 및 장바구니 관리 |
extends(상속)도 시도해봤다. 하지만 튜터님 피드백을 듣고 나서 내가 정반대로 접근했다는 걸 깨달았다.메인에서 관리했어야 하는 듯 하지만.. 제출일 전날 병가로 출석하지 못했던 터라 이 부분을 적용하지 못한 게 아쉬움으로 남는다...🥹MenuItem 클래스에서 카테고리 속성을 추가하고, 객체에 하나씩 입력해 보기도 했다. (이건 아니라는 생각이 들었다..) 최종적으로는 Menu 클래스에 속성과 생성자를 추가하고, Kiosk에서 Menu 객체를 생성하는 방식으로 진행했다.
kiosk에서 menus(전체메뉴 리스트)를 사용하고, menu 객체 생성을 통해 카테고리 별로 필터링하기로 했다.
menuItem의 selectMenuNum도 지금 보니 필요가 없다,,,😂)
.size를 활용했다.다양한 메서드들을 만들어 분리해 사용하는 것이 코드의 가독성을 높이고 중복 코드를 줄일 수 있다.
나중에 수정할 때도 쉽다.
16,000원이 되어야 하는데(8,000) + (8,000 + 8,000) = 24,000원이 출력되는 것.+= 연산자를 사용했었는데 계속 틀린 값이 나와서 반복문을 계속 뜯어봤다.totalPrice 값을 List<String>으로 관리하고 있었다. cart 초기화하면서 아무 생각 없이 복붙해서 만들었던 것,, ➡︎ int 타입으로 변경했다.생각없이 코드 복붙하지 말자 😇
(팀원 분들과 해결했음) 해결이 안될 때는 다른 사람에게 보여주는 것도 나쁘지 않은 것 같다. 계속 이 코드를 봐서인지.. 이상한데 매몰되어 있어서인지 이 간단한 해결방법이 눈에 안들어오는 경우가 많았다.
double을 사용했다.int 타입으로 형변환을 했다.
(int)(item.getPrice())*1000; ➡︎ (int)((item.getPrice())*1000);괄호 하나로 값이 완전히 달라질 수 있다. (어지간하면 정수형을 사용하자..)
if로 인덱스 값을 벗어난 숫자에만 예외처리를 해뒀었기 때문에 문자열을 입력하면 프로그램이 멈췄다.try-catch를 여러번 작성하기로 했다 ➡︎ 코드가 지저분했다.
각 메서드에서 직접 try-catch를 쓰는 대신, inputInteger()를 만들어 사용했다.
Integer.parseInt ➡︎ String타입의 숫자를 int로 바꿔준다, 이를 시도하며 예외를 잡는다!
getter를 통해 확인해보기도 하고 list.size()를 찍어보면서 데이터가 어디서 안 들어오는지 일일히 확인했다.오타, 형변환, 대소문자 입력 같은 잔실수가 너무 많다.
또 중요한 것은 잔실수들이 야기하는 오류는 꼭 나중에 확인하게 되는데, 수정할때 어느부분에서 실수한건지 찾는게 더 힘든 것 같다. 항상 데이터를 가져오면 찍어보는 습관을 들이자.
아직도 요구사항 그대로! 설계하지 못하는 것 같다. 레벨별로 클래스 다이어그램을 그리는게 나름 도움이 됐다고 생각했었는데.. 그냥 공부자체를 더 해야할 것 같다.
과제를 진행하면서 시간이 여러모로 많이 부족했다.
나는 아직 강의 내용도 다 숙지하지 못한 것 같은데.. 부딪혀보듯 코딩해보는게 맞는건가? 이런 생각도 꽤 자주했다. 지금 과제를 제출하기 직전 느낀 점은, 과제를 하는 과정에서 강의자료를 뒤지고 나랑 비슷한 상황을 찾아 구글링을 하기도 하고 이것저것 시도하다 보니 자연히 체득하는 내용이 더 오래가고 잊어버리지 않을 것 같다.
또한 이번 과제때는 시간때문에 구현하지 못한 부분들이 있어 너무 아쉬웠으므로 다음엔 시간분배를 잘 해야겠다.