msdn13_capa.gif

Clique aqui para ler todos os artigos desta edição

Trabalhando com Collections

por Thiago J. Mônaco

Este artigo discute

Este artigo usa as seguintes tecnologias:

·          Criação de Collections

·          Vantagens de uso de Collections

VB.NET, C#

 

Download:

Fonte_Collections.zip (18KB)

Chapéu

Collections

 

 

Quando trabalhamos com qualquer tipo de aplicação nos deparamos com a necessidade de manipular objetos semelhantes ou até mesmo que tratam de um mesmo assunto. O objetivo desse artigo é mostrar como trabalhar com Collections nas aplicações, e desta forma facilitar e organizar os objetos.

 

O que são Collections e suas Vantagens

Collections é uma maneira estruturada de agrupar e gerenciar objetos de tipos semelhantes. Podemos agrupar e gerenciar objetos de qualquer tipo em uma Collection do tipo Object e assim, passamos a utilizar as vantagens de se trabalhar com esta estrutura. É claro que uma Collection deste tipo faz com que tenhamos um processamento adicional para cada elemento existente, pois será necessário realizar as conversões de tipos de dados que acabam afetando a performance da Collection.

Também é possível trabalharmos com Collections tipadas, garantindo uma melhor performance da aplicação. Esse tipo de Collection trás grandes vantagens, pois trabalham diretamente com os tipos de dados desejado. Assim, a própria Collection se encarregará de fazer a validação de tipo para cada elemento adicionado a mesma. Alguns exemplos de Collections tipadas podem ser encontradas no namespace System.Collections.Specialized.

 

Onde utilizar Collections

Existem diversas situações para se trabalhar com Collections. Basicamente podemos utilizá-las sempre que desejemos agrupar determinados objetos para facilitar o gerenciamento. Muitas vezes acabamos trabalhando com Collections e nem percebemos isso. Alguns exemplos clássicos são:

 

·         Collections contendo os controles existentes em um Windows Forms. Pode ser acessada através de Me.Controls (Visual Basic .NET) ou this.Controls (C#);

·         Collections contendo as DataTables existentes em um DataSet; acessível em myDataSet.Tables;

·         Collections contendo os DataRows existentes em uma DataTable; myDataSet.Tables(“myTable”).Rows (Visual Basic .NET) ou myDataSet.Tables[“myTable”].Rows (C#).

 

É claro que apesar do .NET Framework fornecer uma quantidade enorme de Collections pré-definidas, podemos encontrar determinada situação onde necessitamos de uma Collection customizada.

 

Criando Collections customizadas

Imagine que em determinado ponto da aplicação é preciso manipular informações de Funcionários de uma empresa. Como primeira solução pensaremos em utilizar um DataSet para fazer este agrupamento e manipulação. No entanto, mostrarei como criar a Collection customizada para realizar este trabalho.

Abra o Visual Studio .NET, selecione File / New Project, selecione a liguagem de programação desejada e crie um projeto do tipo Windows Application chamado myCollection. Defina o diretório onde o projeto será criado e clique em OK para criar a aplicação.

Crie uma classe que conterá a estrutura para manipular os dados do Funcionário. Abra o Solution Explorer (CTRL + ALT + L), clique com o botão direito no projeto e selecione a opção Add / Add Class. Nomeie-o como clsFuncionario.vb ou clsFuncionario.cs de acordo com a liguagem escolhida e clique no botão Open. Codifique a classe clsFuncionario de acordo com a Listagem 1.  Note a implementação do recurso de definição de propriedades de leitura e escrita, realizada através da utilização de Get/Set. Este recurso permite recuperar ou definir o valor de determinada variável ou objeto. Sua utilização ocorre da seguinte maneira: Caso a propriedade seja atribuida a determinada variável/objeto, é automaticamente disparado o Get da propriedade, retornando assim o valor armazenado. Caso uma variável/objeto seja atribuída a determinada propriedade, é executado o Set, fazendo com que o valor seja alterado.

 

Listagem 1. Codificando a classe clsFuncionario

Visual Basic .NET

 

Public Class clsFuncionario

 

...

Quer ler esse conteúdo completo? Tenha acesso completo