超素人のJAVAスクリプト&PHP奮戦記

超ど素人のえいすけがJAVAスクリプトとPHPを勉強してみるブログ

クラスの練習プログラム 解説その2

2009-04-30 | PHP
クラスの中で用意できるモノは、関数と変数です。

クラスに入っている関数や変数は、クラス化されていない関数や変数と区別するため、特別な名称がつけられています。入門書によって呼称が違うので要注意です。



  クラスに入ってる関数:メンバー関数 メソッド

  クラスに入ってる変数:メンバー変数 メンバー プロパティ



と呼ばれています。

クラスに入っている関数…メソッドは先日から勉強しているような書き方でOKです。

(まぁ、練習プログラムみてもらえればわかりますが。。。)

通常クラス内からしか呼び出しできません。





ではでは、クラスの作り方ですが、まずは練習プログラムの本体部分をご覧ください。





48行目に    $man = new aisatsu("島田英輔");  てあるじゃないですか。

こいつでクラスを作っています。

すでにクラスはプログラム上部に書いてあるじゃないか、作るって何だ?と思っている方がいらっしゃることでしょう。(すくなくとも僕はそうでしたw)

クラスってのはプログラムに書いただけじゃ、使えるようにならないのです。

実は、 $man = new aisatsu("島田英輔");でやっているように、new クラス名 といった形で宣言しないと、クラスを利用できないのです。

利用できる形になったクラスのことをオブジェクトといいます。んでnewしてオブジェクトを作ることをインスタンス化といいます。

事実、 $man = aisatsu("島田英輔");とnewを削ってプログラムをテストするとエラーが表示されます。



newをすることで、クラスをインスタンス化してオブジェクトを作るわけですが、例を使って説明しますと次のような形になるのではないかと思います。(てかほんの受け売りだからその通りなんだろうけどね)

  クラス 設計図。インスタンス化されたオブジェクトにどんなメソッドとメンバーが用意しているか定義しているだけのモノ。

  インスタンス化 設計図から実際に動くようにする。工場のようなイメージ。実際は、サーバーのメモリ空間にクラスの場所を確保する行為。

  オブジェクト プログラム。アクセスすれば動く。



んで、   $man = new aisatsu("島田英輔");  に戻ります。

インスタンス化するときに島田英輔という引数をつけています。

というのも、クラスには外部から引数が1つ受け入れることが出来るように設計しているからです。





4行目から8行目の部分ですね。

function __construct($s){

$this->name = $s;

echo $this->name."さん、クラスを作りました。

値を初期化しました。

";

}

とあるところです。

メソッド__constructに引数一つ受け取れるようになっていますよね。

ここにクラスを作ったときに渡された引数が入ります。

メソッド__constructは、ちょっと変わった関数でして、インスタンス化したときに自動的に実行される関数です。

通常は、ここで値を初期化するなどなどをするようです。今回は引数をメンバーnameにわたしました。



クラスについての補足

2009-04-30 | PHP
先日の記事の補足です。

クラスをいったん作ってしまうと、何度呼び出してもちゃんと値を返してくれます。
関数は引数として与えられた値を処理結果として返値として出力するだけの仕組みなので値を保存しておくことは出来ません。
関数はデータを処理(流す)だけです。けれども、クラスはデータを格納することが出来るのですよ。
なので、引数の値や処理後の値を保存しておき、呼び出されたタイミングで使うことが出来ます。便利ですよねぇ。

クラスの練習プログラム 解説その1

2009-04-29 | PHP
クラスについては、まだまだまだ習熟していないので、ほんの受け売りが大半ですがお許しくださいませ。
先日、クラスの実験をしたプログラムでは、aisatsuというクラスを定義して、そのクラスに記入した機能を呼び出してメッセージを表示させました。
htmlタグの上にあるのがクラスで、htmlタグ内にあるのがクラスを呼ぶプログラムになっています。

実験したプログラムではクラスを次のように定義しています。

class クラス名{
    処理内容
}

現状ではよくわかりませんが、入門書を読む限りクラスの定義方法は上記のようなモノです。
classって書いた後に名前とカッコをつければ終わり。意外と簡単ですね?

クラスの練習プログラム 実行結果

2009-04-28 | PHP
クラスの練習プログラムを実行するとこんな感じになります

朝昼晩の関数を呼び出せば、それに対応するechoが出力されます

自動判別の関数を呼び出せば、時間帯にあわせて表示が変わります





余談ですが、swich関数の処理に関数を呼び出すことは出来ないんですね?

よくわかりませんがエラーが出ましたよ。出来てもおかしくないと思うのですが。。。。。