Fala ai Radizeiros e Radizeiras, tudo bem com vocês?
É muito comum durante o desenvolvimento a necessidade de adicionarmos novas funcionalidades, a métodos já existentes no Delphi, e em seus componentes, como por exemplo a validação de e formatação de dados.
Muito optam a trabalhar com herança, ou até mesmo a alterar diretamente no fonte do componente, e essas não são boas práticas.
Desde a versão 2006 do Delphi foi adicionado o suporte a Class helper, dando a possibilidade de adicionarmos novos comportamentos aos componentes.
O que é class helper?
Uma classe ou um record helper é um tipo que – quando associado a outra classe ou registro – introduz nomes de métodos e propriedades adicionais que podem ser usados no contexto do tipo associado (ou seus descendentes). Os helpers são uma maneira de estender uma classe sem usar herança, o que também é útil para registros que não permitem a herança. Um helper simplesmente introduz um escopo mais amplo para o compilador usar ao resolver identificadores. Quando você declara uma classe ou um record helper, você declara o nome do helper e o nome do tipo que vai estender com o helper. Você pode usar o helper em qualquer lugar onde possa usar legalmente a classe ou o record. O escopo de resolução do compilador então se torna o tipo original, mais o auxiliar.
Outro diferencial é que Class Helpers não se aplicam somente a componentes. Eles também permitem modificar classes de domínio criadas pelo desenvolvedor, adicionar métodos a estruturas do tipo record e tipos primitivos . Nesse último caso, no entanto, não é possível adicionar propriedades.
Neste post vamos fala mas do incomodo, uma coisa que tem que despertar em você como desenvolvedor é o incomodo quando o código não está lega, o código está feio, não está legível, isso tem que começar a te incomodar.
Observe o código a baixo.
procedure TForm1.ButtonClick(Sender: TObject); begin Edit3.Text := FloatToStr(Calculadora.Soma.Operacao(StrToCurr(Edit1.Text), StrToCurr(Edit2.Text))); end;
Ao olhar esse código isso me incomoda muito, e você não sabe o quanto isso incomoda, é casting de de variáveis, é quando você tem que trocar o tipo de uma variável, de um retorno, como estamos fazendo no código acima.
Eu procuro deixar meus códigos o mais claro possivel, existem inúmeras formas de esta deixando seu código mais legível.
Vamos ver na prática de como trabalhar com class helper e como podemos usa-las para deixar nossos códigos mais legíveis.
No nosso código acima estamos convertendo de float para string, e de string para currency, na transformação de float para string, porque o float já possui algumas propriedades dentro dele.
Um dos retornos do float é o ToString, ou seja, ele já faz a conversão sem precisar fazer um casting dentro do meu código.
Porem eu tenho no edit um text que é no tipo TCaption.
Ele não possui nada agregado, então teríamos que fazer esse casting na mão, só que é ai que entra as classes helpers, já pensou em criar o seu proprio TString para o TCaption? Você pode criar agora.
Na classe calculadora, iremos criar uma classe helper.
TCaptionHelper = record helper for TCaption function ToCurrency : Currency; end; ... function TCaptionHelper.ToCurrency : Currency; begin Result := StrToCurr(Self); end;
No código acima estamos criando um helper para classe TCaption, e dentro de nossa classe criamos os métodos que quisermos, só não podemos criar propriedades, não podemos criar novos atributos a classe, eu posso criar métodos para trabalhar com atributos já existentes.
Observe no codigo que estamos convertendo um texto, que é o Self, para o tipo Currency, e o nosso novo método retorna um Currency.
Agora no nosso primeiro código nós iremos fazer uns pequenos ajustes.
Com essa implementação o próprio compilador já identifica essa implementação para nós.
Agora só alterarmos nosso código e veja como ele ficou.
procedure TForm1.ButtonClick(Sender: TObject); begin Edit3.Text := Calculadora.Soma.Operacao(Edit1.Text.ToCurrency, Edit2.Text.ToCurrency).ToString; end;
Agora temos toda nossa operação de forma continua, não preciso ficar fazendo casting dentro da minha camada de visão, isso não é legal, você tem que entregar para quem for trabalhar com seu formulário, as suas interfaces, seus métodos já funcionando perfeitamente, sem que tenha que ser alterado nada, ou ficar fazendo casting, as tecnicas de orientação a objeto estão ai para lhe auxilarem.
Esse post é mais um que faz parte da Certificação especialista em programação orientada a objetos.
A Certificação Especialista Orientada a Objetos dará a você a oportunidade de melhorar seu software, otimizar o seu tempo e te dar a possibilidade de atender melhor os seus clientes. Conhecer a fundo esse paradigma e utilizar todos os seus benefícios irá facilitar muito a sua vida quando houver necessidade por parte de um cliente de um update rápido ou resolver um problema.
CLIQUE AQUI PARA SABER MAIS SOBRE A CERTIFICAÇÃO ESPECIALISTA EM PROGRAMAÇÃO ORIENTADA A OBJETOS