/**
* todos os métodos de uma interface são declarados como público
* e não possuem corpo nos métodos.
*/
interface SomaSubtrair
{
public function somar();
public function subtrair();
}
/**
* classes abstratas não são instanciadas diretamente,
* se pelo menos um método da classe for
* abstrata a classe também deverá ser abstrata.
* uma classe abstrata pode ter métodos não abstratos, ou seja,
* métodos com implementação (que tenha {})
*/
abstract class DividirMultiplicar
{
public abstract function dividir();
public abstract function multiplicar();
}
class Calculadora extends DividirMultiplicar implements SomaSubtrair
{
private $numero_1;
private $numero_2;
private $resultado;
private $operacao;
public function __construct($p1 ,$p2, $p3)
{
$this->numero_1 = $p1;
$this->numero_2 = $p2;
$this->operacao = $p3;
}
public function somar()
{
$this->resultado = $this->numero_1 + $this->numero_2;
}
public function subtrair()
{
$this->resultado = $this->numero_1 - $this->numero_2;
}
public function dividir()
{
$this->resultado = $this->numero_1 / $this->numero_2;
}
public function multiplicar()
{
$this->resultado = $this->numero_1 * $this->numero_2;
}
public function realizarOperacao()
{
$this->{$this->operacao}();
}
public function retornarResultado()
{
return $this->resultado;
}
}
$calc = new Calculadora(1, 5, 'subtrair');
$calc->realizarOperacao();
echo $calc->retornarResultado(); // saída -4
Nenhum comentário:
Postar um comentário