複素数型Complex
を作成しましょう.
フィールドには,Double
型のreal
,imag
を定義してください.
また,print
メソッドでComplex
を出力するようにしましょう.
public class Complex{
Double real;
Double imag;
void print(){
System.out.printf("%5.2f + %5.2f i",
this.real, this.imag);
}
void println(){
this.print();
System.out.println();
}
}
上記のように,独自の型にはフィールドとメソッドを同時に定義できます.
次に,Complex
を利用するプログラム ComplexCalculator
を作成しましょう.
public class ComplexCalculator{
void run(){
Complex c1 = this.createComplex(3.0, 4.0);
c1.println();
}
Complex createComplex(Double realValue,
Double imagValue){
Complex c = new Complex();
c.real = realValue;
c.imag = imagValue;
return c;
}
// mainメソッドは省略.
}
上記のrun
メソッド内で,Complex
型の print
メソッドを呼び出しています.
このように,メソッドを呼び出すにも,変数を経由して呼び出す必要があります.
一方,変数(フィールド)も変数を経由してアクセスします.createComplex
メソッドをみてください.
このように,Complex
型の変数 c
を経由してフィールドにアクセスしています.
このように,メソッドもフィールドも,必ず変数を経由してアクセスする必要があります.
さて,Complex
型に Double
型を返す absolute
メソッドを追加してください.引数はありません.
複素数の絶対値を返すメソッドです.
$z=a+bi$の絶対値$r$は,$r = |z| = \sqrt{a^2 + b^2}$で求められます.
上記が完成すれば,ComplexCalculator
で absolute
を呼び出し,結果を出力してください.
次に,Complex
型に Complex
型の実体を返す conjugate
メソッドを追加してください.
引数はありません.conjugate
は共役複素数を意味します.虚部の符号を逆転させたものであり,
$z=a+bi$ の共役複素数は,$\bar{z}=a-bi$です.conjugate
メソッド内で
新たにComplex
型の実体を作成し,
呼び出されたメソッドがもつ複素数の共役複素数として変数に値を代入し,返してください
(this
の値を元に,共役複素数を作成し,返してください).
上記が完成すれば,ComplexCalculator
で conjugate
を呼び出し,結果を出力してください.