Artigo Clube Delphi 93 - Generics no RAD Studio 2007

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Artigo da Revista Clube Delphi Edição 93.

Esse artigo faz parte da revista Clube Delphi Edição 93. Clique aqui para ler todos os artigos desta edição

Novidades

Generics no RAD Studio 2007

Entendendo e utilizando Generics em suas aplicações .NET

 

Generics é um termo utilizado para se definir estruturas com tipos genéricos, para representar classes, métodos de classe etc; podendo os mesmos serem parametrizados com qualquer tipo de dado. O conceito do Generics já existe em linguagens como Java e C++. Em C++ o recurso é conhecido como templates. Todos nós já tivemos sérios problemas em escrita de código de forma genérica; principalmente todos os amantes de POO. Quando procuramos escrever um código portável às vezes nos deparamos com situações onde precisamos representar certo tipo de dado, porém esse tipo precisa ser modificado em runtime de acordo com a situação.

Algumas pessoas podem até achar que generics é algo parecido com instanciamento de classes descendentes em tipos ancestrais ou algo similar feito com interfaces, mas você poderá conferir em nosso artigo que esse maravilhoso recurso vai muito além do que o programador Delphi está acostumado. Ele irá simplesmente transformar a vida de todos os programadores em Delphi.

Esse recurso atualmente está disponível apenas para plataforma .NET. Já respondendo a pergunta de quando estará disponível para Win32, ainda não temos nada definido pela CodeGear. Mas já sabemos que em breve o recurso estará disponível para a nossa querida plataforma Win32.

 

Mais como assim? Qualquer tipo de dado?

Imagine que a partir de agora os tipos de dados de seus parâmetros, por exemplo, podem ser definidos em runtime, acredita? É verdade caros amigos delphianos, e é exatamente isso que nos dará a flexibilidade para fazer coisas absurdas em nossa linguagem.

Para ficar mais claro vamos criar uma nova aplicação utilizando o menu File|New>VCL Forms Application – Delphi for .NET no CodeGear RAD Studio 2007 e desenhar a interface da Figura 1. Salve o formulário como “uPrincipal.pas” e modifique seu Name para “frmPrincipal”. O projeto salve como “Generics.dpr”. Em seguida vamos adicionar uma nova Unit utilizando o menu File|New>Other>Delphi for .NET Projects>New Files>Unit, para definir a estrutura presente na Listagem 1 e salve-a como “untPessoa.pas”.

Agora imaginem o seguinte exemplo: iremos definir um TList para manipular objetos. Essa classe dá suporte a qualquer tipo de objeto em uma mesma lista, porém temos muitos problemas de desempenho através de conversões implícitas. Para recuperar as informações da lista precisamos sempre utilizar o recurso de typecast para manipular os objetos, além disso, se definirmos uma lista, por exemplo, para manipular objetos de uma classe chamada TPessoa não conseguimos garantir que serão inseridos apenas objetos derivados dessa classe. Com isso podemos inserir qualquer objeto em uma lista do tipo TList e como não temos restrição do tipo adicionado se fizermos alguma besteira, só vamos saber em runtime no momento de manipular o objeto através do typecast.

 

Figura 1. Exemplo de tela para teste da classe TList

 

Listagem 1. Definição da classe TPessoa

unit untPessoa;

 

interface

  type

 

  TPessoa = class

  private

    FNome: string;

  public

    constructor Create(PNome:string);

    procedure setNome(const Value: string);

    property Nome:string read FNome write setNome;

  end;"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?