#はじめに
この記事はphpにおけるオブジェクト指向を簡単にまとめたものです。
オブジェクト指向ってなんぞや?
phpで開発を行っているがメソッドとかクラスとはよう分らんって人向けの記事で、新卒2年目のペーペーエンジニアが書いています。
#そもそもオブジェクト指向って?
オブジェクト指向とは、コンピュータプログラムの設計や実装についての考え方の一つで、互いに密接に関連するデータと手続き(処理手順)をオブジェクト(object)と呼ばれる一つのまとまりとして定義し、様々なオブジェクトを組み合わせて関連性や相互作用を記述していくことによりシステム全体を構築していく手法。
上記説明で分からない場合は、
「各処理を分割、共通化し管理する。そして複数の処理を組み合わせてシステムを構築しよう」
と考えてください。たぶん合ってます。たぶん。。
念のため上記をphpで説明するとこんな感じ。
まずはオブジェクト指向ではない書き方。
<?php
class Controller_Tanaka
{
public function action_name()
{
echo 'Tanaka';
}
public function action_occupation()
{
ecjp 'teacher':
}
public function action_walk()
{
}
public function action_eat()
{
}
<?php
class Controller_Yamada
{
public function action_name()
{
echo 'Yamada';
}
public function action_occupation()
{
ecjp 'president':
}
public function action_walk()
{
}
public function action_eat()
{
}
うむ。
class_Tanakaとclass_Yamadaでおんなじ様なメソッドが複数存在していますね。
これを書き直すとこう。
<?php
class Controller_Human
{
public $name;
public $occupation;
public function action_name($name)
{
$human = new Human();
$human->name = $name
echo $human->name;
}
public function action_occupation($occupation)
{
$human = new Human();
$human->occupation = $occupation
echo $human->occupation;
}
public function action_walk()
{
}
public function action_eat()
{
}
人間の行動(メソッド)、特徴(プロパティ)を共通化、分割し取り扱っています。
多分これがオブジェクト指向。間違っていたらご指摘ください。。
#以下用語解説
##Class
大雑把に言うと「関数(メソッド)と変数(プロパティ)の塊」です。
「プログラムの処理をまとめた設計図」だと考えれば分かりやすいかも知れません。
上記の例だともちろんこれ。
class Controller_Human
{ }
##メソッド
メソッドとはクラスが持っている処理のことです。上述の例ですとこいつらですね。
public function action_name($name)
{
$human = new Human();
$human->name = $name
echo $human->name;
}
public function action_occupation($occupation)
{
$human = new Human();
$human->occupation = $occupation
echo $human->occupation;
}
public function action_walk()
{
}
public function action_eat()
{
}
##プロパティ
クラスが持っているデータのことです。
上記の例だとこいつら。
public $name;
public $occupation;
ちなみに、メソッドと関数、プロパティと変数は基本的には同じものと考えてよいです。
呼び方が違いますが同じ働きをします。
ほんとややこしい子。。
##アクセス修飾子
メソッドとプロパティの前についているpublic。
こいつはどこからそのメソッドやプロパティにアクセスできるかを指定するもの。
public クラス内、クラス外のどこからでもアクセス可能
private 同じクラス内からのみアクセス可能
protected 同じクラス、及び子クラスからアクセス可能
とりあえず全部publicで書いてました気を付けます。。
##カプセル化
オブジェクトが持つデータや処理のうち、別のオブジェクトから直接利用される必要のないものを隠すことを言い、利用する場合は外部から操作するために作られた処理を設けることを言う。
##継承
特定のクラスを他のクラスに引き継いで、同じメソッドを使えるようにしちゃいましょう、的なやつです。
例えば上記で作成したClass_Humanも他のクラスに継承することで同じメソッドが使えるようになります。
##おわりに
とりあえず30分で調べた知識を書き殴りました。
間違っている部分等あればご一報ください。
修正するかは分かりません。
疲れたマン。