A herança em PHP5, Terceira parte

A classe suporte tem outras classes que herdam dela e que ainda não definimos.

Vejamos primeiro o código da classe “dvd”, que é muito parecido ao visto para a classe fita_vídeo. O único que muda é que agora vamos definir outros atributos relacionados com os DVD, como são os idiomas disponíveis no DVD e o formato de tela que tem a gravação.

class dvd extends suporte{
public $idiomas_disponiveis;
private $formato_tela;

function __construct($tit,$num,$preco,$idiomas,$tela){
parent::__construct($tit,$num,$preco);
$this->idiomas_disponiveis = $idiomas;
$this->formato_tela = $tela;
}

public function imprime_caracteristicas(){
echo “Filme em DVD:<br>”;
parent::imprime_caracteristicas();
echo “<br>” . $this->idiomas_disponiveis;
}
}

Nota:Para uma explicação detalhada deste código referimos ao capítulo anterior, onde se explicava a classe fita_video e a sobrescrita de métodos.

Por sua parte, a classe jogo, terá 3 novos atributos. São estes “console”, para especificar o console para a que está criado este jogo, “min_num_jogadores”, para especificar o número mínimo de jogadores e “max_num_jogadores”, para especificar o número máximo de jogadores que podem participar no jogo.

Este será o código da classe jogo.

class jogo extends suporte{
public $consola; //nome do console do jogo ej: playstation
private $min_num_jogadores;
private $max_num_jogadores;

function __construct($tit,$num,$preco,$console,$min_j,$max_j){
parent::__construct($tit,$num,$preco);
$this->console = $console;
$this->min_num_jogadores = $min_j;
$this->max_num_jogadores = $max_j;
}

public function imprime_jogadores_possiveis(){
if ($this->min_num_jogadores == $this->max_num_jogadores){
if ($this->min_num_jogadores==1)
echo “<br>Para um jogador”;
else
echo “<br>Para ” . $this->min_num_jogadores . ” jogadores”;
}else{
echo “<br>De ” . $this->min_num_jogadores . ” a ” . $this->max_num_jogadores . ” Jogadores.”;
}
}

public function imprime_caracteristicas(){
echo “Jogo para: ” . $this->console . “<br>”;
parent::imprime_caracteristicas();
echo “<br>” . $this->imprime_jogadores_possiveis();
}
}

Observamos o construtor, que chama ao construtor da classe pai para inicializar alguns atributos próprios dos suportes em geral.

A seguir, observamos o método imprime_jogadores_possiveis(), que mostra os jogadores permitidos. Foi declarada como public, para que possa ser acessada a partir de qualquer lugar. Dá uma mensagem como “Para um jogador” ou “De 1 a 2 Jogadores”, dependendo dos valores min_num_jogadores e max_num_jogadores.

Por sua parte, se sobrescreve a função imprime_caracteristicas(), para mostrar todos os dados de cada jogo. Primeiro se mostra a console para a qual foi criado o jogo. Os dados gerais (próprios da classe “suporte”) se mostram chamando ao mesmo método da classe “parent” e o número de jogadores disponíveis é mostrado com uma chamada ao método imprime_jogadores_possiveis().

Poderíamos utilizar um código como o que segue, caso queiramos comprovar se a classe funciona corretamente e que nos oferece a saída que estávamos pensando.

$meujogo = new jogo(“Final Fantasy”, 21, 2.5, “Playstation”,1,1);
$meujogo->imprime_caracteristicas();

//esta linha daria um erro porque não se permite acessar um atributo private do objeto
//echo “<br>Jogadores: ” . $meujogo->min_num_jogadores;
//haveria que criar um método para que acesse os atributos private
$meujogo->imprime_jogadores_possiveis();

echo “<p>”;
$meujogo2 = new jogo(“GP Motoracer”, 27, 3, “Playstation II”,1,2);
echo “<b>” . $meujogo2->titulo . “</b>”;
$meujogo2->imprime_jogadores_possiveis();

Este código que utiliza a classe “jogo” dará como saída:

Jogo para: Playstation
Final Fantasy
2.5 (IVA não incluído)
Para um jogador

Para um jogador
GP Motoracer
De 1 a 2 Jogadores.

Fonte: http://www.criarweb.com/artigos/heranca-php5-terceira-parte.html

Deixe um comentário