Contenu connexe Similaire à 06 オブジェクト指向の基礎 Similaire à 06 オブジェクト指向の基礎 (20) 06 オブジェクト指向の基礎2. 2 オブジェクト指向とは?
オブジェクト指向とは、プログラミングのための オブジェクト指向プログラミングではないルー
ルールです。
ルに手続き型プログラミングがあります。
プログラムの固まりをオブジェクト(物)ととら これはみなさんがいままでやっていたプログラ
え、お互いの相互作用がプログラム全体の動きに ミングで、一連の処理を順番に行っていきます。
なります。
<?php
オブジェクト
//アドレスを定義
$to
=
“hoge@example.com”;
//件名を定義
オブジェクト $sub
=
“This
is
a
test”;
//本文を定義
$body
=
“Hello!”;
//メールを送信
if(mail($to,
$sub,
$body)){
echo
“メール送信成功”;
}else{
オブジェクト
echo
“メール送信失敗”;
}
オブジェクト
?>
10.4.18 (C) 株式会社破滅派
3. 3 オブジェクト指向を車に例えると…(1)
オブジェクト指向はそもそも機械工学の世界から誕生しました。
あらゆるものをオブジェクト(モノ)と考えます。
オブジェクト:ハン
ドル
オブジェクト:車
回すことでタイヤの
移動を便利にしてくれる乗 オブジェクト:タ
向きを変更する
り物 イヤ
エンジンに伴って
回転する
オブジェクト:フレーム
車に必要なオブジェクトすべて
を納めることができる
オブジェクト:アクセル
車が動くのは各部品(オブ 踏み込むことでエンジン
を回転させる
ジェクト)が相互作用によっ
て動いているからです。
10.4.18 (C) 株式会社破滅派
4. 4 オブジェクト指向を車に例えると…(2)
オブジェクト指向においては、一つ一つのオブジェクトの機能はそのオブジェクト自
身だけが知っています。外部のオブジェクトはその詳細を知らなくても利用すること
ができます。これをオブジェクトの「隠蔽性」または「カプセル化」といいます。
自動車期間工は自動車を作ります。
しかし、エンジンは作りませんし、エン
ジンがどのような仕組みで動いているか
も知る必要がありません。
タイヤのゴムをどうやって確保するかも
知る必要がありません。
それでも車を完成させることができます。
大規模で複雑な物を作るのに、オブジェクト指向の知識は不可欠です。
10.4.18 (C) 株式会社破滅派
5. 5 オブジェクトを車にたとえると..
クラスはオブジェクトを作るための設計図。
設計図からオブジェクトを作ることを「インスタンス化」といいます。
インスタンスとは、「実体」という意味です。
インスタンス:$MyCar クラス:Car
<?php
new演算子でCarクラスの
新しいインスタンスを作成
$MyCar
=
new
Car();
し、変数$myCarという名
?> 前をつけています。
10.4.18 (C) 株式会社破滅派
6. 6 変数と関数の復習
皆さんはすでにPHPで重要な2つのもの「変数」と「関数」を学びました。
変数…値につける名前
関数…一連の処理につける名前
$hoge
=
“fuga”;
function
tenTimes($num){
$num
=
10;
return
$num
*
10;
$myArr
=
array(1,
2,
3,
4);
}
PHPにおけるオブジェクトはこの変数と関数の集合体です。
この集合体の設計図を「クラス」と呼びます。
10.4.18 (C) 株式会社破滅派
7. 7 設計図(クラス)の書き方
クラスにはプロパティ(部品)とメソッド(機能)があります。
プロパティは変数で、メソッドは関数です。
<?php
class
Car{
//プロパティ
var
$handle;
var
$break;
var
$accel;
var
$engine;
//メソッド
クラス:Car
function
go(){}
部品:ブレーキ、ハンドル、
function
stop(){}
アクセル、エンジン
function
turn($direction){}
機能:進む、止まる、曲がる、
function
engine_start(){}
バックする、エンジンを }
かける ?>
10.4.18 (C) 株式会社破滅派
8. 8 クラスの使い方
クラスは自分で作った物であったり、他人が作ったものだったりします。
通常は1クラス1ファイルとし、読み込んで使います。
<?php
//クラスファイルを読み込む
//通常は1つのクラスで1つのファイルに分けます
index.php Car.php
require_once(“./Car.php”);
//インスタンス化して使えるようにする
index.phpはCar.phpを読み込
$myCar
=
new
Car();
んでそれを利用します。
この場合、Carクラスの機能
//矢印演算子でプロパティを呼び出す
を利用するだけなので、何か
echo
$myCar-‐>price;
//1,000,000
エラーが起きた場合は
index.phpに不具合があると
//メソッドは括弧を付ける
考えることができます。
$myCar-‐>back();
//バックします
こうしてプログラムの隠蔽性
?> が保たれます。
10.4.18 (C) 株式会社破滅派
9. 9 オブジェクト指向はどこまで理解する必要があるか?
オブジェクト指向は抽象的な概念であり、理解が難しいです。
単純なメールフォームならオブジェクト指向でなくても作れます。
しかし、理解しないとできないこともあります。
オブジェクト指向を理解していないとできないこと
• WordPressやXoopsなどのカスタマイズ
• CakePHPなどのフレームワークの利用
• 複雑で高度なシステムの作成
会社の経理部で働くか?
公認会計士になるか? …という違いに似ています
10.4.18 (C) 株式会社破滅派