Java 패키지 - 캡슐화된 ShoppingCart

쇼핑몰 장바구니에 담는 코드를 생성해보도록 한다.

아래에 주어진 ShoppingCartMain 코드에서 실행되도록, Item, ShoppingCart 클래스를 생성한다.

요구사항

  • 접근 제어자를 사용해서 데이터를 캡슐화한다.
  • 해당 클래스는 다른 클래스에서 사용할 수 있어야 한다.
  • 데이터 필드는 Item, ShoppingCart 클래스에서 모두 private 으로 설정한다.
  • 장바구니는 최대 3개까지 담을 수 있다.
    • 3개 초과한 경​ 메시지 출력 "장바구니가 가득 찼습니다."

ShoppingCartMain.java

package access.foo;

public class ShoppingCartMain {
    public static void main(String[] args) {
        ShoppingCart cart = new ShoppingCart();

        Item item1 = new Item("김치", 4200);
        Item item2 = new Item("상추", 2100);
        Item item3 = new Item("콜라", 2500);
        Item item4 = new Item("고추장", 5500);
        
        cart.addItem(item1);
        cart.addItem(item2);
        cart.addItem(item3);
        cart.addItem(item4);

        cart.displayItems();
    }
}

출력

장바구니가 가득 찼습니다.
상품명: 김치, 가격: 4200
상품명: 상추, 가격: 2100
상품명: 콜라, 가격: 2500

풀이

Item.java

package access.foo;

public class Item {
    private String productName;
    private int price;

    public Item(String productName, int price) {
        this.productName = productName;
        this.price = price;
    }

    public String getProductName() {
        return productName;
    }

    public int getPrice() {
        return price;
    }
}

ShoppingCart.java

package access.foo;

public class ShoppingCart {
    private int counter = 0;
    private Item[] items = new Item[3];

    public void addItem(Item item) {
        if (counter < items.length) {
            items[counter++] = item;
        } else {
            System.out.println("장바구니가 가득 찼습니다.");
        }
    }

    public void displayItems() {
        for (int i = 0; i < counter; i++) {
            System.out.println("상품명: " + items[i].getProductName() + ", 가격: " + items[i].getPrice());
        }
    }
}