5. 은행에서 계좌의 당좌 대월액을 계산하는 프로그램이다. 새로운 계좌 타입이 몇 가지 추가될 예정이고, 이들은 당좌 대월액을 계산하는 각각의 규칙이 필요하여 메소드 overdraftCharge()를 클래스 AccountType으로 옮기려고 한다. 리팩토링 기법 중의 하나인 Move 메소드의 개념과 절차를 설명하고 이를 활용하여 리팩토링한 코드를 작성하시오.
class Account { ...중략... double overdraftCharge() { if (_type.isPremium()) //isPremium() 메소드는 AccountType 클래스에 있음 { double result = 10; if (_daysOverdrawn > 7) result += (_daysOverdrawn -7) * 0.85; return result; } else return _daysOverdrawn * 1.75; } double bankCharge() { double result = 4.5; if (_daysOverdrawn > 0) result += overdraftCharge(); return result; } private AccountType _type; private int _daysOverdrawn; }