0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHPオリジナル問題作成2

Posted at

###続き

#オブジェクト指向、インスタンスとクラス
■問題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フィールドを表示してください。

解答

mai8.php
//問題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

Hero.php
<?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です。)
解答

main9.php
//問題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歳です
名前はカズヤです

Test2.php
<?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;
    }
    
}


main10.php
//問題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
Hero1.php
<?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メソッド(内容:逃げる)を呼び出してください。

解答

main11.php
//問題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();

//実行結果
スーパーヒーローが逃げた
逃げる

Hero2.php
<?php

namespace mondai\other\hero;


class Hero2
{
    function attack()
    {
        echo "攻撃";
    }
    function run()
    {
        echo "逃げる";
    }
}


SuperHero.php
<?php

namespace mondai\other\hero;


class SuperHero extends Hero2
{
    function fly(){
        echo "飛ぶ";
    }
    function land(){
        echo "着地";
    }

    function run()
    {
        echo "スーパーヒーローが逃げた";
    }

    function go(){
        parent::run();
    }
}

###続く

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?