본문 바로가기
TIL/내배캠 과제

23.05.31

by J1-H00N 2023. 5. 31.

장바구니를 출력하는 문제 발생

더보기
    private ArrayList<Cart> order;

    // 장바구니 생성
    public Order() {
        order = new ArrayList<>();
    }

    // 장바구니에 추가
    public void addCart(String menuName, int price, int count) {
        for (Cart cart : order) {
            if (cart.getMenuName().equals(menuName)) { // 만약 같은 이름의 메뉴가 이미 있다면 개수만 +1
                cart.plusCount();
                return;
            }
        }
        order.add(new Cart(menuName, price, count));
    }

    // 장바구니 출력
    public void printCart() {
        for (Cart cart : order) {
            System.out.println(cart.toString());
        }
    }
package kioskMaking_2;

public class Cart {
    private String menuName;
    private int price;
    private int count;

    public Cart(String menuName, int price, int count) {
        this.menuName = menuName;
        this.price = price;
        this.count = count;
    }

    public String toString() { return String.format("%-13s   %d    %d", getMenuName(), getPrice(), getCount()); }

    public void plusCount() {
        count++;
    }

    public String getMenuName() {
        return menuName;
    }

    public int getPrice() {
        return price;
    }

    public int getCount() {
        return count;
    }
}
addCart(menuCollection.productMap().get(menuName).get(orderNumber - 1).getMenuName(), menuCollection.productMap().get(menuName).get(orderNumber - 1).getMenuPrice(), 1);
printCart();

 

order클래스 내에서 출력을 하다보니 저장하거나 출력할 때마다 새로운 인스턴스를 생성해 동기화가 일어나지 않은 것 같다.

또한 order의 메서드 안에서 Main 객체를 생성하다 보니 연쇄적으로 초기화가 일어나는 것 같다.

 

메서드들을 다른 입출력 전문 클래스를 만들어 넣어봐야 할 것 같다.

 

메서드에서 초기화가 너무 자주 발생하는게 문제인가 싶어서 객체를 만드는 것들을 전부 메서드 밖으로 꺼내보기도 하고 메서드 호출을 최소화 시켜보기도 하고 this.을 붙여 제대로 지정되게도 만들어봤는데 계속 같은 문제가 발생했다.

 

튜터님은 객체에 저장하는 공간이 없고 제대로 저장도 안되고 있다고 말씀하셨는데, 코드를 어떻게 수정해야할지 감이 안잡힌다.

 

하드코딩을 감수하고 Order에 있던 대부분의 메서드를 다른 클래스를 만들어 옮겨보았는데도 실패했다...

 

해결!!!! 바보같은 실수... 위에서 객체를 생성할 때 겹치는 것들을 전부 메서드 밖으로 빼내서 객체 초기화가 발생하지 않도록 만들었었는데 Main 클래스에서 그 과정을 안해서 생기는 문제였다... 장장 6시간이 넘는 삽질의 끝이 실수라니 슬프면서도 내가 했던 코딩들의 구조적인 문제 때문은 아니였다는게 그나마 위안이 된다...

 

내일의 목표는 최종 결산 기능의 구현

'TIL > 내배캠 과제' 카테고리의 다른 글

23.06.03  (0) 2023.06.05
23.06.02  (0) 2023.06.02
23.06.01  (0) 2023.06.01
23.05.30  (0) 2023.05.30
23.05.29  (0) 2023.05.29