解答例 - j2.lesson03.Complex

package j2.lesson03;

/**
 * 課題1601 - 解答例.
 * 複素数を表すクラス.
 @author arakawa
 @version $Id: Complex_java.rps,v 1.1 2006/03/06 12:56:15 java2005 Exp $
 */
public class Complex {
    
    /** 実数部. */
    private final double r;
    
    /** 虚数部. */
    private final double i;
    
    /**
     * 複素数インスタンスを作成する。
     @param real 実数部
     @param imaginary 虚数部
     */
    public Complex(double real, double imaginary) {
        this.r = real;
        this.i = imaginary;
    }
    
    /**
     * 複素数の加算を行う。
     * この呼び出しによる副作用はない。
     @param other 加算する値
     @return この複素数に引数で指定した値を加算した新しい複素数インスタンス
     */
    public Complex add(Complex other) {
        double resultR = this.r + other.r;
        double resultI = this.i + other.i;
        return new Complex(resultR, resultI);
    }
    
    /**
     * 複素数の乗算を行う。
     * この呼び出しによる副作用はない。
     @param other 乗算する値
     @return この複素数に引数で指定した値を乗算した新しい複素数インスタンス
     */
    public Complex mult(Complex other) {
        double resultR = this.r * other.r - this.i * other.i;
        double resultI = this.r * other.i + this.i * other.r;
        return new Complex(resultR, resultI);
    }
    
    /**
     * この複素数の文字列表現を返す。
     @return a+bi の形で表される文字列
     */
    public String toString() {
        if (this.i >= 0) {
            return this.r + "+" this.i + "i";
        }
        else {
            return this.r + "-" (-this.i"i";
        }
    }
}