_Graphics/2015/ex08
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*グラフィックス基礎・演習 2015年度 第8回 [#e9701092]
#contents
//&color(#ff0000){工事中};
**前回の課題Aの復讐 [#z4e91b5a]
[[前回の課題A>Graphics/2015/ex07A]]の現在のあなたの得点は,返却した答案に記されている緑色の数字(25点満点)です.以下のことをきちんとやると,これが赤色の数字(25点満点)にアップします.
+自分の答案の間違いを直す(答案に正しい答えを書き込む.元の解答を消したりせず,色ペンを使う等して区別がつくように追記すること).当然,どうしてその答えになるかを理解することが必要です.
+ それを高橋に見せてokをもらう
+ 期限は,次回演習終了まで.演習時間を圧迫しますが,各自自分の責任と判断します.あしからず.高橋のオフィスアワー([[時間割/2015]]参照)に持参するのも歓迎します.
**課題A(TA) 締切: 今回の演習開始75分後 [#kadaiA]
前回の講義で説明した HW クラスを実際に作ろう.ただし,この課題では前回講義資料のAPI仕様に示した機能のうち,クラス変数/クラスメソッドにかかわる部分を除いたもの,すなわち,次のものを実現することにする.
- 2つのコンストラクタ
- 2つのインスタンスメソッド
- 3つのインスタンス変数
次の二つのクラスを作成し,動作確認しなさい.
+ HW クラス 下図の空白部分を埋めて完成させること
--&color(red){図中のコメントに誤りがあります.}; 誤「コンストラクタ(1引数)」→ 正「コンストラクタ(引数なし)」
+ G08exA クラス 下記をそのままコピー&ペーストしたらよい
&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/HW4ex08.png);
#pre{{
public class G08exA{
public static void main(String[] args){
HW p1 = new HW();
p1.print();
double bmi = p1.calcBMI();
System.out.println("BMIは" + bmi + "やで");
HW p2 = new HW("ふがよ", 234.5, 50.0);
p2.print();
System.out.println("BMIは " + p2.calcBMI() + " やで");
}
}
}}
**課題B,C共通の情報 [#kadaiBC]
課題B,Cでは,&color(blue){HTurtleクラスを拡張して};新しいクラスMyTurtleを作る.
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) | 現在のかめの位置と向きから,[[第6回の課題C>Graphics/2015/ex06#kadaiC]]の図形を描く.nは直角三角形の数,sは斜辺の長さ.
***注意 [#o69e145f]
古い刷の教科書p.64には次の誤植があります.
> 誤:「m.fd(s);」→ 正:「fd(s);」
> 誤:「m.rt(360/n);」→ 正:「lt(360/n);」
**課題B(self) 完成目標: 締切: 今回の演習終了時 [#kadaiB]
次の指示に従って MyTurtle.java と G08exB.java を作りなさい.
-MyTurtle.java には ppolygon メソッドのみを定義する.
--&color(Blue){メソッドを定義する際には,既存のものが使えるならばそれらを活用してなるべく楽をするように考えること.}; 例えば,3引数の ppolygon メソッドは,&color(white){HTurtle}; クラスの &color(white){polygon}; メソッドを呼び出すように書いたら楽ですね.また,5引数の ppolygon メソッド,&color(whiute){3引数の ppolygon }; メソッドを呼び出すように書いたら楽ですね.
-G07exB.javaは,MyTurtle のインスタンスを1匹だけ生成し,次の動作をさせる.
図形間の移動時には線を描かないこと.
++polygon メソッドで7角形を描く
++適当な位置に移動してから 3引数の ppolygon メソッドで図形を描く(辺の数などは自分で決めよう)
++5引数の ppolygon メソッドで一つ図形を描く(辺の数などは自分で決めよう)
&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){ 継承 }; しているからである.
<
**課題C(TA) 締切: 次回演習開始直後 [#kadaiC]
上記の MyTurtle.java に rtriangles メソッドの定義を追加し,それらを呼び出すプログラム G08exC.java を作りなさい.ただし…
-G08exC の main() では MyTurtleクラス と HTurtle クラスのインスタンスを1匹ずつ作ること.
-MyTurtle クラスのインスタンスは rtriangles メソッドを呼び出し,HTurtle クラスのインスタンスは線の色を赤にした上で house メソッドを呼び出すようにすること
&color(white,blue){check};
- 空白部分に何が入るか考えなさい(白字で答えが書いてある)
>
rtrianglesメソッドは,MyTurtleクラスで定義したインスタンスメソッドである.MyTurtleクラスの親クラスである &color(white){HTurtle}; クラスには存在しない.
<
- MyTurtleクラスの親クラスのインスタンスに rtriangles メソッドを呼び出させたらどうなるか.実際にやってみなさい.
結果は以下に白字で書いてある:~
&color(white){「シンボルを見つけられません」というようなコンパイルエラー}; になる.
**課題S(おまけ) [#kadaiS]
次の三つをやりなさい(DrawGraph).
mainメソッド(DrawGraph.javaに書いたらよい)は自分で適当なものを書くこと.
教科書p.75の練習問題7.10,7.11,7.12
終了行:
*グラフィックス基礎・演習 2015年度 第8回 [#e9701092]
#contents
//&color(#ff0000){工事中};
**前回の課題Aの復讐 [#z4e91b5a]
[[前回の課題A>Graphics/2015/ex07A]]の現在のあなたの得点は,返却した答案に記されている緑色の数字(25点満点)です.以下のことをきちんとやると,これが赤色の数字(25点満点)にアップします.
+自分の答案の間違いを直す(答案に正しい答えを書き込む.元の解答を消したりせず,色ペンを使う等して区別がつくように追記すること).当然,どうしてその答えになるかを理解することが必要です.
+ それを高橋に見せてokをもらう
+ 期限は,次回演習終了まで.演習時間を圧迫しますが,各自自分の責任と判断します.あしからず.高橋のオフィスアワー([[時間割/2015]]参照)に持参するのも歓迎します.
**課題A(TA) 締切: 今回の演習開始75分後 [#kadaiA]
前回の講義で説明した HW クラスを実際に作ろう.ただし,この課題では前回講義資料のAPI仕様に示した機能のうち,クラス変数/クラスメソッドにかかわる部分を除いたもの,すなわち,次のものを実現することにする.
- 2つのコンストラクタ
- 2つのインスタンスメソッド
- 3つのインスタンス変数
次の二つのクラスを作成し,動作確認しなさい.
+ HW クラス 下図の空白部分を埋めて完成させること
--&color(red){図中のコメントに誤りがあります.}; 誤「コンストラクタ(1引数)」→ 正「コンストラクタ(引数なし)」
+ G08exA クラス 下記をそのままコピー&ペーストしたらよい
&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/HW4ex08.png);
#pre{{
public class G08exA{
public static void main(String[] args){
HW p1 = new HW();
p1.print();
double bmi = p1.calcBMI();
System.out.println("BMIは" + bmi + "やで");
HW p2 = new HW("ふがよ", 234.5, 50.0);
p2.print();
System.out.println("BMIは " + p2.calcBMI() + " やで");
}
}
}}
**課題B,C共通の情報 [#kadaiBC]
課題B,Cでは,&color(blue){HTurtleクラスを拡張して};新しいクラスMyTurtleを作る.
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) | 現在のかめの位置と向きから,[[第6回の課題C>Graphics/2015/ex06#kadaiC]]の図形を描く.nは直角三角形の数,sは斜辺の長さ.
***注意 [#o69e145f]
古い刷の教科書p.64には次の誤植があります.
> 誤:「m.fd(s);」→ 正:「fd(s);」
> 誤:「m.rt(360/n);」→ 正:「lt(360/n);」
**課題B(self) 完成目標: 締切: 今回の演習終了時 [#kadaiB]
次の指示に従って MyTurtle.java と G08exB.java を作りなさい.
-MyTurtle.java には ppolygon メソッドのみを定義する.
--&color(Blue){メソッドを定義する際には,既存のものが使えるならばそれらを活用してなるべく楽をするように考えること.}; 例えば,3引数の ppolygon メソッドは,&color(white){HTurtle}; クラスの &color(white){polygon}; メソッドを呼び出すように書いたら楽ですね.また,5引数の ppolygon メソッド,&color(whiute){3引数の ppolygon }; メソッドを呼び出すように書いたら楽ですね.
-G07exB.javaは,MyTurtle のインスタンスを1匹だけ生成し,次の動作をさせる.
図形間の移動時には線を描かないこと.
++polygon メソッドで7角形を描く
++適当な位置に移動してから 3引数の ppolygon メソッドで図形を描く(辺の数などは自分で決めよう)
++5引数の ppolygon メソッドで一つ図形を描く(辺の数などは自分で決めよう)
&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){ 継承 }; しているからである.
<
**課題C(TA) 締切: 次回演習開始直後 [#kadaiC]
上記の MyTurtle.java に rtriangles メソッドの定義を追加し,それらを呼び出すプログラム G08exC.java を作りなさい.ただし…
-G08exC の main() では MyTurtleクラス と HTurtle クラスのインスタンスを1匹ずつ作ること.
-MyTurtle クラスのインスタンスは rtriangles メソッドを呼び出し,HTurtle クラスのインスタンスは線の色を赤にした上で house メソッドを呼び出すようにすること
&color(white,blue){check};
- 空白部分に何が入るか考えなさい(白字で答えが書いてある)
>
rtrianglesメソッドは,MyTurtleクラスで定義したインスタンスメソッドである.MyTurtleクラスの親クラスである &color(white){HTurtle}; クラスには存在しない.
<
- MyTurtleクラスの親クラスのインスタンスに rtriangles メソッドを呼び出させたらどうなるか.実際にやってみなさい.
結果は以下に白字で書いてある:~
&color(white){「シンボルを見つけられません」というようなコンパイルエラー}; になる.
**課題S(おまけ) [#kadaiS]
次の三つをやりなさい(DrawGraph).
mainメソッド(DrawGraph.javaに書いたらよい)は自分で適当なものを書くこと.
教科書p.75の練習問題7.10,7.11,7.12
ページ名: