A herança em PHP5

A herança é um dos mecanismos fundamentais da programação orientada a objetos. Por meio da herança, podem se definir classes a partir da declaração de outras classes. As classes que herdam incluem os métodos como as propriedades da classe a partir da qual estão definidos.

Por exemplo, pensemos na classe “veículo”. Esta classe geral pode incluir as características gerais de todos os veículos (atributos da classe), como a matrícula, ano de fabricação e potência. Ademais, incluirá algumas funcionalidades (métodos da classe) como poderiam ser, ligar() ou mover().

Agora também, na prática existem vários tipos de veículos, como os carros, os ônibus e os caminhões. Todos eles têm umas características comuns, que foram definidas na classe veículo. Ademais, terão uma série de características próprias do tipo de veículo, que, à princípio, não têm outros tipos de veículos. Por exemplo, os caminhões podem ter uma carga máxima permitida ou os ônibus um número de lugares disponíveis. Da mesma forma, as classes mais específicas podem ter umas funcionalidades próprias, como os caminhões carregar() e descarregar(), ou os ônibus aceitar_passageiros() ou vender_passagem().

O normal em sistemas de herança é que as classes que herdam de outras incluam novas características e funcionalidades, à parte dos atributos e métodos herdados. Porém, isto não é imprescindível, de modo que podem se criar objetos que herdem de outros e não incluam nada novo.

Sintaxe de herança em PHP 5

A programação orientada a objetos nos oferece uma série de mecanismos para definir este tipo de estruturas, de modo que possam se criar hierarquias de objetos que herdam uns de outros. Veremos agora como definir estas estruturas de herança em PHP 5. Para isso, continuando com nosso exemplo da locadora de vídeo, vamos criar os distintos tipos de elementos que são oferecidos no aluguel.

Como todo mundo conhece, as locadoras de vídeos oferecem distintos tipos de elementos para alugar, como podem ser os filmes (fitas de vídeo ou DVD) e os jogos. Cada elemento tem umas características próprias e algumas comuns. Chamamos “suporte” à classe geral, que inclui as características comuns para todos os tipos de elementos em aluguel. Logo, criamos três tipos de suportes diferentes, que herdam da classe suporte, mas que incluem algumas características e funcionalidades novas. Estes tipos de suporte serão “fita_video”, “dvd” e “jogo”.

O esquema de herança que vamos realizar neste exemplo pode ser visto na seguinte imagem.

Começamos pela classe suporte. Seu código será o seguinte:

class suporte{
public $titulo;
protected $numero;
private $preco;

function __construct($tit,$num,$preco){
$this->titulo = $tit;
$this->numero = $num;
$this->preco = $precio;
}

public function dar_preco_sem_imposto(){
return $this->preco;
}

public function dar_preco_com_imposto(){
return $this->preco * 1.16;
}

public function dar_numero_identificacao(){
return $this->numero;
}

public function imprime_caracteristicas(){
echo $this->titulo;
echo “<br>” . $this->preco . ” (imposto nao incluido)”;
}
}

Os atributos que definimos são, título, número (um identificador do suporte) e preço. Aplicamos a cada um, um modificador de acesso distinto, para poder praticar os diferentes tipos de acesso.

Definimos um constructor, que recebe os valores para a iniciação do objeto. Um método dar_preco_sim_imposto(), que devolve o preço do suporte, sem aplicar o imposto. Outro método dar_preco_com_imposto(), que devolve o preço uma vez aplicado por exemplo, 16% de imposto. O método dar_numero_identificacao(), que devolve o número de identificador e imprime_caracteristicas(), que mostra na página as características deste suporte.

Nota:  Como se foi definido como private o atributo preço, este atributo só poderá ser acessado dentro do código da classe, ou seja, na própria definição do objeto. Se quisermos acessar ao preço de fora da classe (algo muito normal se temos em conta que vamos necessitar o preço de um suporte de outras partes da aplicação) será necessário criar um método que nos devolva o valor do preço. Este método devería se definir como public, para que possa ser acessado de qualquer lugar que se necessite.

Em todos os métodos usa-se a variável $this. Esta variável não é mais que uma referência ao objeto sobre o qual se está executando o método. Em programação orientada a objetos, para executar qualquer destes métodos, primeiro temos que ter criado um objeto a partir de uma classe. Logo, poderemos chamar os métodos de um objeto. Isto se faz com $meu_objeto->metodo_a_chamar(). Dentro de método, quando se utiliza a variável $this, se está fazendo referência ao objeto sobre o qual se chamou ao método, neste caso, o objeto $meu_objeto. Com $this->titulo estamos fazendo referência ao atributo “titulo” que tem o objeto $meu_objeto.

Se quisermos provar a classe suporte, para confirmar que se executa corretamente e que oferece resultados coerentes, podemos utilizar um código como o seguinte.

$suporte1 = new suporte(“Os Intocáveis”,22,3);
echo “<b>” . $suporte1->titulo . “</b>”;
echo “<br>Preco: ” . $suporte1->dar_preco_sem_imposto() . “euros”;
echo “<br>Preco imposto incluído: ” . $suporte1->dar_preco_com_imposto() . ” euros”;

Neste caso criamos uma instância da classe suporte, em um objeto que chamamos $suporte1. Logo, imprimimos seu atributo titulo (como o título foi definido como public, podemos acessa-lo desde fora do código da classe.
Logo, chamam-se aos métodos dar_preco_sem_imposto() e dar_preco_com_imposto() para o objeto criado.

Daría isto como resultado:

Os Intocáveis
Preço: 3 euros
Preço imposto incluído: 3,48 euros

Fonte: http://www.criarweb.com/artigos/450.php

Deixe um comentário