第12回 クラスの利用TypeScriptで学ぶJavaScript入門(2/6 ページ)

» 2015年07月16日 05時00分 公開
[羽山博]

クラスからインスタンスを作成する

 クラスは、いわばひな型のようなものなので、実際のデータを取り扱うにはインスタンスを作成する必要がある。インスタンスとは「実体」とでもいうべきものである。猫クラスの例でいえば、classキーワードを使って定義したクラスは、一般的な猫、つまり、猫ってこういうものだ、ということを表す。従って、個々の猫を表すには、クラスからインスタンス(実体)を作る必要があるというわけだ。

 インスタンスの作成にはnew演算子を使う。クラスの定義も併せて書いておこう。

class Cat {
  length: number;
  weight: number;
}

var myCat = new Cat();

Catクラスのインスタンスの作成

 newの後に「クラス名()」と書けば新しいインスタンスが作成できる。インスタンスの参照が返されるのでそれを変数myCatに代入する。従って、変数myCatを利用すれば、作成したインスタンスが利用できる。

図3 インスタンス作成のイメージ 図3 インスタンス作成のイメージ
(1)new演算子を使って、クラスを基にインスタンスを作る。new演算子は作成されたインスタンスの参照を返す。(2)インスタンスの参照を変数myCatに代入する。それにより、myCatを利用すればCatクラスのインスタンスが利用できるようになる。

 上の図の意味を追いかけるときには、特に矢印の意味に注意してほしい。(1)の矢印は、インスタンスの作成といった、いわば「作用」を表す矢印である。(2)の矢印は代入なので、データの流れを表す矢印となる。参照とは、データがどこにあるかという情報といった感覚で捉えておけばいい。それを変数myCatに代入するわけなので、変数myCatを見ればインスタンスがどこにあるかが分かる。つまり、変数myCatを使ってインスタンスを取り扱えるというわけだ。赤い矢印はそういった「参照の方向」を表している。一般に、参照を表すときには、(2)の矢印は省略してしまい、赤で示した矢印だけを書く。

クラスのメンバーを利用する

 「.」で区切ってメンバーを書けば、クラスのメンバーが利用できる。myCatで参照される猫に身長と体重を設定してみよう。ここで、ようやく動くプログラムにたどり着いた。以下の例を実行して確認してみてほしい。

class Cat {    // (1)
  length: number;
  weight: number;
}

var myCat = new Cat();  // (2)
myCat.length = 30.5;  // (3)
myCat.weight = 2.5;  // (4)
alert("体長は" + myCat.length + "cm、体重は" + myCat.weight + "kgです");  // (5)
window.close();


 (1)はクラスの定義で、(2)はインスタンスの作成である。これはすでに見たので、おさらいということになる。(3)では、インスタンスを参照する変数myCatとlengthプロパティを「.」で区切って記述して、プロパティを利用できるようにしている。

 ここではlengthプロパティに30.5という値を代入する。当然のことながら(1)で定義されたデータ型と異なる値を代入しようとするとエラーになる。(4)でも同様にweightプロパティに2.5という値を代入する。このような書き方はすでに何度も使っているので、違和感はないだろう。最後に、(5)でそれらの値を表示した後、ウィンドウを閉じる。

 実行例も示しておこう。

図4 初めてのクラスを使ったプログラムの実行例 図4 初めてのクラスを使ったプログラムの実行例
(個別の)猫の体長と体重を設定し、その値を表示するだけの簡単なプログラムを実行してみた結果。

 このように、TypeScriptではクラスを定義して、そのオブジェクトのひな型を作ることができる。続いて、クラスの定義から新しいインスタンスを作る、というわけだ。JavaやC#などのプログラミング言語に慣れている人にとっては、非常に分かりやすい書き方になっている。

 では、これ以降、この「初めてのクラス」に少しずつ機能を付け加えていきながら、クラスのさらなる機能を見ていくことにしよう。まずは、メソッドの定義から始めよう。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。