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; }
こんな感じ。
この三角測量、ここでも書いてるけど、よっぽどでない限りつかわないそう^^;
これで等価性は終わり。この等価性を呼び水に次のリファクタリングを行う。