10章 オブジェクト

オブジェクト指向プログラミング

フィールドとメソッド

オブジェクト指向プログラミングとは、もの(オブジェクト)といった単位によって構成されるプログラムです。
オブジェクト指向プログラミングでは変数をフィールド(もしくはインスタンス変数)、関数をメソッドと呼びます。
人で例えると「歩く」、「食べる」といった機能を持ったオブジェクトです。これらはメソッドであり「体重」、「身長」といったフィールドを持ちます。

クラス
クラスとはオブジェクトにおいての雛形のようなものです。
人で例えるとクラスはDNAなどの人としての雛形、オブジェクトは実際の人そのものです。
1つのクラスからできていても、個性豊かな様々な人が存在するのと同じことです。この実際の人間のことをインスタンス(実態)といいます。
クラスの定義は以下のようにします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class JitterBug{

float x,y;
int diameter;
float speed = 2.5;

//初期化用のメソッド(コンストラクタ)
JitterBug(float tempX, float tempY, int tempDiameter){
//x,y,diameterの初期値はインスタンスの引数
x = tempX;
y = tempY;
diameter = tempDiameter;
}

void move(){
x += random(-speed, speed);
y += random(-speed, speed);
}

void display() {
ellipse(x,y,diameter,diameter);
}

}

最初のステップはクラスを定義します。(1行目)クラスを作成する場合はクラス名の最初を大文字にするのは慣例であり、わかりやすくなります。

2つ目のステップはフィールドの追加です。(3~5行目)
今回の例ではx,y,diameterのフィールドは初期化用のメソッド(コンストラクタ)内で代入するようにしています。もし、オブジェクトごとに値が違わない場合、型の宣言と同時に初期値をセットするのが良いです。

3つ目のステップではコンストラクタの追加です。コンストラクタはクラスと同じ名前でオブジェクトが作られるときにフィールドの初期値を代入する役目を持っています。
今回の例では、コンストラクタ中に一時的に存在する変数に代入するため、わかりやすいようtempをつけています。(7~13行目)
インスタンスを生成するには以下のような構文で生成する事ができます。
例、クラス名 インスタンスの名前 = new クラスの名前(コンストラクタに入れる引数);

最後のステップではメソッドを追加します。クラスの中という違いはあれど、関数を書くのに似ています。(15~22行目)