API(Application Programming Interface)とは,アプリケーション(みなさんが作るプログラム)が利用できるメソッドのことです.
タートルプログラムは,松澤が開発した(している)プログラムで,rt(),fd()などのメソッドがAPIとして提供されています.
Java標準ライブラリの説明書は,以下にあります.
例えば,本章で利用する.LinkedListのAPIドキュメントを読んでみましょう.
ListTurtleは中身が見えて便利なのですが,Java標準ライブラリでは使えないのが難点です. 将来はJava標準ライブラリで書かれたプログラムを読む必要もあるので,標準ライブラリ方式も勉強しておきましょう. (なお,カーソル以外はListTurtleと同様に利用できるようにListTurtleをつくってあります.)
Java標準ライブラリには「カーソル」がありません. 従って,先に説明した4匹の亀のアニメーションについて,カーソルを使わない方法で書き直しておきましょう.
1: /* 2: * FourTurtles2.java 3: * 4匹の亀を動かすプログラム2(ListTurtle+getterで管理する) 4: * Created on 2012/01/07 5: * Copyright(c) 2011 Yoshiaki Matsuzawa, Shizuoka University. All rights reserved. 6: */ 7: public class FourTurtles2 extends Turtle { 8: 9: // 起動処理 10: public static void main(String[] args) { 11: Turtle.startTurtle(new FourTurtles2(), args); 12: } 13: 14: // タートルを動かす処理 15: public void start() { 16: // ウインドウの準備 17: hide(); 18: window.setSize(1100, 500); 19: 20: // リスト(入れ物)を作る 21: ListTurtle<Turtle> turtles = new ListTurtle<Turtle>(); 22: turtles.warpByTopLeft(100, 300); 23: 24: // 4匹のカメを生成 25: for (int i = 0; i < 4; i++) { 26: turtles.add(new Turtle()); 27: } 28: 29: // 初期位置へ移動 30: turtles.get(0).warp(100, 100); 31: turtles.get(1).warp(100, 200); 32: turtles.get(2).warp(200, 100); 33: turtles.get(3).warp(200, 200); 34: 35: // カメを動かす 36: for (int i = 0; i < 360; i++) { 37: for (int j = 0; j < 4; j++) { 38: turtles.get(j).fd(1); 39: turtles.get(j).rt(1); 40: } 41: } 42: } 43: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、FourTurtles2プログラムが実行できます。
Java標準ライブラリの書き方になります.タートルの画面に表示されないことと,import文以外はほとんど書き方は変わりません.
1: import java.util.LinkedList; 2: 3: /* 4: * FourTurtles3.java 5: * 4匹の亀を動かすプログラム3(LinkedListで管理する) 6: * Created on 2012/01/07 7: * Copyright(c) 2011 Yoshiaki Matsuzawa, Shizuoka University. All rights reserved. 8: */ 9: public class FourTurtles3 extends Turtle { 10: 11: // 起動処理 12: public static void main(String[] args) { 13: Turtle.startTurtle(new FourTurtles3(), args); 14: } 15: 16: // タートルを動かす処理 17: public void start() { 18: // ウインドウの準備 19: hide(); 20: window.setSize(1100, 500); 21: 22: // リスト(入れ物)を作る - JavaライブラリのLinkedList 23: LinkedList<Turtle> turtles = new LinkedList<Turtle>(); 24: 25: // 4匹のカメを生成 26: for (int i = 0; i < 4; i++) { 27: turtles.add(new Turtle()); 28: } 29: 30: // 初期位置へ移動 31: turtles.get(0).warp(100, 100); 32: turtles.get(1).warp(100, 200); 33: turtles.get(2).warp(200, 100); 34: turtles.get(3).warp(200, 200); 35: 36: // カメを動かす 37: for (int i = 0; i < 360; i++) { 38: for (int j = 0; j < 4; j++) { 39: turtles.get(j).fd(1); 40: turtles.get(j).rt(1); 41: } 42: } 43: } 44: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、FourTurtles3プログラムが実行できます。
Java標準ライブラリを使うには,import文を使う必要があるときがあります.前のプログラムでは,1行目に書いてありました.
import java.util.LinkedList;
import宣言は,クラスブロックが始まる前の所(上の方)に書きます.
import宣言をすると,正式名称がjava.util.LinkedListであるクラスが,LinkedListと省略してプログラムで扱うことが出来るようになります.
最近のオブジェクト指向言語ではList(LinkedListやArrayList)を使うのが主流ですが,まだライブラリで一部使われているのが配列です.
1: /* 2: * FourTurtles4.java 3: * 4匹の亀を動かすプログラム4(配列で管理する) 4: * Created on 2012/01/07 5: * Copyright(c) 2011 Yoshiaki Matsuzawa, Shizuoka University. All rights reserved. 6: */ 7: public class FourTurtles4 extends Turtle { 8: 9: // 起動処理 10: public static void main(String[] args) { 11: Turtle.startTurtle(new FourTurtles4(), args); 12: } 13: 14: // タートルを動かす処理 15: public void start() { 16: // ウインドウの準備 17: hide(); 18: window.setSize(1100, 500); 19: 20: // リスト(入れ物)を作る - Javaの配列機能を使って作る 21: Turtle[] turtles = new Turtle[4]; 22: 23: // 4匹のカメを生成 24: for (int i = 0; i < 4; i++) { 25: turtles[i] = new Turtle(); 26: } 27: 28: // 初期位置へ移動 29: turtles[0].warp(100, 100); 30: turtles[1].warp(100, 200); 31: turtles[2].warp(200, 100); 32: turtles[3].warp(200, 200); 33: 34: // カメを動かす 35: for (int i = 0; i < 360; i++) { 36: for (int j = 0; j < 4; j++) { 37: turtles[j].fd(1); 38: turtles[j].rt(1); 39: } 40: } 41: } 42: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、FourTurtles4プログラムが実行できます。
配列は,要素の上限を決めないと使えないところが(LinkedListはメモリの許す限り無限)欠点です.
添字は0から始まるので注意. 添字はint型の変数でもOK.例)
int[] numbers = new int[5]; int x = 3; numbers[x] = x;この例では,numbersの3番目の要素に3を代入している.
ListTurtle, LinkedList, 配列では概ね同じ事ができます.以下に対応をまとめました.
(操作) | ListTurtle | LinkedList | 配列 |
---|---|---|---|
作成 | ListTurtle<[入れるクラスの型]> aList = new ListTurtle<[入れるクラスの型]>(); | LinkedList<[入れるクラスの型]> aList = new LinkedList<[入れるクラスの型]>(); | [入れるクラスの型][] aList = new [入れるクラスの型][[配列に入れられる要素数]]; |
挿入 | aList.add([入れたいもの]); | aList.add([入れたいもの]); | aList[入れたいものの番地(0から)] = [入れたいもの]; |
取得 | aList.get([取り出したいものの番地(0から)]); | aList.get([取り出したいものの番地(0から)]); | aList[取り出したいものの番地(0から)] |
(操作) | ListTurtle | LinkedList | 配列 |
---|---|---|---|
作成 | ListTurtle<Turtle> aList = new ListTurtle<Turtle>(); | LinkedList<Turtle> aList = new LinkedList<Turtle>(); | Turtle[] aList = new Turtle[4]; |
挿入 | aList.add(new Turtle()); | aList.add(new Turtle()); | aList[0] = new Turtle(); |
取得 | aList.get(0) | aList.get(0) | aList[0] |
「アニメーションを作り直そう」でListTurtleを使って作ったプログラムについて,LinkedListや配列を使って作り直してみてください.
ファイル名は「Zero655LinkedList.java」, 「Zero655Array.java」とすること.
「大量流れ星アニメーションを作ろう」で作ったプログラムについて,LinkedListや配列を使って作り直してみてください.
ファイル名は「SuperShootingStarLinkedList.java」, 「SuperShootingStarArray.java」とすること.