Polimorfismo e PHP 5

Amante de PHP e de Orientação à Objetos, resolvi escrever este artigo e mostrar como a nova versão do PHP pode implementar esse poderoso recurso típico de linguagens orientadas à objetos: o Polimorfismo.

[ Hits: 56.206 ]

Por: Olavo Alexandrino em 18/04/2005 | Blog: http://oalexandrino.com


Implementação



Então vamos a implementação!

<?
/**
* Nossa simples interface que define apenas um comportamento: o getArea()
* @author Olavo Alexandrino <oalexandrino@yahoo.com.br>
* @copyright Copyright © 2004, oalexandrino.com
*/

interface IFigura
{
/**
* Nome do método a ser implementado. (Aqui NÃO definimos o corpo do método, apenas assinatura)
*/

public function getArea();
}
?>

<?
/**
* Classe Circulo
* @author Olavo Alexandrino <oalexandrino@yahoo.com.br>
* @copyright Copyright © 2004, oalexandrino.com
*/

class Circulo implements IFigura
{
private $raio;

/**
* Construtor
*/

function Circulo( $intValue )
{
$this->raio = (double) $intValue;
}

/**
* Area do Circulo
    * @return double
*/

public function getArea()
{
return pow( $this->raio, 2) * 3.14;
}
}
?>

<?
/**
* Classe Quadrado
* @author Olavo Alexandrino <oalexandrino@yahoo.com.br>
* @copyright Copyright © 2004, oalexandrino.com
*/

class Quadrado implements IFigura
{
private $a;

/**
* Construtor
*/

function Quadrado( $intValue )
{
$this->a = (double) $intValue;
}

/**
* Area do Quadrado
    * @return double
*/

public function getArea()
{
return ($this->a * $this->a);
}
}
?>

<?
/**
* Classe FiguraPolimorfismo que GARANTE que apenas objetos que implementem a IFigura sejam adicionados ao array
* @author Olavo Alexandrino <oalexandrino@yahoo.com.br>
* @copyright Copyright © 2004, oalexandrino.com
*/

class FiguraPolimorfismo
{
/**
* Adiciona um item ao array
    * @param array()
    * @param IFigura
*/

   public function addItem( &$arrIFigura , IFigura $objFigura)
   {
   array_push($arrIFigura, $objFigura);
   }
}
?>
Página anterior     Próxima página

Páginas do artigo
   1. Entendendo o conceito
   2. Exemplo do conceito
   3. Implementação
   4. Testes
   5. Comentários finais
Outros artigos deste autor

A simples classe Date Operations

Paginando resultados com a classe Generic Easy Pagination

Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 1)

Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 2)

Leitura recomendada

Trabalhando conteúdo dinâmico com Smarty

Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 1)

Engenharia de Software - Fazer melhor o software e fazer o software melhor

PHP5 Orientado a Objetos: Visibilidade, herança e extensões de classes

Organizando projetos com a classe FastTemplate (parte 2)

  
Comentários
[1] Comentário enviado por ramonklown em 19/04/2005 - 13:07h

Esse "poliformismo" já existia no PHP4. PHP sempre foi uma linguagem bem dinamica.

Me parece que o Brasil conheceu o PHP na versão 5 e só agora é que a linguagem ficou boa.

A maior novidade do PHP5 é a abilidade do PRADO, simplexml entre outras que não vou ficar listando.

[2] Comentário enviado por rsantos em 19/04/2005 - 15:43h

Vejam o conteúdo desse artigo(http://www.phpbrasil.com/articles/article.php/id/833) nele aborda quase todas as novas implementações do Php 5.

O link abaixo(http://www.phpbrasil.com/articles/article.php/id/831) tem apenas links pra outros sites.

[3] Comentário enviado por oalexandrino em 20/04/2005 - 00:00h

O Brasil já conheceu o PHP há muuuuiiito tempo e ela sempre foi uma linguagem excelente. O que acontece é que ela fica melhor a cada versão. Não entendi seu comentário.
a
Esse "polimorfismo" NÃO existia em PHP 4!

A implementação que usei depende de "Interfaces" e "Indução de Tipo".

E isso NÃO existe em PHP 4, você apenas pode simular de outras formas.

[4] Comentário enviado por xploitx em 19/05/2009 - 20:17h

Simplesmente d+.
Muito bem explicado, parabéns.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts