ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [개인프로젝트] 키오스크 만들기 2
    스파르타코딩클럽/자바 개인프로젝트 - Kiosk 2023. 10. 22. 23:36

    키오스크 만들기 두번째 기록

     

    1. static 메소드 적절히 변경

    2. 총 주문 금액과 판매목록 결산 구현

    3. 이에 관한 오류 해결 및 아쉬운 점

    4. 중복되는 코드를 제거해보자

     

     

     

    이전글에서 이어지는 남은 애로사항

     

    모든 메소드를 static 메소드로 구현했던 것

     

    생각보다 해결은 쉬웠다.

     

    다만 처음에는 main 메소드의 while문  안에 new 생성자를 넣는 바람에 

    첫 수정 후 실행했을때 주문을 하고 주문목록을 보는데 저장이 되지 않아서 당혹스러웠다.

     

    하지만 반복문 밖으로 new 생성자를 빼냄으로써 해결.

     

     

     

    선택사항 3, 4번째

    총 주문금액과 판매리스트 결산

    총 주문금액은 list가 아닌 int를 사용하여 단순히 합산하는 것으로 구현했다.

     

    판매목록은 Map에 key값으로 저장되어 있으므로  get을 통해 키 값을 받아와서

     

    set메소드로  누적할 ArrayList에 add한 다음

     

    get을 통해 출력하면 된다고 생각

     

    했었다 

     

    public static ArrayList<String> getSelledMenu() {
            ArrayList<String> selledMenuName = new ArrayList<>();
            for (Menu menu : selledMenu) {
                selledMenuName.add(menu.getName());
            }
    
            return selledMenuName;

     

    하지만 중복된 메뉴를 제거하지 못하고 그대로 출력되는 문제가 있었다.

     

    예를 들자면  

     

    주문번호1이  로제떡볶이1, 쿨피스1을 주문하고

    주문번호2가 마라떡볶이1, 쿨피스1을 주문했다면

     

    판매목록에는 

    로제떡볶이
    마라떡볶이

    쿨피스

     

    이렇게 출력되어야 하는데

     

    로제떡볶이, 쿨피스, 마라떡볶이, 쿨피스

     

    이렇게 출력되는 문제가 있었다.

     

    그래서 코드를 이리저리 바꿔본 끝에  결국엔 ArrayList 대신 

    중복을 허용하지 않는 HashSet을 사용하여 이 문제를 해결하였다.

    public static HashSet<String> getSelledMenu() {
            HashSet<String> selledMenuName = new HashSet<>();
            for (Menu menu : selledMenu) {
                selledMenuName.add(menu.getName());
            }
    
            return selledMenuName;
        }

     

    다만 순서 상관없이 저장하기 때문에 메뉴를 주문목록에 넣은 순서대로

    또는 메인메뉴, 사이드메뉴, 음료  순서대로 저장되었으면 좋았을텐데

     

    그러지 못한 점이 아쉽다.

     

    다음에 혼자 수정해볼때는 List를 사용하여 결과를 도출해 봐야겠다.

     

     

     

     

     

    두번째 아쉬운 점은 

     

    누적된 판매메뉴 목록을 출력할때 toString을 적절히 오버라이딩 했으면 좋았을텐데

     

    어디서부터 손대야할지 감이 오지 않아서

     

    그냥 Main에서 iterator를 사용하여 hashSet 내용을 다 찍어내는 식으로 사용하였다.

     

    작동은 잘되기 때문에 일단은 이대로 가지만  다음에는 꼭 다른 더 좋은 방법을 사용해 봐야겠다.

     

     

     

     

     

     

    마지막으로 코드를 완성하였지만

     

    Order클래스에 중복되는 코드가 너무 많기에 내일은 

     

    중복되는 코드를 하나의 메소드로 추출하여 코드중복을 줄이고 최종제출을 하려한다.

     

    또한 적절하지 못한 변수명을 어떻게 변경할지도 고민해 봐야겠다.

     

     

Designed by Tistory.