MaxCounter
클래스를 만드세요.
이 클래스는 최대값을 지정하고 최대값 까지만 값이 증가하는 기능을 제공합니다.
int count
: 내부에서 사용하는 숫자입니다. 초기값은 0입니다.int max
: 최대값입니다. 생성자를 통해 입력합니다.increment()
: 숫자를 하나 증가합니다.getCount()
: 지금까지 증가한 값을 반환합니다.package access.ex;
public class CounterMain {
public static void main(String[] args) {
MaxCounter counter = new MaxCounter(3);
counter.increment();
counter.increment();
counter.increment();
counter.increment();
int count = counter.getCount();
System.out.println(count);
}
}
최대값을 초과할 수 없습니다.
3
package access.ex;
public class MaxCounter {
// private : 해당 클래스에서만 접근 가능
private int count = 0;
private int max;
// public : 다른 패키지에서도 접근 가능
public MaxCounter(int max) {
this.max = max;
}
public void increment() {
// 검증 로직
if (count >= max) {
System.out.println("최댓값을 초과할 수 없습니다.");
return; // return을 통해 검증과 실행을 나눈다.
}
// 실행 로직
count++;
}
public int getCount() {
return count;
}
}
ShoppingCartMain
코드가 작동하도록 Item
, ShoppingCart
클래스를 완성하세요.
“장바구니가 가득 찼습니다.”
출력package access.ex;
public class ShoppingCartMain {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
Item item1 = new Item("마늘", 2000, 2);
Item item2 = new Item("상추", 3000, 4);
cart.addItem(item1);
cart.addItem(item2);
cart.displayItems();
}
}
장바구니 상품 출력
상품명: 마늘, 합계: 4000
상품명: 상추, 합계: 12000
전체 가격 합: 16000
package access.ex;
public class Item {
private String name;
private int price;
private int quantity;
// TODO 나머지 코드를 완성하세요.
}
package access.ex;
public class ShoppingCart {
private Item[] items = new Item[10];
private int itemCount;
// TODO 나머지 코드를 완성하세요.
}
package access.ex;
public class Item {
private String name;
private int price;
private int quantity;
public Item(String name, int price, int quantity) {
this.name = name;
this.price = price;
this.quantity = quantity;
}
public String getName() {
return name;
}
public int getTotalPrice() {
return price * quantity;
}
}
각각의 Item
의 가격과 수량을 곱하면 각 상품별 합계를 구할 수 있다. price
와 quantity
를 외부에 반환한 다음에 외부에서 곱해서 상품별 합계를 구해도 되지만, getTotalPrice()
메서드를 제공하면 외부에서는 단순히 이 메서드를 호출하면 된다. 이 메서드의 핵심은 자신이 가진 데이터를 사용한다는 점이다.
package access.ex;
public class ShoppingCart {
private Item[] items = new Item[10]; // Item을 담을 수 있는 배열
private int itemCount;
// addItem : 상품 등록
public void addItem(Item item) {
// 검증 로직
if (itemCount >= items.length) {
System.out.println("장바구니가 가득 찼습니다.");
return;
}
// 실행 로직
items[itemCount] = item;
itemCount++;
}
// displayItems : 장바구니 상품 출력
public void displayItems() {
System.out.println("장바구니 상품 출력");
for (int i = 0; i < itemCount; i++) {
Item item = items[i]; // // items에 담겨있는 item 꺼내기
System.out.println("상품명: " + item.getName() + ", 합계: " + item.getTotalPrice());
}
System.out.println("전체 가격 합: " + calculateTotalPrice());
}
// calculateTotalPrice : 장바구니 전체 가격
// private : ShoppingCart 클래스에서만 사용하므로 private으로 접근 제한
private int calculateTotalPrice() {
int totalPrice = 0;
for (int i = 0; i < itemCount; i++) {
Item item = items[i]; // items에 담겨있는 item 꺼내기
totalPrice += item.getTotalPrice();
}
return totalPrice;
}
}
calculateTotalPrice()
: 이 메서드는 내부에서만 사용되므로 private
접근 제어자를 사용한다.