Criar Web, manuais e recursos para desenvolvimento web
Manuais
Programas
FAQS
Diretório
Comunidade
  Inicio > Manuais > Programação em PHP
SEÇÕES
Manuais relacionados
+Programação em PHP
Categorias
+PHP

Índice do Manual Programação em PHP
+ Introdução à programação em PHP
+ Breve história do PHP
+ Tarefas Principais do PHP
+ Instalação de PHP no nosso servidor
+ Configuração de PHP com Apache em Windows, como CGI
+ Configuração de PHP como módulo de Apache em Windows
+ Instalação de MySQL em Windows
+ Introdução à sintaxe PHP
+ Variáveis em PHP
+ Mudança de tipo das variáveis em PHP
+ Variáveis de sistema em PHP
+ Tabelas ou Arrays em PHP
+ Trabalho com tabelas ou arrays em PHP
+ Cadeias
+ Funções
+ Mais sobre funções: passagem de parâmetros
+ Mais sobre funções: Retorno de valores
+ Controlo do fluxo em PHP: Condições IF
+ Controlo do fluxo em PHP: Loops I
+ Controlo do fluxo em PHP: Loops II
+ Operadores
+ Passagem de variáveis pela URL
+ Processar variáveis de formulários
+ Autochamada de páginas
+ Utilização de cookies
+ Sessões I
+ Sessões II
+ Trabalhar com bases de dados em PHP
+ Inserção de novos registos
+ Selecção e leitura de registos
+ Actualização de um registo
+ Eliminação de um registo
+ Subir uma aplicação PHP ao servidor
+ Colocar os ficheiros PHP fora do directório de publicação
+ Subir uma base de dados ao servidor de Internet
+ Subir uma base de dados MySQL vazia ao servidor
+ Subir uma base de dados MySQL com a estrutura e os dados
+ Migrar uma base de dados a MySQL
+ Programação orientada a objectos em PHP
+ Construtores em PHP
+ Herança em PHP

Descrição dos capítulos

Parceiros
- CSS para Web Design
- S.O.S Designers
- Slackware-Brasil
- Crie seu Web site
- Oficina da Net


Herança em PHP

Falaremos 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

Manuais relacionados com este artigo
Dentro de Programação em PHP

Categorias relacionadas
Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo:
+ Entrar em PHP


Comentários dos visitantes
Os comentários dos visitantes são para ampliar a informação do artigo. Todos podem participar.
Acrescentar um comentário do artigo Acrescentar um comentário do artigo



Sobre nós | Copyright | Anuncie | Entrar em contato <criarweb>

Hospedado por Hostnet Hospedagem de Sites