본문 바로가기

Java

Java 캡슐화(Encapsulation)

객체 지향의 핵심 중의 핵심은 캡슐화에 있다. 캡슐화는 자세한 내부 구현을 외부에 드러내지 않고 숨기는 것이다. 캡슐화를 하게 되면 내부에 데이터를 어떻게 저장하는 지, 그 데이터를 어떻게 처리하는 지, 또는 특정 기능을 어떻게 제공하는 지에 대한 내용은 드러내지 않는다. 단지, 객체가 어떤 기능을 제공하는 지만 공유하게 된다.

public class StopWatch {

    private long startTime;
    private long stopTime;

    public void start() {
        startTime = System.currentTimeMillis();
    }

    public void stop() {
        stopTime = System.currentTimeMillis();
    }

    public Time getElapsedTime() {
        return new Time(stopTime - startTime);
    }
}


public class Time {

    private long t;
    
    public Time(long t) {
        this.t = t;
    }

    public long getMilliTime() {
        return t / 1000000L;
    }

    public long getNanoTime() {
        return t;
    }

    // 필요에 따라 메소드를 추가하므로 코드의 변경을 최소화 할 수 있다.
    public double getSecondTime() {
        return (double)t / (double)1000000000;
    }
}


StopWatch stopWatch = new StopWatch();
stopWatch.start();
/*
 * 측정할 코드 부분
 */
stopWatch.stop(); 
Time time = stopWatch.getElapsedTime(); 

// time.getMilliTime() 사용하여 시간을 표현

StopWatch 라는 클래스의 내부 구조는 알 필요가 없습니다.
당신이 원하는 데이터가 무엇입니까? 우리가 당신에게 전달할 데이터는 Time 객체 또는 기본 타입으로 정의할 수 있습니다.

StopWatch 보다 더 좋은 방법은 StopWatch.measure(함수 or 테스트 케이스 객체) > AOP?

'Java' 카테고리의 다른 글

Javadoc 사용법  (0) 2014.12.31
Java 내부클래스(Inner Class)  (0) 2014.12.24
Java Class 접근제한자  (0) 2014.12.23
Java 라이브러리 사용  (0) 2014.12.18
Java 다형성 - 인터페이스 & 상속  (0) 2014.12.18