$ java HTurtleと実行してもエラーになる(HTurtle.javaにはmainがないため)だけなので注意.
$ java T51
check
T51.javaの変数 m は,6行目をみると分かるように HTurtle クラスのオブジェクトを指す変数である. 9行目や11行目では,mの指すオブジェクトに対して house や polygon という インスタンス メソッドを呼び出している.これらのメソッドは HTurtle クラスで定義されている. このクラスの定義は,ソースファイル HTurtle.java に書かれている.
一方,10行目などでは,mの指すオブジェクトに対して up, lt, fd 等の Turtle クラスで定義された インスタンス メソッドが呼び出せている.これは,HTurtle クラスがTurtle クラスを拡張して定義されたたものだからである.
また,8行目では,TurtleFrame クラスの インスタンス メソッド add に対して,HTurtle クラスのインスタンスを指す変数 m を渡している. しかし,この add メソッドは,本来は Turtle クラスのインスタンスを指す変数を引数にとるものである. このようなプログラムが動作するのも,Turtle クラスを拡張して HTurtle クラスを定義したからである.
次のことを順番にやりなさい.
: HHogeTurtle h = new HHogeTurtle(); (フレームに載せ,やる気アップ) h.up(); h.moveTo(295, 300); h.down(); (やつを描く) :
数理情報学科の学力認定試験の問題に挑戦してみよう. 2012年2月に行われた2011年度試験の専門Iの問題IV. 次のようにして問題を閲覧できる.
数理情報学科のwikiサイトのアクセス時に求められるユーザ名とパスワードは,全学統合認証のものと同じ. 学力認定試験の他にも定期試験の過去問,教員による授業自己点検報告書なども閲覧できる.
問(1)の「クラスメソッドbproblem() を書きなさい」とか,「Randクラスのクラスメソッドirand()…」みたいな指示になるべく沿ってソースを角煮は,↓に示すようなソースファイルを作るとよい.試験問題では,Randクラスが存在すると仮定して,そのソースは書く必要がないということだが,ここではそれもあわせて書く例にしてある.
// クラス BProblem の定義 class BProblem { // クラスメソッド bproblem の定義 static int bproblem(int m) { : return n; } // mainメソッドの定義 public static void main(String[] args) { ここでクラスメソッド bproblem を呼ぶには n = bproblem(10) または n = BProblem.bproblem(10) のように書けばよい } } // クラス Rand の定義 class Rand { // クラスメソッド irand の定義 static int irand() { return (int)(365*Math.random()); } }
ここでは,一つのソースファイルで複数のクラスを定義する例を示している. class の前に public がついていないことに注意.このソースファイル自体の名前は, 二つのクラス名と無関係に適当な名前をつければよい(ここでは Birth.java とする). このとき,
$ javac Birth.java
とコンパイルすると,BProblem.class と Rand.class ができる.実行するには,実行したいmainメソッドを含むクラスの名前を指定すればよいので,
$ java BProblem
とする.