더북(TheBook)


5.2DataHandler 클래스 만들기


이번에는 데이터를 파일에서 읽어오는 것부터 실제적인 연산, 평가, 결과 출력까지 담당하는 클래스를 만들겠습니다.

데이터를 연산하는 시점에 따라 몇 가지 경우로 나누어 볼 수 있습니다.

첫째, 객체가 생성되는 순간 생성자 함수에서 모든 연산을 마치고 그 결과 값을 인스턴스 멤버에 저장해 두는 경우입니다. 지금은 관련 연산이 몇 개 되지 않아 괜찮지만, 이 클래스가 점점 확장하여 연산 횟수가 늘고, 모든 학년과 학급의 객체를 만든다면 객체가 생성될 때 부담스러울 수 있습니다. 게다가 필요한 것이 각 학급 평균뿐이라면 평균 하나를 얻으려고 객체를 생성하여 분산과 표준편차까지 모두 구하는 것은 비합리적입니다.

둘째, 데이터가 필요할 때마다 매번 연산하는 경우입니다. 표준편차를 구하는 함수를 자주 호출하는 경우 함수를 호출할 때마다 평균을 다시 구하고 분산을 구한 다음 표준편차를 구해야 합니다. 같은 연산을 반복하는 것은 매우 비효율적입니다.

셋째, 유저 프로그래머가 데이터를 요청할 때 한 번도 연산된 적이 없다면 필요한 만큼만 연산하여 결과 값을 저장해 두는 경우입니다. 나중에 같은 데이터를 다시 요청하면 연산할 필요 없이 저장된 값을 반환합니다. 앞의 두 경우와 비교했을 때 꽤 괜찮아 보이므로 이 방법을 사용하겠습니다. 이를 위해 멤버로 cache(일종의 저장 장소)를 두어 연산 결과를 저장하게 합니다. 이제 데이터를 연산하고 관리하는 DataHandler 클래스를 만들어 보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.