_Graphics/2014/ex07
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*グラフィックス基礎・演習 2014年度 第7回 [#e9701092]
#contents
//&color(#ff0000){工事中};
**課題A,C共通の情報 [#yff07abc]
課題A,Cでは,&color(blue){HTurtleクラスを拡張して};新しいクラスMyTurtleを作る(&color(red){したがって,[[前回の課題B>Graphics/2014/ex06#kadaiB]]をやってない人はそちらを先に仕上げねばならない};).
MyTurtleクラスは,次の仕様のインスタンスメソッドをもつものとする.
***MyTurtleクラスのAPI仕様 [#a79804c8]
メソッド
:void ppolygon(int n, int m, int s) | 現在のかめの位置と向きから,1辺の長さ s の n 角形の各辺の周りに m 角形を配置した図形を描く(p.64参照).
:void ppolygon(int x, int y, int n, int m, int s) | 位置(x,y)まで線を引かずに移動し,そこで&color(Blue){上を向いて};上記と同じ図形を描く.
:void rtriangles(int n, int s) | 現在のかめの位置と向きから,[[前回の課題C>Graphics/2014/ex06#kadaiC]]の図形を描く.nは直角三角形の数,sは斜辺の長さ.
***注意 [#o69e145f]
古い刷の教科書p.64には次の誤植があります.
> 誤:「m.fd(s);」→ 正:「fd(s);」
> 誤:「m.rt(360/n);」→ 正:「lt(360/n);」
**課題A(TA) 締切: 締切: 今回の演習開始45分後 [#kadaiA]
次の指示に従って MyTurtle.java と G07exA.java を作りなさい.
-MyTurtle.javaにはppolygonメソッドのみを定義する(上記API仕様に示された他のメソッドは課題Cで追加する).
--&color(Blue){メソッドを定義する際には,既存のものが使えるならばそれらを活用してなるべく楽をするように考えること.}; 例えば,ppolygon メソッドは,&color(white){HTurtle}; クラスの &color(white){polygon}; メソッドを呼び出すように書いたら楽ですね.また,ppolygon メソッドは多重定義されてますが,どちらかはどちらかを呼び出すように書くと楽ですね.
-G07exA.javaは,MyTurtle のインスタンスを1匹だけ生成し,次の動作をさせる.
図形間の移動時には線を描かないこと.
++polygon メソッドで6角形を描く
++5引数の ppolygon メソッドで一つ図形を描く(辺の数などは自分で決めよう)
++適当な位置に移動してから 3引数の ppolygon メソッドで図形を描く
**課題B(self) 完成目標: 今回の演習終了時 [#kadaiB]
[[HWsample.class>Graphics:HWsample.class]]
上記リンク先のクラスファイルを手元に保存して,このクラスを利用するプログラムを作りなさい.
ただし,次の指示に従うこと.
+ 作成するプログラムのクラス名は G07exB とする
+ HWsample クラスのインスタンスは少なくとも2つは生成する(2つのコンストラクタを使い分けよう)
+ 以下に示す HWsample クラスのAPI仕様に示された全てのメソッドを呼び出すようにする
+ プログラムの作成場所についてはこれまでの課題と同様に考えること
&color(white,blue){check};
- 空白部分に何が入るか考えなさい(白字で答えが書いてある)
>
HWsample クラスのAPI仕様によると,このクラスには3つのメソッドがある.
そのうち,戻り値があるのは &color(white){1}; 個,インスタンスメソッドは &color(white){2}; 個だ.
API仕様でインスタンスメソッドと &color(white){ クラス }; メソッドを見分けるには,戻り値の型を示す部分の前に &color(white){static}; がついているかどうかを見ればよい.
HWsample クラスの場合,インスタンスメソッドでないメソッドは,&color(white){ printHimando }; という名前のもの1個だ.
<
***HWsampleクラスのAPI仕様 [#ka96e93f]
コンストラクタ
:HWsample() | HWsampleのインスタンスをデフォルトの値(どんな値かは上記の課題のプログラムで確認しよう)で生成する
:HWsample(String n, double h, double w) | 名前 n,身長 h [m],体重 w [kg] のHWsampleインスタンスを生成する
&color(blue){次回};の課題のためのヒント: 引数なしのコンストラクタは,引数ありのものを呼ぶように作りましょう.
メソッド
:void print() | 名前,身長,体重を表示する
:double calcBMI() | BMIを計算して返す.
BMIの計算式は次の通り:
&jsmath( (\mbox{BMI}) = \frac{(\mbox{weight[kg]})}{(\mbox{height[m]})^2} );
:static void printHimando(double bmi) | bmiの値に応じたメッセージを出力.
メッセージは,bmiが20未満,20以上25以下,25より大きい場合の三通り.
**課題C(self) 完成目標: 次回授業開始前 [#kadaiC]
MyTurtle.java にrtrianglesメソッドの定義を追加し,それらを呼び出すプログラム G07exC.java を作りなさい.ただし…
-G07exCのmain()ではMyTurtleクラスとHTurtleクラスのインスタンスを1匹ずつ作ること.
-MyTurtleクラスのインスタンスはrtrianglesメソッドを呼び出し,HTurtleクラスのインスタンスは線の色を赤にした上でhouseメソッドを呼び出すようにすること
&color(white,blue){check};
- 空白部分に何が入るか考えなさい(白字で答えが書いてある)
>
(1) MyTurtle の親クラスは &color(white){HTurtle}; クラスである.
言い換えると,MyTurtleクラスは,&color(white){HTurtle}; クラスのサブクラスであり,&color(white){HTurtle}; クラスは, MyTurtle クラスのスーパークラスである.
また,MyTurtle の親の親は &color(white){Turtle}; クラスである.
<
>
(2) MyTurtleクラスのAPI仕様に示されたメソッドのうち,インスタンスメソッドなのは &color(white){ 3つ全部 }; である.ppolygonメソッドは,引数の数が異なる2種類が存在する.すなわち,&color(white){ 多重定義 };(日本語) されている.英語をカタカナにした用語で &color(white){オーバーロード}; とも言う.
<
>
(3) MyTurtleクラスには polygon と house というメソッドは定義されていないが,それらを使う(呼び出す)ことができる.これは,MyTurtleクラスが,そのスーパークラスである HTurtle クラスからこれらのメソッドを &color(white){ 継承 }; しているからである. さらに,MyTurtleクラスでは fd や rt といったメソッドも使うことができる.これは,&color(white){ Turtle }; クラスからこれらを &color(white){ 継承 }; しているからである.
<
>
(4) rtrianglesメソッドは,MyTurtleクラスで定義したインスタンスメソッドであり,MyTurtleクラスの親クラスである &color(white){HTurtle}; クラスには存在しない.
<
- MyTurtleクラスの親クラスのインスタンスに rtriangles メソッドを呼び出させたらどうなるか.実際にやってみなさい.
結果は以下に白字で書いてある:~
&color(white){「シンボルを見つけられません」というようなコンパイルエラー}; になる.
**課題D(おまけ) [#kadaiD]
次の三つをやりなさい(DrawGraph).
mainメソッド(DrawGraph.javaに書いたらよい)は自分で適当なものを書くこと.
教科書p.75の練習問題7.10,7.11,7.12
終了行:
*グラフィックス基礎・演習 2014年度 第7回 [#e9701092]
#contents
//&color(#ff0000){工事中};
**課題A,C共通の情報 [#yff07abc]
課題A,Cでは,&color(blue){HTurtleクラスを拡張して};新しいクラスMyTurtleを作る(&color(red){したがって,[[前回の課題B>Graphics/2014/ex06#kadaiB]]をやってない人はそちらを先に仕上げねばならない};).
MyTurtleクラスは,次の仕様のインスタンスメソッドをもつものとする.
***MyTurtleクラスのAPI仕様 [#a79804c8]
メソッド
:void ppolygon(int n, int m, int s) | 現在のかめの位置と向きから,1辺の長さ s の n 角形の各辺の周りに m 角形を配置した図形を描く(p.64参照).
:void ppolygon(int x, int y, int n, int m, int s) | 位置(x,y)まで線を引かずに移動し,そこで&color(Blue){上を向いて};上記と同じ図形を描く.
:void rtriangles(int n, int s) | 現在のかめの位置と向きから,[[前回の課題C>Graphics/2014/ex06#kadaiC]]の図形を描く.nは直角三角形の数,sは斜辺の長さ.
***注意 [#o69e145f]
古い刷の教科書p.64には次の誤植があります.
> 誤:「m.fd(s);」→ 正:「fd(s);」
> 誤:「m.rt(360/n);」→ 正:「lt(360/n);」
**課題A(TA) 締切: 締切: 今回の演習開始45分後 [#kadaiA]
次の指示に従って MyTurtle.java と G07exA.java を作りなさい.
-MyTurtle.javaにはppolygonメソッドのみを定義する(上記API仕様に示された他のメソッドは課題Cで追加する).
--&color(Blue){メソッドを定義する際には,既存のものが使えるならばそれらを活用してなるべく楽をするように考えること.}; 例えば,ppolygon メソッドは,&color(white){HTurtle}; クラスの &color(white){polygon}; メソッドを呼び出すように書いたら楽ですね.また,ppolygon メソッドは多重定義されてますが,どちらかはどちらかを呼び出すように書くと楽ですね.
-G07exA.javaは,MyTurtle のインスタンスを1匹だけ生成し,次の動作をさせる.
図形間の移動時には線を描かないこと.
++polygon メソッドで6角形を描く
++5引数の ppolygon メソッドで一つ図形を描く(辺の数などは自分で決めよう)
++適当な位置に移動してから 3引数の ppolygon メソッドで図形を描く
**課題B(self) 完成目標: 今回の演習終了時 [#kadaiB]
[[HWsample.class>Graphics:HWsample.class]]
上記リンク先のクラスファイルを手元に保存して,このクラスを利用するプログラムを作りなさい.
ただし,次の指示に従うこと.
+ 作成するプログラムのクラス名は G07exB とする
+ HWsample クラスのインスタンスは少なくとも2つは生成する(2つのコンストラクタを使い分けよう)
+ 以下に示す HWsample クラスのAPI仕様に示された全てのメソッドを呼び出すようにする
+ プログラムの作成場所についてはこれまでの課題と同様に考えること
&color(white,blue){check};
- 空白部分に何が入るか考えなさい(白字で答えが書いてある)
>
HWsample クラスのAPI仕様によると,このクラスには3つのメソッドがある.
そのうち,戻り値があるのは &color(white){1}; 個,インスタンスメソッドは &color(white){2}; 個だ.
API仕様でインスタンスメソッドと &color(white){ クラス }; メソッドを見分けるには,戻り値の型を示す部分の前に &color(white){static}; がついているかどうかを見ればよい.
HWsample クラスの場合,インスタンスメソッドでないメソッドは,&color(white){ printHimando }; という名前のもの1個だ.
<
***HWsampleクラスのAPI仕様 [#ka96e93f]
コンストラクタ
:HWsample() | HWsampleのインスタンスをデフォルトの値(どんな値かは上記の課題のプログラムで確認しよう)で生成する
:HWsample(String n, double h, double w) | 名前 n,身長 h [m],体重 w [kg] のHWsampleインスタンスを生成する
&color(blue){次回};の課題のためのヒント: 引数なしのコンストラクタは,引数ありのものを呼ぶように作りましょう.
メソッド
:void print() | 名前,身長,体重を表示する
:double calcBMI() | BMIを計算して返す.
BMIの計算式は次の通り:
&jsmath( (\mbox{BMI}) = \frac{(\mbox{weight[kg]})}{(\mbox{height[m]})^2} );
:static void printHimando(double bmi) | bmiの値に応じたメッセージを出力.
メッセージは,bmiが20未満,20以上25以下,25より大きい場合の三通り.
**課題C(self) 完成目標: 次回授業開始前 [#kadaiC]
MyTurtle.java にrtrianglesメソッドの定義を追加し,それらを呼び出すプログラム G07exC.java を作りなさい.ただし…
-G07exCのmain()ではMyTurtleクラスとHTurtleクラスのインスタンスを1匹ずつ作ること.
-MyTurtleクラスのインスタンスはrtrianglesメソッドを呼び出し,HTurtleクラスのインスタンスは線の色を赤にした上でhouseメソッドを呼び出すようにすること
&color(white,blue){check};
- 空白部分に何が入るか考えなさい(白字で答えが書いてある)
>
(1) MyTurtle の親クラスは &color(white){HTurtle}; クラスである.
言い換えると,MyTurtleクラスは,&color(white){HTurtle}; クラスのサブクラスであり,&color(white){HTurtle}; クラスは, MyTurtle クラスのスーパークラスである.
また,MyTurtle の親の親は &color(white){Turtle}; クラスである.
<
>
(2) MyTurtleクラスのAPI仕様に示されたメソッドのうち,インスタンスメソッドなのは &color(white){ 3つ全部 }; である.ppolygonメソッドは,引数の数が異なる2種類が存在する.すなわち,&color(white){ 多重定義 };(日本語) されている.英語をカタカナにした用語で &color(white){オーバーロード}; とも言う.
<
>
(3) MyTurtleクラスには polygon と house というメソッドは定義されていないが,それらを使う(呼び出す)ことができる.これは,MyTurtleクラスが,そのスーパークラスである HTurtle クラスからこれらのメソッドを &color(white){ 継承 }; しているからである. さらに,MyTurtleクラスでは fd や rt といったメソッドも使うことができる.これは,&color(white){ Turtle }; クラスからこれらを &color(white){ 継承 }; しているからである.
<
>
(4) rtrianglesメソッドは,MyTurtleクラスで定義したインスタンスメソッドであり,MyTurtleクラスの親クラスである &color(white){HTurtle}; クラスには存在しない.
<
- MyTurtleクラスの親クラスのインスタンスに rtriangles メソッドを呼び出させたらどうなるか.実際にやってみなさい.
結果は以下に白字で書いてある:~
&color(white){「シンボルを見つけられません」というようなコンパイルエラー}; になる.
**課題D(おまけ) [#kadaiD]
次の三つをやりなさい(DrawGraph).
mainメソッド(DrawGraph.javaに書いたらよい)は自分で適当なものを書くこと.
教科書p.75の練習問題7.10,7.11,7.12
ページ名: