Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 07 de Junho de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
18 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Dicas]  Polimorfismo
Publicado por rboaro : Quinta, Fevereiro 16, 2012 - 04:26 GMT-3 (1233 leituras)
Comentários 2 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Felipe Caputo Já li vários artigos na internet explicando sobre polimorfismo sempre utilizando exemplos abstratos para explicar uma das principais características da orientação a objetos. O principal exemplo que eu acompanhei
utiliza-se de animais para exemplificar o que é e como funciona o polimorfismo. Geralmente é mostrado algo como o exemplo abaixo.

TAnimal = class
public Locomover; virtual; abstract;
end;

TMamifero = class(TAnimal)
public Locomover; override;
end;

TMorcego = class(TMamifero)
public Locomover; final;
end;

TLeao = class(TMamifero)

end;

TAnimal -> Nenhuma Implementação

procedure TMamifero.Locomover;
begin
inherited;
Andar;
end;

procedure TMorcego.Locomover;
begin
//inherited;
Voar;
end;

Agora vamos entender o que feito em cada exemplo. Na classe TAnimal o método Locomover foi implementado com as diretrizes virtual e abstract. Geralmente, os programadores imaginam que todos método virtual tem q ser abstrato mas, na verdade temos que entender que a diretriz virtual garante o método poderá ser sobrescrito (override) nas classes descendentes e a diretriz abstract diz ao compilador que o método abstrato não será implementado. Nota: Se um método for deixado como abstrato e não for implementado nos filhos e o método for chamado irá gerar um abstract error, isto é, invocação de um método não implementado.
Quanto a classe TMamífero o método Locomover foi implementado e sobrescrito (override) . A sobrescrita garante que tudo implementado no pai seja executado no filho (inherited) . Caso você não queira que o método do pai seja executado, você pode comentar ou excluir o inherited do método sobrescrito.
Já a diretriz final garante que os descendentes daquele método não poderão mais sobrescrevê-lo. Outra diretriz importante de relembrar é a reintroduce que permite que o método tenha uma assinatura diferente isto é, um resultado ou parâmetros diferentes.
Como eu havia dito anteriormente, a explicação abstrata a ter noção do que é cada um deles, mas na prática, como seria a implementação de classes com essas diretrizes. Vamos imaginar implementar classes para gerenciar as pessoas cadastradas no sistema. Teríamos um código, de uma forma mais simples:

TPessoa = class
public
property Nome: string read FNome write FNome;
procedure Gravar; virtual; abstract;
end;

TPessoaFisica = class(TPessoa)
public CPF: string read FCPF write FCPF;
procedure Gravar; override;
end;

TPessoaJuridica = class(TPessoa)
public CNPJ: string read FCNPJ write FCNPJ;
procedure Gravar; override;
end;

TFornecedor = class(TPessoaJuridica)
public
procedure Gravar; final;
End;

TCliente = class(TPessoaFisica)
public
procedure Gravar(Especial: Boolean); reintroduce;
end;

Uma outra diretriz de compilação que precisa ser mencionada é a sobrecarga (overload) que é utilizada para ter mais de um método com o mesmo nome e resultado ou parâmetros diferentes.

Fica aí a dica e em breve volto com mais dicas.
Felipe Caputo


Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: brunosouzadev (brunosouzadev@hotmail.com) : Fev 16, 2012 - 04:36
(Informações sobre o membro | Enviar uma mensagem)
Parabéns, muito bom o conteúdo.


por: Caduzera (edu_carlos@ig.com.br) : Fev 17, 2012 - 09:38
(Informações sobre o membro | Enviar uma mensagem) http://
Simples e bem explicado. Parabéns.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados