Ola Pessoal, a partir de agora o blog ganhou um endereco oficialwww.geeks-report.comAinda e possivel acessa-lo pelo geeksreport.blogspot.com, mas isso causa alguns erros de carregamento nas opcoes de seguidores das redes sociais.Tambem esta disponivel o comentario de usuarios anonimos, portanto comentem! IntroducaoDando continuidade ao basico de orientacao a objetos emDelphi, neste topico abordaremos outros aspectos que servem de base para OO,como diretivas de parametros var, out e const e as clausulas inherited,overload, class function e class procedure.Diretivas de parametrosA passagem de parametros para uma funcao ou procedimentopode ser acompanhada de uma diretiva, essa diretiva e responsavel por umcomportamento diferenciado do que estamos acostumados, muitas vezes issofacilita a resolucao de problemas e em outros casos e estritamente necessario,sem elas nao poderiamos desenvolver solucoes para problemas que utilizamrecursao.Cara diretiva, var,out e const, possui uma propriedade que atorna unica, e notorio que a utilizacao de qualquer uma delas seja feita deforma consciente, um var em um parametro, pode acelerar a execucao de um codigoou torna-lo inutil.Passagem por referencia varNo geral, seja no Delphi ou qualquer outra linguagem, apassagem de parametros e feita por meio de uma copia do valor, isso significaque determinado valor sofre uma copia para outra area de memoria completamentediferente, isso torna possivel a manipulacao desses valores sem alterar o valororiginal passado a procedure ou function, isso e extremamente util na maioriadas vezes, porem, em alguns casos se faz necessario que a alteracao sofridainternamente no valor passado ao metodo, seja refletida fora do metodo, paraisso utilizamos a diretiva var, exemplo abaixo. procedure CalculaImposto(var AValorTotal: Currency);Existe uma diferenca significativa em desempenho em relacaoa passagem de parametros de forma convencional e a passagem utilizando adiretiva var, isso acontece porque no meio convencional existe um custo deprocessamento despendido para a copia do valor passado para outra area dememoria, esse custo tende a ser infimo na maioria dos casos, mas em casos ondea variavel de armazenamento tiver um valor relativamente grande em Bytes, essecusto tende a ser muito alto. Outra questao que devemos lembrar e que apesar deinfimo esse custo de copia nunca deixa de existir, logo, comandos de repeticaotendem a mutiplicar esse custo infimo N vezes, o que dependendo do caso torna perceptivela diferenca de desempenho, essas diferencas sao mais faceis de serem reparadasem aplicacoes que exigem alto grau de processamento ou uma resposta muitorapida, onde passamos a considerar milissegundos de processamento, um exemplo deuma aplicacao dessas sao as que utilizam imagens, como o envio de stream emtempo real, 200ms de atraso e algo significativo ja que em tese um segundo deveser preenchido com algo em torno de 24 quadros, o que nos leva a um tempo de processamentode aproximadamente 41,66ms por imagem a ser processada.A diretiva var, na realidade e uma facilitacao de umponteiro, todo o valor modificado dentro do metodo em questao e automaticamente refletido na variavelque representa aquele determinado espaco de memoria fora do metodo ex.Primeiro caso:procedure CalculaImposto(var AValorTotal: Currency);begin AValorTotal:= 100;end;Segundo caso:procedure CalculaImposto(AValorTotal: Currency);begin AValorTotal:= 100;end;Chamada da procedurevar Total:Currency;begin Total := 200; CalculaImposto(Total); ShowMessage(CurrToStr(Total));end; No primeiro caso o valor exigido no ShowMessage seria"100", enquanto no segundo caso o valor exibido seria"200", como podemos