###続き
#オブジェクト指向、インスタンスとクラス
■問題1
other/Hero.php/Heroクラスを作成。name(String型),hp(int型)のフィールドを準備し、以下のメソッド作成。
メソッド名:sit
戻り値:なし
引数リスト:int sec
処理内容:
・自分自身のhpフィールドに引数(sec)をたす。
・自分自身のnameフィールドを表示。(表示形式:nameフィールド+は+引数(sec)+秒座った。)
・引数(sec)を表示。(表示形式:HPが+引数(sec)+ポイント回復した。)
main8.phpでHeroインスタンスを生成。
nameフィールド:カズヤ(自身の名前)
hpフィールド:100
表示内容:
・sitメソッドを呼び出してください。(引数は5)
・hpフィールドを表示してください。
解答
//問題1
<?php
namespace mondai\main;
use mondai\other\hero\Hero;
require 'other/Hero.php';
$hero = new Hero;
$hero->name = "カズヤ";
$hero->hp = 100;
$hero->sit(5);
echo $hero->hp;
//実行結果
カズヤは5秒座った
HPが5ポイント回復した
105
<?php
namespace mondai\other\hero;
class Hero
{
public String $name;
public int $hp;
public function sit (int $sec)
{
$this->hp +=$sec;
echo $this->name."は".$sec."秒座った"."<br>";
echo "HPが".$sec."ポイント回復した"."<br>";
}
}
#さまざまなクラス機構、カプセル化
■問題1
other/Test2.php/Test2クラスを作成し、name(String型)、age(int型)フィールドを作成してください。(アクセス修飾子 private)
name,ageフィールドのgetter,setterを作成してください。
main9.phpでTest2インスタンスを生成。
Test2クラスのname、ageフィールドに値をセットしてください。(値はname(自分の名前),age(自分の年齢))
name、ageフィールドにセットした値を表示させてください。
(表示形式:年齢は+name(自分の名前)+歳です)
(表示形式:名前は+age(自分の年齢)+です)
■問題2
other/Hero1.php/Hero1クラス作成し、hp(int型)のフィールド,Hero(コンストラクタ)を作成してください。※コンストラクタ(中身:this.hp=100;)
main9.phpでTest2インスタンスを2つ生成し表示させてください。(今回は100が2つ表示されているとOKです。)
解答
//問題1
<?php
namespace mondai\main;
use mondai\other\test\Test2;
require 'other/Test2.php';
$t = new Test2;
$t->setAge(26);
$t->setName("カズヤ");
echo "年齢は".$t->getAge()."歳です";
echo "<br>";
echo "名前は".$t->getName()."です";
//実行結果
年齢は26歳です
名前はカズヤです
<?php
namespace mondai\other\test;
class Test2{
private String $name;
private int $age;
public function getName(){
return $this->name;
}
public function setName(String $name){
$this->name=$name;
}
public function getAge(){
return $this->age;
}
public function setAge(int $age){
$this->age=$age;
}
}
//問題2
<?php
namespace mondai\main;
use mondai\other\hero\Hero1;
require 'other/Hero1.php';
$t = new Hero1;
$t1 = new Hero1;
echo $t->hp;
echo "<br>";
echo $t1->hp;
//実行結果
100
100
<?php
namespace mondai\other\hero;
class Hero1
{
public int $hp;
function __construct()
{
$this->hp = 100;
}
}
#11継承
■問題1
other/Hero2.php/Hero2クラスを作成し、attackメソッド(内容:攻撃)、runメソッド(内容:逃げる)を追加してください。
other/SuperHero.php/SuperHeroクラス作成(Hero2クラスを継承)を作成し、
flyメソッド(内容:飛ぶ)、landメソッド(内容:着地)、runメソッド(内容:スーパーヒーローが逃げた)を追加してください。
main11.phpでSuperHeroインスタンス作成してください。
SuperHeroクラスのrunメソッド(内容:スーパーヒーローが逃げた)とHeroクラスのrunメソッド(内容:逃げる)を呼び出してください。
解答
//問題1
<?php
namespace mondai\main;
use mondai\other\hero\SuperHero;
require 'other/Hero2.php';
require 'other/SuperHero.php';
$s=new SuperHero;
$s->run();
echo "<br>";
$s->go();
//実行結果
スーパーヒーローが逃げた
逃げる
<?php
namespace mondai\other\hero;
class Hero2
{
function attack()
{
echo "攻撃";
}
function run()
{
echo "逃げる";
}
}
<?php
namespace mondai\other\hero;
class SuperHero extends Hero2
{
function fly(){
echo "飛ぶ";
}
function land(){
echo "着地";
}
function run()
{
echo "スーパーヒーローが逃げた";
}
function go(){
parent::run();
}
}
###続く