제목 의미 : 서로 다른걸 비교할 수 없다.
Franc 와 Dollar 를 비교하면 어떻게 될까 ?
1 2 3 4 5 6 7 8
| @Test void testEquality() { assertTrue(new Dollar(5).equals(new Dollar(5))); assertFalse(new Dollar(5).equals(new Dollar(6))); assertTrue(new Franc(5).equals(new Franc(5))); assertFalse(new Franc(5).equals(new Franc(6))); assertFalse(new Franc(5).equals(new Dollar(5))); }
|
실패한다. 오직 금액과 클래스가 동일할 때만 두 Money 가 서로 같은 것이다.
1 2 3 4 5
| public boolean equals(Object object) { Money money = (Money) object;
return amount == money.amount && getClass().equals(money.getClass()); }
|
자바 객체의 용어를 사용하는 것보다 재정 분야에 맞는 용어를 사용하고 싶다. currency 통화 개념 같은 게 없고, 통화 개념을 도입할 충분한 이유가 없으므로 잠시 이렇게 두자.
테스트 주도 개발 <켄트 벡>