【S4】問5

 このコードは、異なる種類の動物を表現し、それぞれの動物が鳴き声を出力し、食事をする機能を持っています。
しかし、各動物の種類に関連した条件分岐が多数存在し、拡張性が低く、管理が難しい状態です。
以下のソースコードをリファクタリングしなさい。
また、未使用の項目は削除すること。

<?php

class Animal
{
    private string $type;

    public function __construct(string $type)
    {
        $this->type = $type;
    }

    public function makeSound(): void
    {
        if ($this->type === "dog") {
            echo 'ワンワン' . PHP_EOL;
        } elseif ($this->type === "cat") {
            echo 'ニャーニャー' . PHP_EOL;
        } elseif ($this->type === "bird") {
            echo 'チュンチュ' . PHP_EOL;
        }
    }

    public function eat(): void
    {
        if ($this->type  === "dog") {
            echo 'ドッグフードを食べました' . PHP_EOL;
        } elseif ($this->type  === "cat") {
            echo 'キャットフードを食べました' . PHP_EOL;
        } elseif ($this->type  === "bird") {
            echo '鳥のエサを食べました' . PHP_EOL;
        }
    }
}
                    
<?php

$dog = new Animal('dog');
$dog->makeSound();
$dog->eat();

$cat = new Animal('cat');
$cat->makeSound();
$cat->eat();