クラスの利用方法について

2.2 クラスの利用方法について

 前節ではクラスの記述方法について学習しました。これまで何度も説明を行ってきましたが、「クラスはオブジェクトを生成する雛形」になります。本節ではクラスを利用してオブジェクトを生成する方法について、実際のソースコードを記述し学習していきましょう。

2.2.1 オブジェクト化の方法

 クラスからオブジェクトを生成する(オブジェクト化)には以下の手順が必要です。

① オブジェクトを扱う変数を宣言します。
② オブジェクトを作成します。
 1)オブジェクト実体をメモリに確保します。(オブジェクトを作成する処理を行うと自動で行われます。)
 2)オブジェクトを扱う変数にオブジェクト実体の場所情報(メモリ領域の住所)を代入します。
③ オブジェクトを作成した後は、①の変数を用いてオブジェクトを扱っていきます。

 以下のComputerクラスが定義されていることを前提条件として、上記1)と2)について説明を行っていきます。

解説
 このComputerクラスはフィールド変数を「$os、$cpu、$memory」の3つ定義しています。これらの変数の左側に書かれてるpublicはアクセス修飾子です。詳細は3章で解説するので、今はそういうものを記述しておくのだと覚えてください。
 また、メソッドは戻り値、引数ともに無しの「start()、finisih()、beep()」の3つ定義しています。
 よって、Computerクラスはフィールド変数3つとメソッド3つのメンバを持つクラスとなっています。
 オブジェクト化の手順①および②を行う為の基本構文を下記に示します。

 Computerクラスのオブジェクトをプログラム上で作成するには、new演算子を使用します。new演算子の後には「クラス名();」と記述すればオブジェクトの生成が行えます。
 また、ただオブジェクトを生成しただけだとそれ以降の行でこのオブジェクトを取り扱えないので、オブジェクトを生成した後は、変数に代入する必要があります。

 上記の例では、「newを使った結果を変数$comに代入する」という処理を行っています。この代入処理を行うと変数$comを使って、new演算子で作成したComputerクラスのオブジェクトを扱うことができるようになります。このことを、変数$comはComputerクラスのオブジェクトをさすといいます。

図 2.2.1: オブジェクトを扱う変数とオブジェクトの作成

ポイント

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

  • オブジェクト作成方法は「new演算子」を用いて、雛形であるクラスからオブジェクトを生成する。
  • オブジェクトを利用する場合は、変数に代入して使用する。

 次の項にて実際のソースコードでクラスからオブジェクトを生成するサンプルを紹介します。

2.2.2 オブジェクトを作成するプログラム

 定義済みのクラスよりオブジェクトを生成し、そのオブジェクト情報を表示します。
 プログラムを通じて、オブジェクトの生成方法について学習しましょう。

ソース・フォルダー  :myproj_framework_basic/ch02
ファイル名      :makeObject.php
アクセスURL    :http://localhost/myproj_framework_basic/ch02/makeObject.php

➢ makeObject.php

<?php
    // クラスの定義作成
    class Computer1{
        public $os;
        public $memory;
    }

    // Computer1クラスのオブジェクト生成
    $com = new Computer1();
?>
<html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>オブジェクト生成</title>
    </head>
    <body>
    	<?php
            echo print_r($com); // オブジェクトの内容を出力
    	?>
    </body>
</html>
	

実行結果

解説

 3~6行目でフィールド変数のみを持つクラス「Computer1」が定義されています。
 9行でnew演算子を利用してComputer1クラスのオブジェクトの生成を行い、変数$comに代入しています。

 18行目の処理でクラス変数$comをブラウザに出力し、オブジェクトの情報を表示しています。
print_r()関数を利用して画面に表示された文字列「Computer1 Object ( [os] => [memory] => ) 1」が、オブジェクト実体の情報になります。
   18:echo print_r($com); // オブジェクトの内容を出力

ポイント
  • オブジェクトを扱う変数にはオブジェクト実体データではなく、オブジェクトの場所情報が格納されている。

 クラスを利用しオブジェクトを生成する方法は学習できたと思います。ではオブジェクト内にあるメンバ(変数やメソッド)にアクセスするのはどうすれば良いか、次の節にて説明していきます。


NEXT>> 2.3 メンバへのアクセス方法について