#author("2019-07-09T12:46:45+09:00","default:takataka","takataka") #author("2019-07-12T20:34:28+09:00","default:takataka","takataka") *グラフィックス基礎及び実習 2019年度 第14回課題A,B [#e9701092] - [[第14回実習課題全体のページ>Graphics/2019/ex14]] - [[第14回実習課題A,Bのページ>Graphics/2019/ex14AB]] - [[第14回実習課題C,Dのページ>Graphics/2019/ex14CD]] #contents //&color(#ff0000){工事中}; //**注意 [#notice] **課題A,Bのための準備 [#o0bcb890] + 以下の3つのファイルをダウンロードしていつもの場所に置きましょう. -- [[Graphics:HW3Sample.class]] -- [[Graphics:HW3PaneSample.class]] -- [[Graphics:hw3pane.css]] + HW3Sample を実行してみましょう. + 以下の内容のファイル G14HW3.java を作りましょう. #pre{{ import javafx.application.Application; import javafx.stage.*; import javafx.scene.*; import javafx.scene.control.*; import javafx.scene.layout.*; public class G14HW3 extends Application { @Override public void start(Stage pstage) { HW3PaneSample hw3pane1 = new HW3PaneSample(); HW3PaneSample hw3pane2 = new HW3PaneSample(); HBox root = new HBox(hw3pane1, hw3pane2); root.getStyleClass().add("myPane"); Scene scene = new Scene(root); scene.getStylesheets().add("hw3pane.css"); pstage.setScene(scene); pstage.setTitle("G14HW3"); pstage.sizeToScene(); pstage.show(); } public static void main(String[] args) { launch(args); } } }} + G14HW3 を実行してみましょう.テキストフィールドに適当な文字・数字を入力して動作確認しよう. 3つのクラスの関係は下図のようになっている(Sampleのついてないクラス名で説明している). &ref(https://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/G14HW3.png,nolink); **課題A(TA) 完成目標: 今回の実習終了30分前まで [#kadaiA] HW3Sample と同様の動作をするプログラムを作ろう.ただし - クラス名は HW3 とすること. - 以下に示す API 仕様を満たすように作ること -- 以前に類似のクラス(HWやHW2)を作っているが,それらとは別に(拡張するのではなく)新規に作成すればよい. -- ''練習のため,HW2.java などを見ないで一から作ってみることをおすすめします.'' - 適切な動作確認ができるような & HW3Sample と同様の出力が得られるような main メソッドを自分で考えて定義すること. ***HW3 クラスのAPI仕様 [#gd341f70] - ''コンストラクタ'' > :HW3()| 名前 "ほげお",身長 170.0[cm],体重 62.0[kg]のインスタンスを生成. :HW3(String n, double h, double w)| 名前 n,身長 h[cm],体重 w[kg]のインスタンスを生成. < - ''メソッド'' > :void setName(String n)| このインスタンスの名前を n にする. :void setHeight(double h)| このインスタンスの身長を h にする. :void setWeight(double w)| このインスタンスの体重を w にする. :String getName()| このインスタンスの名前の値を返す. :double getHeight()| このインスタンスの身長の値を返す. :double getWeight()| このインスタンスの体重の値を返す. :double calcBMI()| このインスタンスのBMIを計算して返す. &mathjax{ \textrm{BMI} = (\mbox{体重[kg]}) / (\mbox{身長[cm]}/100)^2}; :static String getMessage(double bmi)| bmi が Border1 未満,Border1 以上 Border2 未満,Border2 以上の三つの場合に応じた文字列を返す.戻り値は,順に "やせてんなぁ","ふつー","太ってる…かな?". < - ''フィールド'' > :static double Border1| BMIの境界値のうち小さい方.初期値は 20. :static double Border2| BMIの境界値のうち大きい方.初期値は 25. < **課題B(TA) 完成目標: 次回の実習開始直後 [#kadaiB] 次のことをやりましょう. - HW3PaneSample と同様の動作をするプログラムを作る.クラス名は HW3Pane とする - G14HW3 で HW3PaneSample を使っているところを HW3Pane に書き換えて動作確認する 次のことに注意 - サンプルのようなレイアウトを実現するには,GridPane を使うとよいだろう. - 身長/体重のテキストフィールドのイベント処理では,double 型と解釈できない文字列が入力された場合の例外処理を行う必要がある.サンプルの動作を確認しよう.第12回講義資料の Counter が参考になるかも. - BMI のところは小数点以下2桁で値が表示されている.これを実現するためには,String クラスの format というクラスメソッドを使い, String.format("%.2f", double型の値) とすればよい.このメソッドの戻り値は String である. #hr - [[第14回実習課題全体のページ>Graphics/2019/ex14]] - [[第14回実習課題A,Bのページ>Graphics/2019/ex14AB]] - [[第14回実習課題C,Dのページ>Graphics/2019/ex14CD]]