De que se trata o artigo

Este artigo apresenta uma introdução ao recurso de Generics, demonstrando suas características e algumas simples formas de empregá-lo através do Delphi XE2, que traz consigo uma coleção de diversas classes do mesmo, como é o caso da TDictionary, que possibilita o emprego de HashTable nos projetos, uma estrutura constituída por pares de chave-valor.


Em que situação o tema é útil

Aumentar a produtividade, minimizar possíveis falhas de conversão de tipos em tempo de execução, ter uma maior flexibilidade na manipulação dos dados, dentre outras vantagens que podem ser obtidas ao empregar Generics com o Delphi XE2 e suas classes.

Generics e HashTable

Elaborar projetos que possibilitem um aumento da produtividade e redução de falhas é um dos objetivos de qualquer equipe de desenvolvimento. Um recurso presente no Delphi que auxilia na concretização desta meta é o Generics, onde tipos parametrizados podem ser empregados nas mais diversas situações com os mais variados fins. Este artigo apresenta uma breve introdução a este importante recurso, demonstrando algumas das principais classes presentes no Delphi para sua implementação, como é o caso da TDictionary, que por sua vez permite o emprego de HashTable, a estrutura de dados baseada em pares chave-valor, para otimizar pesquisas em grandes volumes de dados.

O desenvolvimento de Software é uma área que conta com uma diversidade de conceitos e recursos que na maioria dos casos possibilitam que aplicações destinadas a um mesmo fim sejam elaboradas das mais variadas formas, cabendo à equipe selecionar as que melhores se adéquem ao projeto em questão. Entretanto, implementar tecnologias que possibilitem a redução de falhas e facilitem o futuro processo de manutenção do Software sempre é uma boa prática. Um recurso interessante que foi adicionado ao Delphi a partir da versão 2009 e trouxe funcionalidades importantes é o Generics. Em síntese, este recurso permite o emprego de tipos parametrizados que possibilitam a elaboração de métodos, classes, registros e interfaces mais flexíveis. Na prática, em um método, por exemplo, um genérico é posteriormente substituído por um tipo, de forma semelhante ao processo que ocorre com os procedimentos e funções convencionais, onde os mesmos recebem os valores através dos argumentos, entretanto neste caso, eles já possuem seus tipos definidos, diferentemente do uso de Generics, que permite a criação de métodos genéricos onde os tipos são resolvidos em tempo de execução.

Normalmente, este recurso também é amplamente empregado para a elaboração de listas compostas por quaisquer tipos de objetos, organizando e auxiliando o processo de acesso aos mesmos, onde no Delphi a classe TList pode ser empregada para este fim.

Outra vantagem que pode ser obtida ao empregar Generics é com relação à redução de código fonte, afinal, muitas vezes nos projetos são criadas várias classes e métodos semelhantes apenas para a manipulação de tipos diferentes, uma tendência que pode ser eliminada com a utilização desta funcionalidade.

Outro recurso que pode ser facilmente empregado com o uso de Generics é o HashTable. Em síntese, HashTable pode ser definido como uma estrutura para o armazenamento de dados com base em uma função Hash, efetuando um mapeamento de chaves para valores. Este recurso permite uma otimização em pesquisas com grandes volumes de dados. No Delphi, a classe responsável por implementar pares baseados em chave-valor é a TDictionary. Vale à pena salientar que uma função Hash, também conhecida como função de dispersão unidirecional, pode receber dados de diversos tamanhos como entrada e retornar um resultado de tamanho fixo de bits, onde a saída recebe a denominação de Hash. Algumas destas funções também podem ser utilizadas para criptografar informações.

Como é possível observar, o emprego de Generics pode trazer diversos benefícios no desenvolvimento das aplicações, tornando-o um recurso interessante para ser adotado nas mais variadas situações.

Generics

Como mencionado, Generics são parâmetros que permitem uma maior flexibilidade no desenvolvimento das classes, métodos e etc. Seu uso no Delphi XE2 pode ser efetuado basicamente através da inclusão das Units System.Generics.Defaults, System.Generics.Collections e SysUtils na cláusula Uses do formulário em questão, evidentemente dependendo das classes que serão empregadas e das necessidades do projeto. A Tabela 1 apresenta algumas das principais classes encontradas na Unit System.Generics.Collections.

Classe

Descrição

...
Quer ler esse conteúdo completo? Tenha acesso completo