オブジェクト指向を使う上で欠かせないのが、オブジェクトです。
ですが、オブジェクト指向の初心者にとってオブジェクトってイメージしづらいですよね。
そこで今回は、
・そもそもオブジェクトって何?
・クラス、インスタンス、オブジェクトの違いは?
をご紹介します。
オブジェクト指向初心者がつまづきやすいポイントを分かりやすく解説します。
オブジェクトっていまいちよく分からない方は、ぜひ最後まで読んで理解を深めてくださいね。
目次
オブジェクトとは?
オブジェクトの解説をする前に、まずはオブジェクト指向についておさらいをしましょう。
オブジェクト指向とは、
変数(プロパティ)と関数(メソッド)を持ったクラスを作るプログラミングの手法
です。
「クラス」はいわゆる「設計図」であり、その設計図をもとに「もの」を作ります。
ここで作られる「もの」が「オブジェクト」となります。
つまり、
オブジェクトとは、機能とデータを持ったもの
となります。
クラスには何が書かれているのか
先ほど、クラスとは「設計図」だと説明しました。
では、クラスには何が書かれているのでしょうか?
プロパティとは、オブジェクトが持つデータや値のこと
まず1つ目は、「プロパティ」です。
プロパティとは、そのオブジェクトが持っているデータや値のことです。
例えば車のオブジェクトで言えば、
- ・色
- ・形
- ・値段 など
これらがプロパティとなります。
メソッドとは、オブジェクトが持つ機能のこと
もう1つは、「メソッド」です。
メソッドとは、そのオブジェクトが持つ機能のことです。
先ほどの車の例でいうと、
- ・前進する
- ・止まる
- ・バックする など
これらがメソッドとなります。
クラスを定義する
では、実際にクラスを定義してみましょう。
先ほどの車の例で書いてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class Car{ // Carクラス // プロパティ public $color; // 色 public $price; // 値段 // メソッド public function start(){ // 発進 echo '発進します'; } public function stop(){ // 停止 echo '停止します'; } } |
プロパティの定義は public $変数名;
メソッドの定義は public function メソッド名(){ }
で行います。
インスタンスを作る
車のクラス=設計図 ができたので、次は個々の車を作ってみましょう。
クラスを元に作るオブジェクトを、「インスタンス」と呼びます。
インスタンスを作るには、new演算子を使います。
書き方は new クラス名(); です。
1 2 |
$car1 = new Car(); $car2 = new Car(); |
これで2台の車ができました。
しかし、このままでは車の色や値段が分かりません。
次は、色と値段を設定したいと思います。
インスタンスのプロパティにアクセスするには、->演算子を使います。
書き方は $インスタンス名 -> プロパティ名 です。
1 2 3 4 5 |
$car1 -> color = 'red'; $car1 -> price = '1000'; $car2 -> color = 'blue'; $car2 -> price = '2000'; |
これで車の色と値段を設定できました。
次に、車を走らせてみましょう。
メソッドを実行するのも、プロパティと同じく->演算子を使います。
書き方は $インスタンス名 -> メソッド名() です。
1 2 3 |
$car1 -> start(); //発進します と出力される |
クラス、インスタンス、オブジェクトの関係
設計図から作られるものが「インスタンス」ということが分かりました。
しかし最初に、「オブジェクト」はクラスから作られるものであると説明しました。
では、この「インスタンス」と「オブジェクト」は何が違うのでしょうか?
今度は人間で考えてみましょう。
プロパティとして名前、メソッドとしてあいさつを設定します。
1 2 3 4 5 6 7 |
class human{ public $name; // 名前 public function hallo(){ // あいさつ echo 'おはよう'; } } |
これで人のクラスができました。
このクラス(設計図)を元に、田中さんと木村さんを登場させてみましょう。
1 2 3 4 5 6 7 |
$tanaka = new Human(); $tanaka -> name = "田中"; $kimura = new Human(); $kimura -> name = "木村"; |
これで、田中さんと木村さんが出来ました。
この時、田中さんと木村さんは「インスタンス」であり、「オブジェクト」です。
よく分からないですよね?もう少し詳しく見てみましょう。
オブジェクトとは、「もの」であり「概念」です。
今回の例でいうと、「人」という概念がオブジェクトになります。
さらにいうと、クラスもオブジェクトの中に含まれます。
一方インスタンスとは、クラスから作られた「個別のもの」。
今回の例では、田中さんや木村さんといった「個人」を示すものです。
もう少し例を出すと、
- ・iPhoneは「スマホ」クラスのインスタンスであり、「スマホ」のオブジェクト
- ・サンマは「魚」クラスのインスタンスであり、「魚」のオブジェクト
このように、オブジェクトとは広い概念を示すものとなります。
まとめ
今回はオブジェクトについて、
・オブジェクトとは何か?
・クラス、インスタンスの作り方
・クラス、インスタンス、オブジェクトの違い
を解説しました。
オブジェクトやインスタンスの違いを理解するのは難しいですが、しっかりと理解できるようにしておきましょう。