오늘의 잔디
오늘의 공부
항상 문제 풀 때마다 느끼는거지만 변수명 짓기가 진짜 어렵다 읽자마자 내가 이해할 수 있게끔 변수명 짓는게 어렵고 메서드를 불러올 때 바로바로 그 메서드 명이 퍼뜩퍼뜩 떠오르지 않아서 애먹는다.
우리가 한국인이라 그런가
영어가 모국어였으면 확실히 배는 쉬웠을 듯.
하지만 그럼에도 불구하고 오늘도 해냈다.
점점 문제가 어려워지고 코드량도 많아지지만
이해가 다 가서 재미있따.

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 int count = 0;
private int max;
public MaxCounter(int max) {
this.max = max;
}
public void increment() {
if (count >= max) {
System.out.println("최대값을 초과할 수 없습니다.");
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
Item 클래스
package access.ex;
public class Item {
private String name;
private int price;
private int quantity;
//TODO 나머지 코드를 완성해라.
}
ShoppingCart 클래스
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];
private int itemCount;
public void addItem(Item item) {
if (itemCount >= items.length) {
System.out.println("장바구니가 가득 찼습니다.");
return;
}
items[itemCount] = item;
itemCount++;
}
public void displayItems() {
System.out.println("장바구니 상품 출력");
for (int i = 0; i < itemCount; i++) {
Item item = items[i];
System.out.println("상품명:" + item.getName() + ", 합계:" +
item.getTotalPrice());
}
System.out.println("전체 가격 합:" + calculateTotalPrice());
}
private int calculateTotalPrice() {
int totalPrice = 0;
for (int i = 0; i < itemCount; i++) {
Item item = items[i];
totalPrice += item.getTotalPrice();
}
return totalPrice;
}
}
calculateTotalPrice() : 이 메서드 내부에서만 사용되므로 private 접근 제어자를 사용한다.