Java 패키지 - 캡슐화된 최대 카운터

MaxCounter 클래스를 만드세요.

최대 값을 지정하는 것과 최대 값까지 숫자를 증가하는 기능입니다.

필드

  • counter: 내부에서 사용하는 숫자. 초기 값은 0으로 설정합니다.
  • max: 최대 값 생성자로 호출된 경우 맥스값을 지정합니다.
  • increment(): 숫자를 1씩 증가합니다.
  • getCounter(): 지금까지 증가한 값을 출력합니다.

클래스 요구사항

  • 접근 제어자를 사용해서 클래스를 캡슐화하도록 합니다.
  • 해당 클래스는 다른 클래스에서도 사용할 수 있도록 합니다.

MaxCounterMain.java

package access.foo;

public class MaxCounterMain {
    public static void main(String[] args) {
        MaxCounter cnt = new MaxCounter(2);
        cnt.increment();
        cnt.increment();
        cnt.increment();
        int counter = cnt.getCounter();
        System.out.println(counter);
    }
}

출력 결과

최대 값 이상으로 설정할 수 없습니다. by increment()
2

풀이

MaxCounter 를 다음과 같이 생성하도록 한다.

package access.foo;

public class MaxCounter {
    private int counter;
    private int max;

    public MaxCounter(int max) {
        this.max = max;
    }

    public void increment() {
        if (counter >= max) {
            System.out.println("최대 값 이상으로 설정할 수 없습니다. by increment()");
        } else {
            counter++;
        }
    }

    public int getCounter() {
        return max;
    }
}

참고사항

해당 increment() 메소드를 아래와 같이 만들어도 무방하다.
협업에서는 아래 코드를 권장한다. 검증 로직과 실행 로직이 나누어져 있어서 명확하기 때문이다.

public void increment() {
        // 검증 로직
        if (counter >= max) {
            System.out.println("최대 값 이상으로 설정할 수 없습니다. by increment()");
            return;
        }

        // 실행 로직
        counter++;
    }