Java 基礎問題4 平成17年度春期問8 解説
解説 |
---|
設問1 a: aはMotionクラスのrunメソッド内の処理である。 >while (true) { > Space.draw(point); > try { > Thread.sleep(40); > } catch (InterruptedException e) {} > Point current = point; > [a]; > Space.erase(current); >} 選択肢や問題文から、aではupdateの処理を行う。 また、eraseを行うため、aの後でcurrentは更新されていてはならず、 pointはupdate後の状態に更新する必要があるため >ウ point = update(point) が正解。 >ア current = update(current) >イ current = update(point) currentが更新されるため誤り。 >エ update(current) >オ update(point) pointが更新されないため誤り。 b: bはThreadコンストラクタの引数としてRunnableインタフェースを実装したクラスの インスタンスを指定する部分である。 インスタンスを生成できるのはRunableインタフェースを実装した 抽象クラスMotionのサブクラスであるSimpleMotionクラスであるため、 >エ new SimpleMotion(points[i]) が正解である。 設問2 図より、コンストラクタに与えられたPoint(最初の位置)から 各選択肢でどのように動いているか見ると、 ①:xは-方向,yは+方向に移動 ②:xは+方向,yは+方向に移動 ③:xは-方向,yは-方向に移動 ④:xは+方向,yは-方向に移動 プログラムを見ると SimpleMotion.updateメソッド内で >int speed = point.getSpeed(); >int x = point.getX() + directionX * speed; >int y = point.getY() + directionY * speed; として、単位当りのspeedに対して、x方向の移動量がdirectionX、 y方向の移動量がdirectionYであると考えられる。 初期値の状態からの動作であるため >private int directionX = 1, directionY = 1; から、x方向、y方向共に+方向に移動するため >イ 矢印 ② のように進む。 が正解。 |
匿名様 ご投稿
メニューへ戻る