3章
ここであげられてる内容ははこんな感じ
- オブジェクトの振る舞いについて
- Contract=契約について
- バリューオブジェクトを使ってDollarの値を一般化
- 2つの暗黙的意味
- デザインパターン
- 30章でもとりあげている
- 三角測量で検証
- 二つの定理から一般解を導く
- リファクタリングに自信がないときだけ
まず、テストクラス
public void testEqaulity(){
assertTrue(new Dollar(5).equals(new Dollar(5)));
}JUNITの結果はRed
そこで、明示的にターゲットクラスを変更
public boolean equals(Object object){
return true;
}JUNITの結果はGreen
次は三角測量で検証するためのテストを書く
public void testEqaulity(){
assertTrue(new Dollar(5).equals(new Dollar(5)));
assertFalse(new Dollar(5).equals(new Dollar(6)));
}
これをGREENにするためのコードを書く
public boolean equals(Object object){
Dollar dollar = (Dollar)object;
return amount == dollar.amount;
}こんな感じ。
この三角測量、ここでも書いてるけど、よっぽどでない限りつかわないそう^^;
これで等価性は終わり。この等価性を呼び水に次のリファクタリングを行う。