|
|
|
||||||||||||||||||||||
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Parceiros - CSS para Web Design - S.O.S Designers - Slackware-Brasil - Crie seu Web site - Oficina da Net |
Herança em PHPFalaremos desta peculiar característica para fazer cópias independentes e personalizadas de classes já construídas, próprias da programação orientada a objectos A programação orientada a objectos tem um mecanismo chamado herança pela que qual se podem definir classes a partir de outras classes. As classes realizadas a partir de outra classe ou melhor dito, que derivam de outra classe, chamam-se classes derivadas.
As classes derivadas herdam todos os atributos e métodos da classe base, para além de poder ter tantos atributos e métodos novos como se desejem. Para ampliar o exemplo que temos tado a utilizar, a classe Caixa, vamos criar uma classe derivada chamada Caixa_tematica. Esta classe herda de caixa, mas tem um "tema", que é a descrição do tipo de coisas que metemos na caixa. Com isto podemos ter varias caixas, cada uma com coisas de um tema concreto. class Caixa_tematica extends Caixa{ var $tema; function define_tema($novo_tema){ $this->tema = $novo_tema; } } Nesta classe herdamos de Caixa, por tanto temos à nossa disposição todos os atributos e métodos da classe base. Também se definiu um novo atributo, chamado $tema, e um método, chamado define_tema(), que recebe o tema com o que se deseja etiquetar a caixa. Poderíamos utilizar a classe Caixa_tematica de maneira similar a como fazíamos com a classe Caixa original $minhacaixa_tematica = new Caja_tematica(); $minhacaixa_tematica->define_tema("Cabos e conectores"); $minhacaixa_tematica ->introduz("Cabo de rede"); $minhacaixa_tematica ->introduz("Conetor RJ45"); $minhacaixa_tematica ->mostra_conteudo(); Neste caso, o resultado que se obtém é parecido ao que se obtém para a classe base. Mas, quando se mostra o conteúdo de uma caixa, o mais interessante seria, que se indicara também o tipo de objectos que contem a caixa temática. Para isso, temos que redefinir o método mostra_conteudo(). Redefinir métodos em classes derivadas Redefinir métodos significa voltar a codifica-los, isto é, voltar a escrever o seu código para a classe derivada. Neste caso, temos que redefinir o método mostra_conteudo() para que mostre também o tema da caixa. Para redefinir um método, o único que devemos fazer é voltar a escrever dentro da classe derivada. function mostra_conteudo(){ echo "Conteudo da caixa de <b>" . $this->tema . "</b>: " . $this->conteudo; } Neste exemplo codificámos de novo o método inteiro para mostrar os dados completos. Nalgumas ocasiões é muito útil basear-se na definição de um método da classe base para realizar as acções da classe derivada. Por exemplo, para este exemplo concreto, temos de definir um construtor para a classe Caixa temática, no que também se inicie o tema da caixa. Como já existe um método construtor na classe base, não vale a pena reescrever o código de este, o melhor é chamar ao construtor que tínhamos definido na classe Caixa original, com o que se iniciarão todos os dados da classe base, e depois realizar a iniciação para os atributos da própria classe derivada. Para chamar a um método da classe pai dentro do código de um método que estamos a redefinir, utilizamos uma sintaxe como esta: function Caixa_tematica($altura=1,$grossura=1,$largura=1,$cor="preto",$tema="Sem classificação"){ parent::Caixa($altura,$grossura,$largura,$cor); $this->tema=$tema; } Aqui vemos a redefinição de construtor, da classe Caixa, para a classe Caixa_tematica. O construtor faz primeiro uma chamada ao construtor da classe base, através de uma referência a "parent". Depois inicia o valor do atributo $tema, que é especifico da Caixa_temática. Na mesma linha de trabalho, podemos redefinir o método mostra_conteudo() baseando-nos no que foi declarado para a classe base. O código ficaria assim: function mostra_conteudo(){ echo "Conteudo da caixa de <b>" . $this->tema . "</b>: "; parent::mosta_conteudo(); }
Autoria e outras referências sobre este artigo Dentro deste artigo: + 1 manual relacionado + 1 categoria relacionada
Manuais relacionados com este artigo Categorias relacionadas Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo: + Entrar em PHPComentários dos visitantes Os comentários dos visitantes são para ampliar a informação do artigo. Todos podem participar.
|
| Sobre nós | Copyright | Anuncie | Entrar em contato | <criarweb> |