Boa noite! Espero que esteja bem.
Pensei assim para resolver o problema proposto.
ContaBancaria.php
<?php
class ContaBancaria {
public function __construct(
public readonly string $nomeTitular,
public int $saldo,
public readonly bool $pessoaComDeficiencia,
) {
}
function depositar(int $valorASerDepositado): void {
if ($valorASerDepositado <= 0) {
echo "Error: Valor inserido inválido!" . PHP_EOL;
return;
}
$this->saldo += $valorASerDepositado;
echo "Sucess: Valor depositado com sucesso!" . PHP_EOL;
}
function sacar(int $valorASerSacado): void {
if ($valorASerSacado <= 0 || $valorASerSacado > $this->saldo) {
echo "Error: Valor inserido inválido!" . PHP_EOL;
return;
}
$this->saldo -= $valorASerSacado;
echo "Sucess: Valor sacado com sucesso!" . PHP_EOL;
}
function consultarSaldo(): void {
echo 'Saldo atual: ' . $this->saldo . PHP_EOL;
}
}
ContaCorrente.php
<?php
class ContaCorrente extends ContaBancaria {
public const VALOR_TARIFA = 5;
public const VALOR_TARIFA_MENSAL = 20;
public function __construct(
string $nomeTitular,
int $saldo,
bool $pessoaComDeficiencia,
) {
parent::__construct($nomeTitular, $saldo, $pessoaComDeficiencia);
}
public function cobrarTarifaMensal(): int {
if ($this->pessoaComDeficiencia) {
return $this->saldo;
}
return $this->saldo -= self::VALOR_TARIFA_MENSAL;
}
public function sacar(int $valorASerSacado): void {
$tarifa = 0;
if (!$this->pessoaComDeficiencia) {
$tarifa = self::VALOR_TARIFA;
}
$valorASerSacado += $tarifa;
echo 'Valor da tarifa por saque: ' . $tarifa . PHP_EOL;
parent::sacar($valorASerSacado);
}
}
index.php
<?php
require_once __DIR__ . "/ContaBancaria.php";
require_once __DIR__ . "/ContaCorrente.php";
$contaCorrenteEliel = new ContaCorrente("Eliel", 0, FALSE);
$contaCorrenteEliel->depositar(1000);
$contaCorrenteEliel->consultarSaldo();
$contaCorrenteEliel->sacar(100);
$contaCorrenteEliel->consultarSaldo();
$contaCorrenteEliel->cobrarTarifaMensal();
$contaCorrenteEliel->consultarSaldo();
$contaCorrenteEliel->sacar(100);
$contaCorrenteEliel->consultarSaldo();
$contaPoupancaEliel = new ContaBancaria("ELIELZIN", 10, FALSE);
$contaPoupancaEliel->depositar(1000);
$contaPoupancaEliel->consultarSaldo();
$contaPoupancaEliel->sacar(100);