Item 17. Minimize Mutability
λΆλ³ ν΄λμ€ μμ±μ 5κ°μ§ κ·μΉ
public final class Complex { // 2. final μ μΈνμ¬ νμ ν΄λμ€ μμ± κΈμ§
// 3, 4. λͺ¨λ νλ final / private μ μΈ
private final double re;
private final double im;
public Complex(double re, double im) {
this.re = re;
this.im = im;
}
// 1. κ°μ²΄μ μνλ₯Ό λ³κ²½νλ λ©μλ(λ³κ²½μ) μ 곡 X
public double realPart() {
return re;
}
public double imaginaryPart() {
return im;
}
public Complex plus(Complex c) {
return new Complex(re + c.re, im + c.im); // 5. μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό μμ±νμ¬ μλ μΈμ€ν΄μ€μ κ°μ λ³κ²½νμ§ μμ, μλ λ©μλλ€λ λμΌ
}
public Complex minus(Complex c) {
return new Complex(re - c.re, im - c.im);
}
public Complex times(Complex c) {
return new Complex(re * c.re - im * c.im, re * c.im + im * c.re);
}
public Complex dividedBy(Complex c) {
double tmp = c.re * c.re + c.im * c.im;
return new Complex((re * c.re + im * c.im) / tmp, (im * c.re - re * c.im) / tmp);
}
// equals / hashCode / toString ...
}λΆλ³ ν΄λμ€μ μ₯μ
μ€λ λ μμ κ³Ό μΈμ€ν΄μ€ μΊμ±
λ΄λΆ λ°μ΄ν° 곡μ
μ€ν¨ μμμ± μ 곡
λΆλ³ ν΄λμ€μ λ¨μ
Last updated