6장. 돌아온 '모두를 위한 평등'
- 할일 목록
$5 + 10CHF = $10 (환율이 2:1로 가정)
$5 x 2 = $10
amount를 private으로 만들기
Dollar side effect?
Money 반올림?
equals()
hashCode()
Equal null
Equal object
5CHF x 2 = 10CHF
Dollar/Franc 중복
공용 equals
공용 times
5장에서 테스트를 통과하기 위해 코드를 복사해서 붙이는 엄청난 죄를 저질렀다. 이제 청소할 시간이다.
두 클래스의 공통 상위 클래스를 찾아내보자.

Money 클래스가 공통의 equals 코드를 갖게 하면 어떨까? 간단한 것부터 구현해보자.
테스트가 여전히 잘 도니 amount 인스턴스 변수를 Money로 옮겨보자.
equals 코드의 캐스팅 부분을 Money로 변경하면 equals 메서드를 Dollar에서 Money로 옮길 수 있게 된다.
이제 Franc.equals()를 제거해야 한다. 하지만 동치성 테스트에서 Franc끼리의 비교는 다루지 않았다. 따라서 코드를 변경하기 전에 동치성 테스트를 작성할 것이다.
이제 Franc에 있는 equals를 제거할 수 있다.
- 할일 목록
$5 + 10CHF = $10 (환율이 2:1로 가정)
$5 x 2 = $10
amount를 private으로 만들기
Dollar side effect?
Money 반올림?
equals()
hashCode()
Equal null
Equal object
5CHF x 2 = 10CHF
Dollar/Franc 중복
공용 equals
공용 times
6장을 정리해보면
공통된 코드를 첫 번째 클래스(Dollar)에서 상위 클래스(Money)로 단계적으로 옮겼다.
두 번째 클래스(Franc)도 Money의 하위 클래스로 만들었다.
불필요한 구현을 제거하기 전에 두 equals() 구현을 일치시켰다.