2008年11月11日火曜日

 

PHP再入門- オブジェクト指向 その3

継承に関して、とMVCの参考に。

PHPなオブジェクト指向入門 vol.3(前半)
PHPなオブジェクト指向入門vol.3(後半) - 真夜中のプログラミングTips

リンク先を参考にCalculateクラスを修正。
PHP再入門- オブジェクト指向 その2 - さぼてん (2008年11月11日記事)

/* Calculate2クラス - Calculateクラス修正 */
class  Calculate2 {
  var $a = 0;
  var $b = 0;
  var $sum = 0;
  var $error = array();

  // コンストラクタ - 初期化
  function __construct($a,$b) {
    $this->set_a($a);
    $this->set_b($b);
    $this->Sum();
  }
  function set_a($a) {
    (is_numeric($a)) ? $this->a = intval($a) : $error[] = "$a is not Int.";
  }
  function get_a() {
    return $this->a;
  }
  function set_b($b) {
    (is_numeric($b)) ? $this->b = intval($b) : $error[] = "$b is not Int.";
  }
  function get_b() {
    return $this->b;
  }
  function Sum() {
    $this->sum = $this->a + $this->b;
  }
  function getSum() {
    return $this->sum;
  }
  // エラー関数
  function IsError(){
    (count($this->error) > 0) ? return $this->error; : return FALSE;
  }
}

Calculateクラスを継承して結果の表示を「a+b=c」形式にするもの。

/* displaySumクラス - Calculateクラス継承 */
class displaySum extends Calculate {
  funtction __construct($a,$b) {
    parent::__construct(); // 親クラスのコンストラクタ呼び出し
  }
  // 関数getSum()オーバーライド
  function getSum() {
    return "$this->get_a()+$this->get_b=parent::getSum()"; // parent::getSum() - Calculate2クラスから呼び出し
  }
}
継承を使わずにクラスの拡張 - オブジェクトコンポジション

クラスの中で他のオブジェクト・インスタンスを作成する。

/* displaySumクラス - オブジェクトコンポジション */
class displaySum {
  var $obj;
  funtction __construct($a,$b) {
    $obj = new Calculate($a,$b); // Calcurate クラスのインスタンス作成
  }
  function getSum() {
    return "$this->obj->get_a()+$this->obj->get_b=$this->obj->getSum()"; 
  }
}

いくつものクラス・インスタンスを作成して多重継承の様にもできるが注意。

間違ってたら教えてください。ごめんなさい。

ラベル: ,


コメント: コメントを投稿

登録 コメントの投稿 [Atom]



この投稿へのリンク:

リンクを作成



<< ホーム

This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google