変数名

計算機プログラミング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年度