基本知識トップに戻る    印刷する

クラスとオブジェクト

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

オブジェクト指向プログラミングとは、プログラムを作る手法のひとつで、Java言語やC++はその手法を使ったプログラミング言語です。JavaScript同様にオブジェクト指向言語です。

オブジェクトとは「物」のことです。現実世界にはいろいろな物があります。例えば、鉛筆や携帯電話など、物はなんらかの働きをもっています。「働き」の面から物をみると、物には「状態」と「ふるまい」があると言えます。例えば、鉛筆ならその色や太さが状態であり、紙にこすると線が引けるというのがふるまいです。「状態」と「ふるまい」をもって機能する「物」を、プログラムを作成する場面に持ち込んだのが、オブジェクト指向です。

プログラムを構成する部品にも果たすべき働き(機能)があります。ある機能の「物」を作るのと同じように、プログラムの中に「状態」と「ふるまい」をもったオブジェクトを作り、目的の機能を果たさせようという考え方です。例えば、ペイントツールの「線を引く」という機能を実現するのに、鉛筆オブジェクトを作り、色や太さなどの「状態」とマウスの移動に応じて線を引くという「ふるまい」をもたせ、機能を実現するのです。プログラムの中では、「状態」は「プロパティ」で表し、「ふるまい」は「メソッド」で記述します。
JavaScriptの新しい標準ECMAScript2015で、オブジェクト指向に関係する文法が変更されました。新しいクラスを定義するためにclass構文が導入され、Java言語を始めとする別のオブジェクト指向言語と似た記述方法となりました。

クラスからオブジェクトを作る

机の上にある1本の鉛筆は、現実世界で「鉛筆」と識別されるものひとつの”実物”です。実物の鉛筆は色や太さ、書き味を決める設計図から作られます。

オブジェクトの考えをプログラム作成に持ち込む際にも、同様にオブジェクトの設計図を考え、それをクラスと呼びます。クラスは、オブジェクトのもつ状態やふるまいを変数やメソッドとして定義した、設計図のようなものです。「鉛筆とは」という設計図がクラスで、実物の鉛筆がオブジェクトです。

プログラムの世界では、クラスはプロパティやメソッドを定義した「鋳型」であり、実際の仕事をするのはオブジェクトです。newというキーワード(演算子)を使って、クラスからオブジェクトを作ります。
new クラス名(データ, データ…) 
newの後ろに指定されるクラス名( )は、コンストラクタと呼ばれる特別なメソッドです。括弧の中に指定するデータは,オブジェクトを作るときに使う特別な値で、これを引数と呼びます。引数としてどのような値を指定するかは、クラスの定義の中で決められています。

new演算子が作ったオブジェクトは変数に格納しておきます。こうすることで、後でオブジェクトのプロパティの値を調べたり、オブジェクトのメソッドを実行したりできます。次の例はAHamonクラスのオブジェクトを生成し、変数hamonに代入しています。
  const hamon = new AHamon(200);
AHamonは、「クラスを作る」のセクションに出てくるクラスで、ランダムな位置で波紋が広がるように円を徐々に大きくなる動きをします。このようにオブジェクトの生成は、new演算子に続いて、コンストラクタを指定します。

メソッドの実行

オブジェクトに対して、メソッドの実行を指示することで、プログラムの処理が進みます。
メソッドを実行するには、処理を行うオブジェクトを表す式(一般にはオブジェクトを入れた変数の名前)を書き、ピリオドに続いて、メソッド名を記述し、後ろに( )を書きます。
オブジェクト.実行するメソッドの名前(実行に必要な値)
        ↓                ↓
     AHamonオブジェクト.display();
AHamonクラスにdisplay()メソッドが定義されている場合、それを実行するには、上のように書きます。
メソッド名の後ろに括弧( )の中には、メソッドがその仕事をするのに必要なデータ(この値も引数あるいはパラメータと呼びます)を指定します。display()メソッドは引数が必要ないので、( )だけを書きます。 

プロパティの値の参照

オブジェクトのプロパティに保存されたデータを使う(参照する)には、オブジェクトを表す式(一般にはオブジェクトを入れた変数の名前)を書き、ピリオドに続いて、変数名(フィールド名)を記述します。
オブジェクト.変数の名前
      ↓            ↓
 AHamonオブジェクト.max
AHamonクラスにはmaxというプロパティがあり、そこに波紋の最大値が格納されています。
copyright © info