Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Artigo Clube Delphi Edição 31 - Polimorfismo aplicado
Artigo da Revista Clube Delphi Edição 31.

Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.
Polimorfismo aplicado
Técnicas de orientação a objetos na prática
Além de desmistificar um dos conceitos mais interessantes da orientação a objetos, esse artigo irá discutir e propor uma metodologia para a implementação de um cenário bem comum em aplicações comercias: a integração com impressoras fiscais.
Conceitos
Chamamos de polimorfismo a capacidade de tratar objetos de tipos diferentes de uma mesma maneira, desde que eles tenham a mesma superclasse. Isso é muito comum na programação do dia-a-dia. Embora não percebamos, usamos essa abordagem constantemente, induzidos pela própria arquitetura da VCL.
Sempre que chamamos o método Free de um determinado objeto, por exemplo, estamos usando o polimorfismo para o liberarmos de forma correta. Para entendermos isso melhor, vamos recorrer ao código fonte da VCL e analisar um trecho da classe TObject, definida na unit System.pas:
TObject = class
{...}
procedure Free;
destructor Destroy; virtual;
end;
{...}
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end;
Como podemos ver, o método Free é estático e o "destructor" Destroy é virtual (uma explicação sobre mecanismos de chamada de métodos será vista mais à frente). O método Free verifica se a própria instância encontra-se assinalada e depois chama o Destroy. Este é normalmente reimplementado nas classes descendentes de TObject para assegurar a desalocação da memória previamente reservada por elas.
Quando chamamos o método Free, sempre será executado o comportamento codificado na classe TObject, porém com Destroy é diferente: este comportamento será o da codificação da classe corrente.
Mecanismos de chamada
No que diz respeito ao modo de chamada (dispatch), um método pode ser classificado em static, virtual ou dynamic. Vamos ver uma pequena descrição de como funciona cada um deles:
static – Esse é o padrão para todos os métodos que não especificarem um modificador. Esses métodos são linkados à referência (variável) em tempo de compilação, por isso são bem mais rápidos que os do tipo "
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Fernandovm
Borland Delphi Certified Developer e detém oito certificações BrainBench em várias áreas de desenvolvimento de software. Palestrante da Borland Conference Brasil (BorCon 2002), é criador e mantenedor do projeto TDSExpress (www.tdsexpress.hpg.com.br). Atualmente ministra cursos de Delphi avançado e p...



