DEV Community

loading...

POO - Relacionamentos (amorosos) e interfaces (de objetos)

raphaeldasilva profile image Raphael da Silva Updated on ・2 min read

Imagine que alguém quer namorar e deseja que seu pretendente seja carinhoso. Para isso, o pretendente deve se comportar de certa maneira, pois para ser carinhoso ele deve fazer o seguinte:

  • Beijar
  • Abraçar
  • Entrelaçar os dedos

Ou seja, para ser o pretendente esperado, ele deve implementar a seguinte interface e fazer as seguintes ações (operações):

<?php

/**
 *
 * @author Raphael da Silva
 *
 */
interface PretendenteCarinhoso
{

    public function beijar();

    public function abracar();

    public function entrelacarOsDedos();

}
Enter fullscreen mode Exit fullscreen mode

Agora uma pessoa carinhosa mais introvertida pode implementar essa interface fazendo as ações (a.k.a operações) do seu jeito (de acordo com a sua implementação):

<?php

/**
 *
 * @author Raphael da Silva
 *
 */
class PessoaIntrovertida implements PretendenteCarinhoso
{

    public function beijar()
    {   

        echo 'Beijo delicado';

    }

    public function abracar()
    {

        echo 'Abraço delicado';

    }

    public function entrelacarOsDedos()
    {

        echo 'Dedos entrelaçados de forma calma';

    }

}
Enter fullscreen mode Exit fullscreen mode

Além da pessoa mais introvertida, uma pessoa extrovertida também pode implementar a interface e, com isso, ser um pretendente carinhoso:

<?php

/**
 *
 * @author Raphael da Silva
 *
 */
class PessoaExtrovertida implements PretendenteCarinhoso
{

    public function beijar()
    {

        echo 'Beijo.';

    }

    public function abracar()
    {

        echo 'Abraço.';

    }

    public function entrelacarOsDedos()
    {

        echo 'Entrelaçar de dedos.';

    }

}
Enter fullscreen mode Exit fullscreen mode

Para a pessoa que quer namorar alguém que atenda a interface PretendenteCarinhoso poderá ser um pretendente que atende sua expectativa, pois é esperado alguém que seja carinhoso e se comporte dessa forma como a interface representa através de suas operações. Segue a classe que representa a(o) pretendente:

<?php

/**
 *
 * @author Raphael da Silva
 *
 */
class PessoaQueQuerNamorar
{

    private $pretendente;

    public function __construct(
        PretendenteCarinhoso $pretendente
    ){

        $this->pretendente= $pretendente;

    }

    public function namorar()
    {

        $this->pretendente->abracar();
        $this->pretendente->beijar();
        $this->pretendente->entrelacarOsDedos();

    }

}
Enter fullscreen mode Exit fullscreen mode

Como é possível perceber, a pessoa que quer namorar espera (como parêmetro no construtor) alguém que atenda o comportamento esperado, logo a ela confia na interface que atenda isso e todo mundo sabe que confiança é a base para um relacionamento (tanto em objetos quanto em namoros).

A essência de tudo

No uso de interfaces e nos exemplos tudo gira em torno de ação, confiança e expectiva, assim como acontece nas relação humanas.

Discussion (0)

pic
Editor guide