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.291 ]
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
Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 2)
A simples classe Date Operations
Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 1)
Paginando resultados com a classe Generic Easy Pagination
Leitura recomendada
Utilizando PEAR
Trabalhando conteúdo dinâmico com Smarty
Engenharia de Software - Fazer melhor o software e fazer o software melhor
Organizando projetos com a classe FastTemplate (parte 1)
PHP5 Orientado a Objetos: Visibilidade, herança e extensões de classes
Comentários
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.
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.
Mensagem
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.
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.
Mensagem
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.
Simplesmente d+.
Muito bem explicado, parabéns.
Mensagem
Simplesmente d+.
Muito bem explicado, parabéns.
Contribuir com comentário
Enviar