π Chapter 8: κ°μ²΄ λ§λ€κΈ°
λ times()
ꡬν μ½λκ° κ±°μ λκ°λ€.
// Franc
Franc times(int multiplier) {
return new Franc(amount * multiplier);
}
// Dollar
Dollar times(int multiplier) {
return new Dollar(amount * multiplier);
}
μμͺ½ λͺ¨λ Money
λ₯Ό λ°ννκ² λ§λ€λ©΄ λ λΉμ·νκ² λ§λ€ μ μλ€.
// Franc
Money times(int multiplier) {
return new Franc(amount * multiplier);
}
// Dollar
Money times(int multiplier) {
return new Dollar(amount * multiplier);
}
Money
μ λ νμ ν΄λμ€λ κ·Έλ€μ§ λ§μ μΌμ νλ κ² κ°μ§ μμΌλ―λ‘ μμ μ κ±°ν΄λ²λ¦¬κ³ μΆλ€. κ·Έλ°λ° νλ²μ κ·Έλ κ² ν° λ¨κ³λ₯Ό λ°λ κ²μ TDDλ₯Ό ν¨κ³Όμ μΌλ‘ 보μ¬μ£ΌκΈ°μ μ μ νμ§ μμ κ² κ°λ€.
κ·Έλ μ§. νμ ν΄λμ€μ λν μ§μ μ μΈ μ°Έμ‘°κ° μ μ΄μ§λ€λ©΄ νμ ν΄λμ€λ₯Ό μ κ±°νκΈ° μν΄ ν λ°μ§ λ λ€κ°μ°λ€κ³ ν μ μκ² λ€. Money
μ Dollar
λ₯Ό λ°ννλ ν©ν 리 λ©μλλ₯Ό λμ
ν μ μλ€. μ΄λ° μμΌλ‘ μ¬μ©ν μ μλ€.
public void testMultiplication() {
Dollar five = Money.dollar(5);
assertEquals(new Dollar(10), five.times(2));
assertEquals(new Dollar(15), five.times(3));
}
ꡬν μ½λλ Dollar
λ₯Ό μμ±νμ¬ λ°ννλ€.
static Dollar dollar(int amount) {
return new Dollar(amount);
}
Dollar
μ λν μ°Έμ‘°κ° μ¬λΌμ§κΈΈ λ°λΌλ―λ‘ ν
μ€νΈμ μ μΈλΆλ₯Ό λ€μκ³Ό κ°μ΄ λ°κΏμΌνλ€.
public void testMultiplication() {
Money five = Money.dollar(5);
assertEquals(new Dollar(10), five.times(2));
assertEquals(new Dollar(15), five.times(3));
}
μ»΄νμΌλ¬κ° Money
μλ times()
κ° μ μλμ§ μμλ€λ μ¬μ€μ μλ €μ€λ€. μ§κΈμ κ·Έκ±Έ ꡬνν μ€λΉκ° λμ§ μμκΈ° λλ¬Έμ, Money
λ₯Ό μΆμ ν΄λμ€λ‘ λ³κ²½ν ν Money.times()
λ₯Ό μ μΈνμ.
abstract class Money
abstract Money times(int multiplier);
μ΄μ ν©ν 리 λ©μλλ₯Ό μ μΈμ λ°κΏ μ μλ€.
static Money dollar(int amount) {
return new Dollar(amount);
}
λͺ¨λ ν μ€νΈκ° μ€νλλ―λ‘ μ΅μν λκ°λ₯Ό κΉ¨νΈλ¦¬μ§ μμλ€. μ΄μ ν©ν 리 λ©μλλ₯Ό ν μ€νΈ μ½λμ λλ¨Έμ§ λͺ¨λ κ³³μμ μ¬μ©ν μ μλ€.
public void testMultiplication() {
Money five = Money.dollar(5);
assertEquals(Money.Dollar(10), five.times(2));
assertEquals(Money.Dollar(15), five.times(3));
}
public void testEquality() {
assertTrue(Money.dollar(5).equals(Money.dollar(5)));
assertFalse(Money.Dollar(5).equals(Money.Dollar(6)));
assertTrue(new Franc(5).equals(new Franc(5)));
assertFalse(new Franc(5).equals(new Franc(6)));
assertFalse(new Franc(5).equals(Money.Dollar(5)));
}
μ΄μ μ λ³΄λ€ μ‘°κΈ λμ μν©μ΄λ€. μ΄λ€ ν΄λΌμ΄μΈνΈ μ½λλ Dollar
λΌλ μ΄λ¦μ νμ ν΄λμ€κ° μλ€λ μ¬μ€μ μμ§ λͺ»νλ€. νμ ν΄λμ€μ μ‘΄μ¬λ₯Ό ν
μ€νΈμμ λΆλ¦¬ν¨μΌλ‘μ¨ μ΄λ€ λͺ¨λΈ μ½λμλ μν₯μ μ£Όμ§ μκ³ μμ ꡬ쑰λ₯Ό λ§μλλ‘ λ³κ²½ν μ μκ² λλ€.
testFrancMultiplication
μ λ³κ²½νλ €κ³ νλ€λ³΄λ μ΄ ν
μ€νΈκ° κ²μ¬νλ λ‘μ§ μ€ Dollar
κ³±νκΈ° ν
μ€νΈμ μν΄ κ²μ¬λμ§ μλ λΆλΆμ νλλ μλ€λ κ²μ μμμ±λ€. μ΄ ν
μ€νΈλ₯Ό μμ νλ€λ©΄ μ½λμ λν νμ μ΄ μ‘°κΈμ΄λΌλ μ€μ΄λ€κΉ? μ½κ°μ΄λλ§ κ·Έλ΄ κ°λ₯μ±μ΄ μμΌλ μΌλ¨ κ·Έλλ‘ λ¨κ²¨λμ. νμ§λ§ μ’ μμμ©λ€.
public void testEquality() {
assertTrue(Money.dollar(5).equals(Money.dollar(5)));
assertFalse(Money.Dollar(5).equals(Money.Dollar(6)));
assertTrue(Money.Franc(5).equals(Money.Franc(5)));
assertFalse(Money.Franc(5).equals(Money.Franc(6)));
assertFalse(Money.Franc(5).equals(Money.Dollar(5)));
}
public void testFrancMultiplication() {
Money five = Money.franc(5);
assertEquals(Money.franc(10), five.times(2));
assertEquals(Money.franc(15), five.times(3));
}
ꡬνμ Money.dollar()
μ μ μ¬νλ€.
static Money franc(int amount) {
return new Franc(amount);
}
λ€μ μ₯μμ μ°λ¦¬λ times()
μ μ€λ³΅μ κ±°λ¬λΌ κ²μ΄λ€.