落書きノート

ふと自分が気になった事を書いてます

PHP 練習問題 派生クラス

なかなか難しい課題です。問題の意図しているところがわからない部分もあったので、結局答えを見ました。答えを見てこうしたいのねと思って納得。プログラムは以下のようになります。

<html>
<head>
  <title>派生クラス</title>
</head>
<body>
  <?php
  class Pform{
    protected $syomei = "書名";
    protected $kakaku = 1500;

    public function __construct($su, $nedan){
        $this->syomei = $su;
        if($nedan >= 0 && $nedan <= 5000){
          $this->kakaku = $nedan;
        }else{
          $this->kakaku = -1;
        }
    }

    public function getsyomei(){
      return $this->syomei;
    }

    public function getkakaku(){
      return $this->kakaku;
    }
  }

  class User extends Pform{
    public $syuppan;
    public $cyosya;

    public function __construct($su, $nedan, $syu, $cyo){
        parent::__construct($su, $nedan);
        $this->syuppan = $syu;
        $this->cyosya = $cyo;
    }

    public function getsyomei(){
      return "書名:" . $this->syomei;
    }

    public function getsyuppan(){
      return $this->syuppan;
    }

    public function getcyosya(){
      return $this->cyosya;
    }
  }

  $url = new User("JavaScript入門", 957, "アマゾン", "草野 泰秀");
  ?>

  <table border="2">
    <tr>
      <th>書名</th>
      <th>価格</th>
      <th>出版社</th>
      <th>著者</th>
    </tr>
    <?php
      print "<tr><td>";
      print $url->getsyomei();
      print "</td><td>";
      print $url->getkakaku();
      print "</td><td>";
      print $url->getsyuppan();
      print "</td><td>";
      print $url->getcyosya();
      print "</td></tr>";
    ?>
  </table>
</body>
</html>

大学でJavaの継承やカプセル化を習った人からしたら、そう戸惑うこともないと思います。答えを見て、「なるほど」と思えばそれで良いのではないでしょうか。

20160206150558