Classe Abstrata PDF Imprimir E-mail
Programação Orientada a Objetos
Escrito por José Vicente   
AddThis Social Bookmark Button

Olá Pessoal,

Mais uma vez vamos falar de conceito que é sempre importante, na verdade acho que fundamental para uma boa arquitetura do seu sistema,
principalmente se você trabalha com um um bom FrameWork para desenvolvimento. Uma dica é sempre tentar arquitetar o uso de suas classe
da melhor forma possível e o que seria ''- Da melhor forma possível?''

Bem, creio eu que uma classe deve ser pensada ou projetada antes de ser criada, ao envez de se criar e ir sempre adaptando para o uso

conforme sua necessidade que não faz parte das boas práticas da modelagem de sistemas. Mas afinal, pra que serve essa tal classe abstrata?

É uma classe que não pode ser instanciada ou seja, se você tentar instanciar um objeto da mesma fazendo uso do operador NEW ocorrerá um

erro crítico, avisando que o objeto não pode ser criado. Então como usamos? e Para que Usamos? Respondendo primeira pergunta!

- Usamos classe abstrata com o extends, ou seja é uma herança, e isso faz com que a subclasse herde o que for necessário de acordo com o
escopo e visibilidade, que será um assunto para um novo artigo corrento? Abaixo segue um exemplo;

// Criando uma classe abstrata //
abstract class ClassePessoaAbstrata

{

// Força a classe que extende (a subclasse) a definir esse método
abstract protected function pegarIdade();
abstract protected function
pegarCidadeNatal( $prefixo );

// Método comum, este método fica livre de obrigação em sua implementação na subclass, por não ser abstrato //
public function imprimir() {
print
$this->pegarValor();
}
}

O que motiva o uso de uma classe abstrata?

 

 

- Bem, quando houver a necessidade de que algo seja implementado, ou seja, tenha realmente obrigatoriedade na implementação, como pode
ver no exemplo acima, fica bem claro que para essa classe de exemplo, é fundamental e deve ser implementado pela sub class os métodos pegarIdade() e pegarCidadeNatal( $prefixo).

- Note que os métodos só possuem assinaturas ou seja, devem ser implementados pela subclass e assim compor seu corpo e a melhor formar de
coletar e possivelmente passar os dados obrigatórios.

- A classe que tiver pelo menos um método abstrato também decve ser abstrata.

- Na implementação ou definição dos métodos nas classes que herdarem devem usar a mesma visibilidade definada na classe pai, trocando em
miudos, se definir um método abstrato como protected este deverá ser protected ou public mas nunca private.

// Usando uma Classe Abstrata //
class ClassePessoaConcreta extends ClassePessoaAbstrata

{
// Métodos sendo implementados  //

protected function pegarIdade() {
return
"
ClassePessoaConcreta";
}

public function
pegarCidadeNatal( $prefixo ) {
return
"{$prefixo}
ClassePessoaConcreta";
}
}

mais dúvidas ou quer saber mais detalhes, envie sua dúvida!

Última atualização em Sex, 22 de Julho de 2011 09:13