JavaScriptにおけるクラスとオブジェクト入門
これからJavaScriptにおけるオブジェクト指向プログラミング(OOP)を学びます。 実際の例から始めて、それをJavaScriptに当てはめてみましょう。
例として自動車を考えてみます。 自動車には車輪、色、ボディタイプ、エンジン排気量などがあります。 また、ドライバーは自動車に命令を出すことができます:走る、止まる、右に曲がる、左に曲がるなどです。
これは、共通の特性(すべてに車輪があり、すべてに命令を出せる)を持つ自動車というクラスが存在すると言えます。
路上に止まっている具体的な一台の自動車は、このクラスの一員、言い換えればこのクラスのオブジェクトです。 このクラスのすべてのオブジェクトは、車輪の数、色、ボディタイプといったプロパティと、 走る、止まる、右に曲がる、左に曲がるといったメソッドを持っています。
言い換えれば、クラス自体は設計図であり、工場がその設計図に基づいて自動車を製造します。 オブジェクトは、その設計図に基づいて作られた自動車そのものです。
JavaScriptでは、クラスはキーワードclassとそれに続くクラス名を使用して作成されます。
クラスCarを作成してみましょう:
class Car {
// ここにコード、つまりJavaScriptによる自動車の設計図を書く
}
次に、この設計図に基づいて作られる全ての自動車が、 色と燃料の量というプロパティを持つように指定しましょう。
そのために、クラス内にプロパティcolorとプロパティfuelを書きます:
class Car {
color; // 自動車の色
fuel; // 燃料の量
}
次に、このクラスのメソッドを作成しましょう。
JavaScriptでは、メソッドは通常の関数に似ていますが、キーワードfunctionを使わずに宣言します。
先ほど述べたように、この自動車は走ることができ、曲がることができ、止まることができます。 クラス内に対応するメソッドを作成しましょう:
class Car {
color; // 自動車の色
fuel; // 燃料の量
// 走る命令:
go() {
// 何らかのJavaScriptコード
}
// 曲がる命令:
turn() {
// 何らかのJavaScriptコード
}
// 止まる命令:
stop() {
// 何らかのJavaScriptコード
}
}
これで自動車の設計図が完成しました。 次に、工場に行き、このクラスのオブジェクト(具体的な自動車)を作る必要があります。
JavaScriptでは、これはキーワードnewの後にクラス名を書くことで行われます:
new Car; // 工場に自動車を作るよう命令する
しかし、単にクラスのオブジェクトを作成しただけでは何も起こりません (これは、例えば配列を宣言してもどこにも保存しないのと同じです)。 このオブジェクトを保持する変数が必要です。
この変数をmyCarと呼ぶことにして、作成したオブジェクトを代入しましょう:
let myCar = new Car;
自動車が作成されたら、そのプロパティにアクセスできます。 プロパティへのアクセスはドット(.)を使って行います。 オブジェクトのプロパティを設定してみましょう:
let myCar = new Car; // 工場に自動車を作るよう命令する
myCar.color = 'red'; // 赤色に塗装する
myCar.fuel = 50; // 燃料を補給する
これで自動車が作成され、塗装され、燃料が補給されました。 これで、この自動車のメソッドを通して命令を出すことができます。
メソッドへのアクセスもドットを使って行われますが、 プロパティとは異なり、メソッド名の後に丸括弧を書きます。 オブジェクトに命令を出してみましょう:
myCar.go();
myCar.turn();
myCar.stop();