オブジェクトについて
1.3 オブジェクトについて
PHPはクラスを用意しなくても動作するプログラミング言語なので、これまでのPHP学習でクラスを意識したことはないと思います。しかし、前節で学習したオブジェクトには、必ず元となるクラスが必要になります。この節ではクラスの概要について説明していきます。
1.3.1 クラスとは
これまでに学習してきたPHPコードには、クラスは全く使われていませんが、変数とメソッドは何度も登場したと思います。例えば1個のパソコンについて処理を組み立てたいと考えた時は、取り扱いたい情報(OSやCPU、メモリ)を変数に、行いたい処理(起動する、終了させる)を関数として記述していたでしょう。
もし、これが2個のパソコンについて情報を管理し処理を行うように仕様変更が入った時は、どうしましょう。これまでであれば、同じような変数をもう1個ずつ定義し直すことでデータを管理すれば良かったかもしれませんが、扱いたいパソコンの個数が増えるたびに定義する変数が2倍3倍に増えていくとしたら、大変効率が悪く、保守することが大変なプログラムになってしまうでしょう。
そこでクラスの出番となります。クラスは、必要な変数や関数をセットにして管理するための雛形です。下図で示すように、クラスに属性や操作を持たせることによって、オブジェクトを生成した時にそれらの属性や操作を持たせることができます。
図 1.3.1: オブジェクトの雛形になるクラス
逆に言えば、オブジェクトに持たせたい属性や操作は、クラスというプログラムの形で記述すれば良いことになります。
ポイント
- オブジェクトの属性と操作をプログラムで表す場合、クラスに変数とメソッドを定義すること。
1.3.2 モデル化とは
前項でパソコンを例に挙げましたが、実際にそのクラスを作成する場合のことを考えて見ます。パソコンが持っている属性と操作の全てをプログラムにすることはできないので、必要な部分のみを抽出してクラスを記述します。
ここでいう「必要な部分」というのは、パソコンをどのように扱いたいか?によって大きく変わってきます。例えばパソコンを販売する商品として扱いたい場合には、価格や色、対応のオプション部品などが必要になります。また、製品として見れば、各種機能や性能などが必要になります。
このように、必要な部分を抽出する作業のことをモデル化と呼びます。
この項では、パソコンは以下の属性と操作を持つとしてモデル化し説明を行っていきます。
表 1.3.1 パソコンオブジェクトのモデル化例
これらの属性と操作をクラスに設定します。属性は変数、操作はメソッドで記述しますので、上記の表のような属性と操作を持つようなクラスを作成する際には「OS」、「CPU」、「メモリ」を何らかのデータ型の変数として記述し、「起動」、「終了」、「音を鳴らす」という操作をメソッドとして記述する形になります。
上記の表の属性と操作を持たせたクラスを図で示すと、以下のようなイメージになります。
図 1.3.2: コンピュータクラスのモデルイメージ
このような形で、対象となるものをモデル化し、属性や操作を抽出したものがクラスになります。