#author("2019-06-02T10:31:47+09:00","default:takataka","takataka") #author("2019-06-14T09:02:37+09:00","default:takataka","takataka") *グラフィックス基礎及び実習 2019年度 第9回 [#e9701092] #contents &color(#ff0000){工事中}; //&color(#ff0000){工事中}; **課題A(self) 完成目標: 今回の実習終了10分前まで [#kadaiA] &color(red){この課題はコンピュータ使用禁止です.解答は配布した用紙に記してください.}; 2018年度定期試験の [1] をやりなさい.問題は [[こちら>Graphicsgakunai:Graphics2018-exam0803.pdf]](学内アクセス限定) **課題B(self) 完成目標: 今回の実習終了まで [#kadaiB] &color(red){この課題はコンピュータ使用禁止です.解答は配布した用紙に記してください.}; 2018年度定期試験の [2] をやりなさい.問題は [[こちら>Graphicsgakunai:Graphics2018-exam0803.pdf]](学内アクセス限定) **課題C(TA) 締め切り: 次回実習開始直後 [#kadaiC] //&color(#ff0000){工事中}; &color(#ff0000){この課題は,課題A,Bのチェックを受けてからやってください}; 課題A,B のプログラム Zako.java, ZakoMain.java と Boss.java を実際に作りなさい. **課題S(omake) [#kadaiS] //&color(#ff0000){工事中}; 複素数を扱うクラスを作ろう. ***step1 [#b5fa30c6] 以下のAPI仕様を満たす Complex.java と,Complexクラスの全てのメソッドを呼んで動作確認するmainメソッドを書いた G09exS.java を作る. 以下の仕様からわかるように,フィールドは非公開としよう ''コンストラクタ'' :Complex(double re, double im) | re を実部の値,im を虚部の値にもつインスタンスを生成する :Complex() | &mathjax{ 0 + 0i }; を値にもつインスタンスを生成する ''メソッド'' :void setRe(double re) | このインスタンスの実部の値を re にする :void setIm(double im) | このインスタンスの虚部の値を im にする :double getRe() | このインスタンスの実部の値を返す :double getIm() | このインスタンスの虚部の値を返す :Complex add(Complex z) | このインスタンスに z を加えた新しいインスタンスを返す :static Complex add(Complex z1, Complex z2) | z1 + z2 を返す ヒント: どちらのaddメソッドも,インスタンスの値を変更するものではないですね.new してそれを return したらよいでしょう. ***step2 [#o3dd8c02] Complexクラスを拡張したクラス Complex2 をつくろう. このクラスは,次のようなものとすること. (1) コンストラクタの仕様はComplexと同じ (2) 次の仕様のメソッドを定義する :String toString() | このインスタンスが表す複素数を String にして返す.戻り値の例は(注)へ. (3) さらに次のようなものを計算するメソッドを追加しよう.乗算,絶対値,共役複素数. 注: 上記の toString メソッドは,Objectクラスで定義されているものを「再定義(オーバーライド)」することになります(教科書p.81参照). System.out.printlnにオブジェクトを渡すと,そいつのtoStringを呼んで返ってきた文字列を使って表示してくれるので,こんなことができるようになります. #pre{{ Complex2 z1 = new Complex2(2.0, 3.0); Complex2 z2 = new Complex2(2.0, -3.0); System.out.println(z1); → 出力例: 2.0+3.0i System.out.println(z2); → 出力例: 2.0-3.0i }} ***step3 [#jf8e8a47] できあがった Complex2 クラスを使うプログラムを作り,動作確認しよう. さらに,次の問の答えを計算してみよう. &mathjax{ z = 2\cos{\frac{5}{3}}\pi + 2i \sin{\frac{5}{3}}\pi }; とおくとき,&mathjax{ z^6 }; はいくつか? 手計算の結果と比較すること.