計算機プログラミングI 第2回 •プログラミング・モデル –オブジェクト –メソッド呼び出し –変数 •プログラムの構造 –文法 1 計算機プログラミングI (増原) 2003年度 間違い探し ウサギとカメが競走をしてカメが勝ちました。 • a turtle raced against a rabbit • A turtles against a rabbit racing • The turtle flew under the sea. (flewはflyの過去形) • The rabbit won the race. 2 計算機プログラミングI (増原) 2003年度 間違い探し ウサギとカメが競走をしてカメが勝ちました。 •X a turtle raced against a rabbit A . • A turtles against a rabbit racing V • The turtle flew under the sea. (flewはflyの過去形) • The rabbit won the race. 3 計算機プログラミングI (増原) 2003年度 間違い探し ウサギとカメが競走をしてカメが勝ちました。 •X a turtle raced against a rabbit A . • A turtles= against a rabbit racing. === 語順がおかしい ed • The turtle flew under the sea. (flewはflyの過去形) V • The rabbit won the race. 4 計算機プログラミングI (増原) 2003年度 間違い探し ウサギとカメが競走をしてカメが勝ちました。 •X a turtle raced against a rabbit A . • A turtles= against a rabbit racing. === 語順がおかしい ed • The turtle flew under the sea. (flewはflyの過去形) カメは飛ばない・海の中は「飛べ」ない • The rabbit won the race. V 5 計算機プログラミングI (増原) 2003年度 間違い探し ウサギとカメが競走をしてカメが勝ちました。 •X a turtle raced against a rabbit A . • A turtles= against a rabbit racing. === 語順がおかしい ed • The turtle flew under the sea. (flewはflyの過去形) カメは飛ばない・海の中は「飛べ」ない • The rabbit won the race. 結果が逆! V 6 計算機プログラミングI (増原) 2003年度 間違い探し ウサギとカメが競走をしてカメが勝ちました。 •X a turtle raced against a rabbit A . 文法的な • A turtles= against a rabbit racing. === 誤り 語順がおかしい ed • The turtle flew under the sea. (flewはflyの過去形) カメは飛ばない・海の中は「飛べ」ない 意味的な • The rabbit won the race. 誤り 結果が逆! V 7 計算機プログラミングI (増原) 2003年度 間違い探し ウサギとカメが競走をしてカメが勝ちました。 •X a turtle raced against a rabbit A . 文法的な • A turtles= against a rabbit racing. === 誤り 語順がおかしい ed • The turtle flew under the sea. (flewはflyの過去形) カメは飛ばない・海の中は「飛べ」ない 意味的な • The rabbit won the race. 誤り 結果が逆! V コンパイル エラー 8 計算機プログラミングI (増原) 2003年度 課題 9 計算機プログラミングI (増原) 2003年度 プログラムの構造 /** 最初のプログラムの例 */ public class T21 { public static void main(String[] args){ TurtleFrame f; //変数 f の型宣言 f = new TurtleFrame(); //TurtleFrameを作成しfに代入 Turtle m = new Turtle(); //Turtle を作成し,m の初期値として代入 Turtle m1 = new Turtle(); //もう1つ作成し,m1 の初期値として代入 f.add(m); //f に m を追加 f.add(m1); //f に m1 を追加 m.fd(100); //m よ前に 100 進め m.rt(90); //m よ右に 90 度回れ m.fd(150); //m よ前に 150 進め m1.rt(90); //m1 よ右に 90 度回れ m1.fd(100); //m1 よ前に 150 進め } } 10 計算機プログラミングI (増原) 2003年度 プログラミング・モデル 重要な概念 • オブジェクト 「もの」を計算機上で 表わしたもの • メソッド呼び出し オブジェクトに対する指令 • 変数 「値」をしまう名前のついた箱 m m1 f 11 計算機プログラミングI (増原) 2003年度 プログラミング・モデル: オブジェクト • オブジェクトには種類がある = 「クラス」 –種類の例: 「ウィンドウ」「タートル」「色」 • オブジェクトは作ることができる –個々のオブジェクト = 「インスタンス」 –それぞれ違う「もの」 • 個々のインスタンスに対して指令を 出すことができる = 「メソッド呼び出し」 –指令の種類 = 「メソッド名」(例: 前進・後退・・・) –指令の「パラメータ」(例: 前進する距離・回転する角度) 12 計算機プログラミングI (増原) 2003年度 プログラミング・モデル: 変数 • 箱を作ること = 変数宣言 – 入れてよい値の種類 = 「型」 – 名前 = 「変数名」 – 最初にしまわれる値 = 「初期値」 • 箱に値をしまうこと = 代入 – 1つの箱には何回でも代入できる – 参照されるのは最後に代入された値 • 箱から値をとり出すこと = 参照 • 箱にしまうことのできる値: – オブジェクトへの参照 ―― オブジェクトに対するリモコンのようなもの – 整数・実数などなど 13 計算機プログラミングI (増原) 2003年度 オブジェクト /** 最初のプログラムの例 */ public class T21 { public static void main(String[] args){ TurtleFrame f; //変数 f の型宣言 f = new TurtleFrame(); //TurtleFrameを作成しfに代入 Turtle m = new Turtle(); //Turtle を作成し,m の初期値として代入 Turtle m1 = new Turtle(); //もう1つ作成し,m1 の初期値として代入 f.add(m); //f に m を追加 f.add(m1); //f に m1 を追加 m.fd(100); //m よ前に 100 進め •コンストラクタ呼び出し ― m.rt(90); //m よ右に 90 度回れ オブジェクトを作る m.fd(150); //mnew よ前に 150 進め クラス名(引数式, ...); m1.rt(90); //m1 よ右に 90 度回れ •メソッド呼び出し ― 操作の指示 m1.fd(100); //m1 よ前に 150 進め オブジェクト式 . メソッド名(引数式,...); } } 14 計算機プログラミングI (増原) 2003年度 変数 /** 最初のプログラムの例 */ public class T21 { public static void main(String[] args){ TurtleFrame f; //変数 f の型宣言 f = new TurtleFrame(); //TurtleFrameを作成しfに代入 Turtle m = new Turtle(); //Turtle を作成し,m の初期値として代入 Turtle m1 = new Turtle(); //もう1つ作成し,m1 の初期値として代入 f.add(m); //f に m を追加 •型宣言: f.add(m1); //f に m1 を追加 型名 変数名; m.fd(100); //m よ前に 100 進め •代入文: 変数に値を入れる指示 m.rt(90); //m よ右に 90 度回れ 変数名 = 式; m.fd(150); //m よ前に 150 進め •型宣言 代入文: m1.rt(90); //m1 よ右に+90 度回れ 型名 変数名 = 式; m1.fd(100); //m1 よ前に 150 進め •変数式: 変数に入っている値をとり出す } } 変数名 15 計算機プログラミングI (増原) 2003年度 プログラムの構造 /** 最初のプログラムの例 */ public class T21 { public static void main(String[] args){ クラス名 TurtleFrame f; //変数 f の型宣言 f = new TurtleFrame(); //TurtleFrameを作成しfに代入 Turtle m = new Turtle(); //Turtle を作成し,m の初期値として代入 Turtle m1 = new Turtle(); //もう1つ作成し,m1 の初期値として代入 コメント(注釈): f.add(m); //f に m を追加 /* 何でも */ f.add(m1); //f に m1 を追加 m.fd(100); //m よ前に 100 進め // 何でも(行末まで) m.rt(90); //m よ右に 90 度回れ m.fd(150); //m よ前に 150 進め m1.rt(90); //m1 よ右に 90 度回れ m1.fd(100); //m1 よ前に 150 進め } } 16 計算機プログラミングI (増原) 2003年度 プログラムの文法 許される書き方と意味 • new クラス名( ) コンストラクタ式 例: new TurtleFrame( ) • 変数名 = 式 ; 代入文 組合せ • 変数名 = new クラス名( ) ; 例: f = new TurtleFrame(); ※許されていない書き方→文法エラー 17 計算機プログラミングI (増原) 2003年度 プログラム T22 (2.6) public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; Turtle m = new Turtle(x,y,180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+ d,y+ d,0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 m1.setColor(c); //m1 の色を赤色に指定 f.add(m); f.add(m1); m.fd(d); m1.fd(d); m.lt(90); m1.lt(90); d = d / 2; //d の値を d/2 に変更 m.fd(d); m1.fd(d); } } 18 計算機プログラミングI (増原) 2003年度 整数型の変数の宣言 public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; } Turtle m = new Turtle(x,y,180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+ d,y+ d,0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 m1.setColor(c); //m1 の色を赤色に指定 f.add(m); f.add(m1); m.fd(d); m1.fd(d); m.lt(90); m1.lt(90); d = d / 2; //d の値を d/2 に変更 m.fd(d); m1.fd(d); } 19 計算機プログラミングI (増原) 2003年度 整数型の変数の宣言 public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; } Turtle m = new Turtle(x,y,180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+ d,y+ d,0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 m1.setColor(c); //m1 の色を赤色に指定 int x = 200; f.add(m); int y = 200; f.add(m1); m.fd(d); int d = 100; m1.fd(d); m.lt(90); と同じ m1.lt(90); d = d / 2; //d の値を d/2 に変更 m.fd(d); m1.fd(d); } 20 計算機プログラミングI (増原) 2003年度 整数型の変数の宣言 public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; } Turtle m = new Turtle(x,y,180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+ d,y+ d,0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 m1.setColor(c); //m1 の色を赤色に指定 int x = 200; f.add(m); int y = 200; f.add(m1); m.fd(d); int d = 100; m1.fd(d); m.lt(90); と同じ m1.lt(90); int x; //整数をしまう変数xを宣言 d = d / 2; //d の値を d/2 に変更 x = 200; //xに200をしまう m.fd(d); m1.fd(d); と同じ } 21 計算機プログラミングI (増原) 2003年度 引数つきのコンストラクタ public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; } Turtle m = new Turtle(x,y,180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+ d,y+ d,0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 m1.setColor(c); //m1 の色を赤色に指定 意味: Turtleオブジェクトを作る f.add(m); f.add(m1); (コンストラクタ呼出し) m.fd(d); “x,y,180” ~ 引数: (この場合) 座標と向き m1.fd(d); m.lt(90); • コンストラクタ・メソッドに m1.lt(90); どんなものがあるか? d = d / 2; //d の値を d/2 に変更 m.fd(d); どんな意味か? ― API m1.fd(d); • new Turtle() と違う? ― オーバーロード } 22 計算機プログラミングI (増原) 2003年度 パッケージ: クラスの分類 public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; Turtle m = new Turtle(x,y,180); Turtle m1 = new Turtle(x+ d,y+ d,0); //引数のあるコンストラクタ呼び出し java.awt.Color c = new java.awt.Color(255,0,0); } m1.setColor(c); f.add(m); f.add(m1); m.fd(d); m1.fd(d); m.lt(90); m1.lt(90); d = d / 2; m.fd(d); m1.fd(d); } //赤色オブジェクトを作成 //m1 の色を赤色に指定 //d の値を d/2 に変更 23 計算機プログラミングI (増原) 2003年度 パッケージ: クラスの分類 public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; Turtle m = new Turtle(x,y,180); Turtle m1 = new Turtle(x+ d,y+ d,0); “java.awtパッケージの中にある Colorクラス” //引数のあるコンストラクタ呼び出し java.awt.Color c = new java.awt.Color(255,0,0); } m1.setColor(c); f.add(m); f.add(m1); • m.fd(d); m1.fd(d); • m.lt(90); m1.lt(90); d = d / 2; • m.fd(d); m1.fd(d); } //赤色オブジェクトを作成 //m1 の色を赤色に指定 パッケージ: いくつかのクラスをまとめたもの java.awt: Java言語標準ライブラリの abstract window toolkitパッケージ 名前が重ならない工夫//d の値を d/2 に変更 24 計算機プログラミングI (増原) 2003年度 式 public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; Turtle m = new Turtle(x, y, 180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+d, y+d, 0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 } m1.setColor(c); f.add(m); f.add(m1); m.fd(d); m1.fd(d); m.lt(90); m1.lt(90); d = d / 2; m.fd(d); m1.fd(d); } //m1 の色を赤色に指定 //d の値を d/2 に変更 25 計算機プログラミングI (増原) 2003年度 式 public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; Turtle m = new Turtle(x, y, 180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+d, y+d, 0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 } m1.setColor(c); f.add(m); f.add(m1); m.fd(d); m1.fd(d); m.lt(90); m1.lt(90); d = d / 2; m.fd(d); m1.fd(d); } //m1 の色を赤色に指定 式: 値を表わす単位 • 数値は式 • 変数は式 • “new クラス名(式, //d 式, の値を ...)” は式 d/2 に変更 • “式 + 式” は式 • etc. 計算機プログラミングI (増原) 2003年度 26 式 数式だけが式ではない public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; Turtle m = new Turtle(x, y, 180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+d, y+d, 0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 } m1.setColor(c); f.add(m); f.add(m1); m.fd(d); m1.fd(d); m.lt(90); m1.lt(90); d = d / 2; m.fd(d); m1.fd(d); } //m1 の色を赤色に指定 式: 値を表わす単位 • 数値は式 • 変数は式 • “new クラス名(式, //d 式, の値を ...)” は式 d/2 に変更 • “式 + 式” は式 • etc. 計算機プログラミングI (増原) 2003年度 27 式 public class T22 { public static void main(String[] args){ 演算子: TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; +, -, *, /, %, &, |, ... Turtle m = new Turtle(x, y, 180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+d, y+d, 0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 } m1.setColor(c); f.add(m); f.add(m1); m.fd(d); m1.fd(d); m.lt(90); m1.lt(90); d = d / 2; m.fd(d); m1.fd(d); } //m1 の色を赤色に指定 式: 値を表わす単位 • 数値は式 • 変数は式 • “new クラス名(式, //d 式, の値を ...)” は式 d/2 に変更 • “式 + 式” は式 • etc. 計算機プログラミングI (増原) 2003年度 28 式の値 public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; Turtle m = new Turtle(x, y, 180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+d, y+d, 0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 } m1.setColor(c); f.add(m); f.add(m1); m.fd(d); m1.fd(d); m.lt(90); m1.lt(90); d = d / 2; m.fd(d); m1.fd(d); } //m1 の色を赤色に指定 • 数値→ その値 • 変数→ そのときに入っている値 • “new クラス名(式, 式, ...)” → 作られたオブジェクト //d の値を d/2 に変更 • “式 + 式”→ 1. 各式の値を求める 2. 値の和 計算機プログラミングI (増原) 2003年度 29 代入と変数の値 public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; Turtle m = new Turtle(x,y,180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+ d,y+ d,0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 m1.setColor(c); //m1 の色を赤色に指定 f.add(m); f.add(m1); m.fd(d); m1.fd(d); m.lt(90); m1.lt(90); d = d / 2; //d の値を d/2 に変更 m.fd(d); m1.fd(d); } } 30 計算機プログラミングI (増原) 2003年度 代入と変数の値 public class T22 { public static void main(String[] args){ 変数式: その時点で TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; 変数に入っている値 Turtle m = new Turtle(x,y,180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+ d,y+ d,0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 m1.setColor(c); //m1 の色を赤色に指定 f.add(m); f.add(m1); m.fd(d); m1.fd(d); m.lt(90); m1.lt(90); d = d / 2; //d の値を d/2 に変更 m.fd(d); m1.fd(d); } } 31 計算機プログラミングI (増原) 2003年度 代入と変数の値 public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; Turtle m = new Turtle(x,y,180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+ d,y+ d,0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 代入: m1.setColor(c); //m1 の色を赤色に指定 f.add(m); 1. 右辺の値を求め f.add(m1); 2. 変数に値を入れ直す m.fd(d); m1.fd(d); m.lt(90); m1.lt(90); d = d / 2; //d の値を d/2 に変更 m.fd(d); m1.fd(d); } } 32 計算機プログラミングI (増原) 2003年度 代入と変数の値 public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; Turtle m = new Turtle(x,y,180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+ d,y+ d,0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 m1.setColor(c); //m1 の色を赤色に指定 f.add(m); f.add(m1); m.fd(d); m1.fd(d); dは100 m.lt(90); m1.lt(90); d = d / 2; //d の値を d/2 に変更 m.fd(d); m1.fd(d); } } 33 計算機プログラミングI (増原) 2003年度 代入と変数の値 public class T22 { public static void main(String[] args){ TurtleFrame f = new TurtleFrame(); int x = 200, y = 200, d = 100; Turtle m = new Turtle(x,y,180); //引数のあるコンストラクタ呼び出し Turtle m1 = new Turtle(x+ d,y+ d,0); java.awt.Color c = new java.awt.Color(255,0,0); //赤色オブジェクトを作成 m1.setColor(c); //m1 の色を赤色に指定 f.add(m); f.add(m1); m.fd(d); m1.fd(d); dは100 m.lt(90); m1.lt(90); d = d / 2; //d の値を d/2 に変更 m.fd(d); m1.fd(d); dは50 } } 34 計算機プログラミングI (増原) 2003年度 プログラム T23 (2.7) import java.awt.Color; public class T23 { public static void main(String[] args){ int d = 100, x, y, a; TurtleFrame f = new TurtleFrame(); Turtle m = new Turtle(200,300,0); f.add(m); m.fd(d); x = m.getX() y = m.getY(); a = m.getAngle() - 45; Turtle m1 = new Turtle(x, y, a); f.add(m1); m.kameColor = new Color(0,255,255); m.kameScale = m.kameScale * 2; m.rt(45); d = d / 2; m.fd(d); m1.fd(d); } } // m のX 座標とり出し // m のY 座標とり出し // m の角度とり出し //m1 の作成 // m の亀の色を水色変える // m の亀を現在の 2 倍の大きさにする 計算機プログラミングI (増原) 2003年度 35 パッケージ名の略記 import java.awt.Color; public class T23 { public static void main(String[] args){ int d = 100, x, y, a; TurtleFrame f = new TurtleFrame(); Turtle m = new Turtle(200,300,0); f.add(m); m.fd(d); x = m.getX() y = m.getY(); a = m.getAngle() - 45; Turtle m1 = new Turtle(x, y, a); f.add(m1); m.kameColor = new Color(0,255,255); m.kameScale = m.kameScale * 2; m.rt(45); d = d / 2; m.fd(d); m1.fd(d); } } // m のX 座標とり出し // m のY 座標とり出し // m の角度とり出し //m1 の作成 // m の亀の色を水色変える // m の亀を現在の 2 倍の大きさにする 計算機プログラミングI (増原) 2003年度 36 パッケージ名の略記 import java.awt.Color; public class T23 { public static void main(String[] args){ int d = 100, x, y, a; TurtleFrame f = new TurtleFrame(); Turtle m = new Turtle(200,300,0); “ファイル中で f.add(m); m.fd(d); java.awt.Color x = m.getX() y = クラスを略記” m.getY(); a = m.getAngle() - 45; Turtle m1 = new Turtle(x, y, a); f.add(m1); m.kameColor = new Color(0,255,255); m.kameScale = m.kameScale * 2; m.rt(45); d = d / 2; m.fd(d); m1.fd(d); } } // m のX 座標とり出し // m のY 座標とり出し // m の角度とり出し //m1 の作成 // m の亀の色を水色変える // m の亀を現在の 2 倍の大きさにする 計算機プログラミングI (増原) 2003年度 37 パッケージ名の略記 import java.awt.Color; public class T23 { public static void main(String[] args){ public class T23 { .... public static void main(String[] args){ f.add(m1); int d = 100, x, y, a; TurtleFrame f = new TurtleFrame(); m.kameColor = new java.awt.Color(0,255,255); Turtle m = new Turtle(200,300,0); m.kameScale = m.kameScale * 2; // m の “ファイル中で f.add(m); ... m.fd(d); java.awt.Color } x = m.getX() // m のX 座標とり出し } クラスを略記” y = m.getY(); // m のY 座標とり出し a = m.getAngle() - 45; // m の角度とり出し同じ Turtle m1 = new Turtle(x, y, a); //m1 の作成 f.add(m1); m.kameColor = new Color(0,255,255); // m の亀の色を水色変える m.kameScale = m.kameScale * 2; // m の亀を現在の 2 倍の大きさにする m.rt(45); d = d / 2; m.fd(d); m1.fd(d); } 38 } 計算機プログラミングI (増原) 2003年度 パッケージ名の略記 import java.awt.Color; public class T23 { public static void main(String[] args){ public class T23 { .... public static void main(String[] args){ f.add(m1); int d = 100, x, y, a; TurtleFrame f = new TurtleFrame(); m.kameColor = new java.awt.Color(0,255,255); Turtle m = new Turtle(200,300,0); m.kameScale = m.kameScale * 2; // m の “ファイル中で f.add(m); ... m.fd(d); java.awt.Color } x = m.getX() // m のX 座標とり出し } クラスを略記” y = m.getY(); // m のY 座標とり出し a = m.getAngle() - 45; // m の角度とり出し同じ Turtle m1 = new Turtle(x, y, a); //m1 の作成 f.add(m1); m.kameColor = new Color(0,255,255); // m の亀の色を水色変える m.kameScale = m.kameScale * 2; // m の亀を現在の 2 倍の大きさにする m.rt(45); d = d / 2; m.fd(d); import java.awt.*; m1.fd(d); →java.awtパッケージ内の全てのクラスを略記 } 39 } 計算機プログラミングI (増原) 2003年度 値を返すメソッド import java.awt.Color; public class T23 { public static void main(String[] args){ int d = 100, x, y, a; TurtleFrame f = new TurtleFrame(); Turtle m = new Turtle(200,300,0); f.add(m); m.fd(d); x = m.getX(); y = m.getY(); } a = m.getAngle() - 45; Turtle m1 = new Turtle(x, y, a); f.add(m1); m.kameColor = new Color(0,255,255); m.kameScale = m.kameScale * 2; m.rt(45); d = d / 2; m.fd(d); m1.fd(d); } // m のX 座標とり出し // m のY 座標とり出し // m の角度とり出し //m1 の作成 // m の亀の色を水色変える // m の亀を現在の 2 倍の大きさにする 計算機プログラミングI (増原) 2003年度 40 値を返すメソッド import java.awt.Color; public class T23 { public static void main(String[] args){ int d = 100, x, y, a; TurtleFrame f = new TurtleFrame(); Turtle m = new Turtle(200,300,0); f.add(m); m.fd(d); x = m.getX(); y = m.getY(); } a = m.getAngle() - 45; Turtle m1 = new Turtle(x, y, a); f.add(m1); m.kameColor = new Color(0,255,255); m.kameScale = m.kameScale * 2; m.rt(45); d = d / 2; m.fd(d); m1.fd(d); } メソッドの返り値 を使っている // m のX 座標とり出し // m のY 座標とり出し // m の角度とり出し //m1 の作成 // m の亀の色を水色変える // m の亀を現在の 2 倍の大きさにする 計算機プログラミングI (増原) 2003年度 41 値を返すメソッド import java.awt.Color; public class T23 { public static void main(String[] args){ int d = 100, x, y, a; TurtleFrame f = new TurtleFrame(); Turtle m = new Turtle(200,300,0); f.add(m); m.fd(d); x = m.getX(); y = m.getY(); } a = m.getAngle() - 45; Turtle m1 = new Turtle(x, y, a); f.add(m1); m.kameColor = new Color(0,255,255); m.kameScale = m.kameScale * 2; m.rt(45); d = d / 2; m.fd(d); m1.fd(d); } 計算式の中で 使ってもよい // m のX 座標とり出し // m のY 座標とり出し // m の角度とり出し //m1 の作成 // m の亀の色を水色変える // m の亀を現在の 2 倍の大きさにする 計算機プログラミングI (増原) 2003年度 42 値を返すメソッド import java.awt.Color; public class T23 { public static void main(String[] args){ int d = 100, x, y, a; TurtleFrame f = new TurtleFrame(); Turtle m = new Turtle(200,300,0); f.add(m); m.fd(d); x = m.getX(); y = m.getY(); } a = m.getAngle() - 45; Turtle m1 = new Turtle(x, y, a); f.add(m1); m.kameColor = new Color(0,255,255); m.kameScale = m.kameScale * 2; m.rt(45); d Turtle = d / 2; m1 = new Turtle(m.getX(), m.fd(d); と書いても同じ m1.fd(d); } // m のX 座標とり出し // m のY 座標とり出し // m の角度とり出し //m1 の作成 // m の亀の色を水色変える // m の亀を現在の 2 倍の大きさにする m.getY(), m.getAngle() - 45); 計算機プログラミングI (増原) 2003年度 43 フィールド (インスタンス変数) import java.awt.Color; public class T23 { public static void main(String[] args){ int d = 100, x, y, a; TurtleFrame f = new TurtleFrame(); Turtle m = new Turtle(200,300,0); f.add(m); m.fd(d); x = m.getX(); y = m.getY(); a = m.getAngle() - 45; Turtle m1 = new Turtle(x, y, a); f.add(m1); m.kameColor = new Color(0,255,255); m.kameScale = m.kameScale * 2; } m.rt(45); d = d / 2; m.fd(d); m1.fd(d); } // m のX 座標とり出し // m のY 座標とり出し // m の角度とり出し //m1 の作成 // m の亀の色を水色変える // m の亀を現在の 2 倍の大きさにする 44 計算機プログラミングI (増原) 2003年度 フィールド (インスタンス変数) import java.awt.Color; public class T23 { public static void main(String[] args){ int d = 100, x, y, a; TurtleFrame f = new TurtleFrame(); Turtle m = new Turtle(200,300,0); f.add(m); m.fd(d); x = m.getX(); y = m.getY(); a = m.getAngle() - 45; Turtle m1 = new Turtle(x, y, a); f.add(m1); m.kameColor = new Color(0,255,255); m.kameScale = m.kameScale * 2; } m.rt(45); d = d / 2; m.fd(d); m1.fd(d); } 代入して値を 変更できる // m のX 座標とり出し // m のY 座標とり出し // m の角度とり出し //m1 の作成 // m の亀の色を水色変える // m の亀を現在の 2 倍の大きさにする 45 計算機プログラミングI (増原) 2003年度 フィールド (インスタンス変数) import java.awt.Color; public class T23 { public static void main(String[] args){ int d = 100, x, y, a; TurtleFrame f = new TurtleFrame(); Turtle m = new Turtle(200,300,0); f.add(m); m.fd(d); x = m.getX(); y = m.getY(); a = m.getAngle() - 45; Turtle m1 = new Turtle(x, y, a); f.add(m1); m.kameColor = new Color(0,255,255); m.kameScale = m.kameScale * 2; } m.rt(45); d = d / 2; m.fd(d); m1.fd(d); } // m のX 座標とり出し // m のY 座標とり出し // m の角度とり出し //m1 の作成 // m の亀の色を水色変える // m の亀を現在の 2 倍の大きさにする 計算式の中で 使ってもよい 46 計算機プログラミングI (増原) 2003年度 オブジェクトとは? (2.8) • オブジェクト: 状態と動作をまとめた値 –状態 ― インスタンス変数 例: タートルはインスタンス変数として 座標・角度・フレームを持つ –動作 ― メソッド 例: Turtleクラスのfd(x)メソッドは • • • • フレームから絵を消す 角度を使って座標を計算 フレームに絵を描く 移動距離を返す • クラス x座標=230 y座標=170 フレーム= –どんなインスタンス変数・メソッドを持つかを定義 47 計算機プログラミングI (増原) 2003年度
© Copyright 2024 ExpyDoc