Top / Graphics / 2016 / ex08

グラフィックス基礎及び実習 2016年度 第8回 [edit]

課題A(TA) 締切: 今回の実習終了15分前 [edit]

前回の講義で説明した HW クラスを実際に作ろう.ただし,この課題では前回講義資料のAPI仕様に示した機能のうち,クラス変数/クラスメソッドにかかわる部分を除いたもの,すなわち,次のものを実現することにする.

  • 2つのコンストラクタ
  • 2つのインスタンスメソッド
  • 3つのインスタンス変数

次の二つのクラスを作成し,動作確認しなさい.

  1. HW クラス 下図の空白部分を埋めて完成させること
  2. G08exA クラス 下記をそのままコピー&ペーストしたらよい

HW4ex08-2016.png

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共通の情報 [edit]

課題B,Cでは,HTurtleクラスを拡張して新しいクラスMyTurtleを作る. MyTurtleクラスは,次の仕様のインスタンスメソッドをもつものとする.

MyTurtleクラスのAPI仕様 [edit]

メソッド

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)まで線を引かずに移動して上を向く.そこで上記と同様の図形を描く.
void rtriangles(int n, int s)
現在のかめの位置と向きから,第6回の課題Bの図形を描く.nは直角三角形の数,sは斜辺の長さ.

注意 [edit]

古い刷の教科書p.64には次の誤植があります.

誤:「m.fd(s);」→ 正:「fd(s);」

誤:「m.rt(360/n);」→ 正:「lt(360/n);」

課題B(self) 完成目標: 次回実習開始まで [edit]

次の指示に従って MyTurtle.java と G08exB.java を作りなさい.

  • MyTurtle.java には ppolygon メソッドのみを定義する(rtriangles は次の課題で作る).
    • メソッドを定義する際には,既存のものが使えるならばそれらを活用してなるべく楽をするように考えること. 例えば,3引数の ppolygon メソッドは,HTurtle クラスの polygon メソッドを呼び出すように書いたら楽ですね.また,5引数の ppolygon メソッドは,3引数の ppolygon メソッドを呼び出すように書いたら楽ですね.
  • G07exB.javaは,MyTurtle のインスタンスを1匹だけ生成し,次の動作をさせる. 図形間の移動時には線を描かないこと.
    1. polygon メソッドで7角形を描く
    2. 適当な位置に移動してから 3引数の ppolygon メソッドで図形を描く(辺の数などは自分で決めよう)
    3. 5引数の ppolygon メソッドで一つ図形を描く(辺の数などは自分で決めよう)

check

  • 空白部分に何が入るか考えなさい(白字で答えが書いてある)

    (1) MyTurtle の親クラスは HTurtle クラスである. 言い換えると,MyTurtleクラスは,HTurtle クラスのサブクラスであり,HTurtle クラスは, MyTurtle クラスのスーパークラスである. また,MyTurtle の親の親は Turtle クラスである.

    (2) MyTurtleクラスのAPI仕様に示されたメソッドのうち,インスタンスメソッドなのは   3つ全部   である.ppolygonメソッドは,引数の数が異なる2種類が存在する.すなわち, 多重定義 (日本語) されている.英語をカタカナにした用語で オーバーロード とも言う.

    (3) MyTurtleクラスには polygon と house というメソッドは定義されていないが,それらを使う(呼び出す)ことができる.これは,MyTurtleクラスが,そのスーパークラスである HTurtle クラスからこれらのメソッドを  継承  しているからである. さらに,MyTurtleクラスでは fd や rt といったメソッドも使うことができる.これは, Turtle クラスからこれらを  継承  しているからである.

課題C(TA) 締切: 次回実習開始直後 [edit]

上記の MyTurtle.java に rtriangles メソッドの定義を追加し,それらを呼び出すプログラム G08exC.java を作りなさい.ただし…

  • G08exC の main() では MyTurtleクラス と HTurtle クラスのインスタンスを1匹ずつ作ること.
  • MyTurtle クラスのインスタンスは rtriangles メソッドを呼び出し,HTurtle クラスのインスタンスは線の色を赤にした上で house メソッドを呼び出すようにすること

check

  • 空白部分に何が入るか考えなさい(白字で答えが書いてある)

    rtrianglesメソッドは,MyTurtleクラスで定義したインスタンスメソッドである.MyTurtleクラスの親クラスである HTurtle クラスには存在しない.

  • MyTurtleクラスの親クラスのインスタンスに rtriangles メソッドを呼び出させたらどうなるか.実際にやってみなさい. 結果は以下に白字で書いてある:
    「シンボルを見つけられません」というようなコンパイルエラー になる.

課題S(おまけ) [edit]

次の三つをやりなさい(DrawGraph). mainメソッド(DrawGraph.javaに書いたらよい)は自分で適当なものを書くこと.

教科書p.75の練習問題7.10,7.11,7.12


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-06-07 (火) 16:36:40 (1052d)