Menu
Coddy logo textTech

핵심 정리 - 카운터와 유틸리티

Coddy Java 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 87개 중 19번째.

challenge icon

챌린지

쉬움

인스턴스 추적을 위한 Counter 클래스와 MathUtils 유틸리티 클래스를 결합한 완전한 시스템을 구축해 봅시다. 이를 통해 정적 변수, 정적 메서드, 정적 블록 및 상수에 대해 배운 모든 내용을 종합해 볼 수 있습니다.

코드를 구성하기 위해 세 개의 파일을 생성합니다:

  • Counter.java: 생성된 인스턴스의 개수를 추적하는 클래스를 생성합니다:
    • 총 인스턴스 수를 계산하기 위한 private static 변수
    • 각 카운터의 고유 식별자를 저장하는 private 인스턴스 변수 id
    • 총 개수를 증가시키고 현재 개수를 이 인스턴스의 id로 할당하는 생성자
    • 이 카운터의 고유 id를 반환하는 getId() 메서드
    • 생성된 Counter 객체의 수를 반환하는 static 메서드 getTotalCount()
  • MathUtils.java: 정적 멤버만 포함하는 유틸리티 클래스를 생성합니다 (인스턴스화되지 않음):
    • 값이 3.14159인 public 상수 PI
    • 값이 0.5인 public 상수 HALF
    • n의 제곱을 반환하는 static 메서드 square(int n)
    • n의 세제곱을 반환하는 static 메서드 cube(int n)
    • PI * radius * radius를 반환하는 static 메서드 circleArea(double radius)
  • Main.java: 두 클래스가 함께 작동하는 것을 보여줍니다. 수학 연산을 위한 숫자와 생성할 Counter 객체의 개수라는 두 가지 입력을 받습니다. 다음을 출력하세요:
    • Square: [value]
    • Cube: [value]
    • Circle area (radius=[number]): [value] (면적은 소수점 둘째 자리까지 형식화)
    • 생성된 각 Counter에 대해 다음을 출력: Counter [id] created
    • 마지막으로: Total counters: [count]

수학 계산을 위한 숫자(int)와 생성할 Counter 객체의 개수(int)라는 두 가지 입력을 받게 됩니다.

정적 멤버는 클래스 이름(예: MathUtils.PICounter.getTotalCount())을 통해 액세스해야 하며, 소수점 값을 형식화할 때는 String.format("%.2f", value)를 사용해야 함을 기억하세요.

직접 해보기

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int number = scanner.nextInt();
        int count = scanner.nextInt();
        
        // TODO: MathUtils static 메서드를 사용하여 계산하고 출력하세요:
        // - Square: [value]
        // - Cube: [value]
        // - Circle area (radius=[number]): [value] (소수점 둘째 자리까지 형식화)
        
        // TODO: 'count' 개수만큼 Counter 객체를 생성하세요
        // 생성된 각 Counter에 대해 다음을 출력하세요: Counter [id] created
        
        // TODO: 생성된 카운터의 총 개수를 출력하세요
        // Total counters: [count]
    }
}

객체 지향 프로그래밍의 모든 레슨