Generics

Os tipos genéricos(Generics) possuem como proposito a criação de conjuntos que tenha consistência de tipos. Dessa forma podemos usar várias classes implementadas por essa namespace, em particular a classe List que irei relatar nesse artigo. A classe List quando declarada possuirá um tipo especifico e o compilador garantirá a consistência de tipos. Uma List funciona como uma matriz, cujo tamanho é aumentado dinamicamente quando necessário, dessa forma quando criamos um objeto List não precisamos definir quantos objetos ele conterá. Os objetos do tipo List, possuem várias propriedades e métodos, nos quais citarei alguns:

  • Capacity : quantidade de elementos que uma List pode conter
  • Count : quantidade de elementos atualmente na matriz
  • Add : método público para inclusão de um objeto em List
  • Clear : remove todos os elementos de List
  • Exists : determina se um elemento existe em List
  • Sort : Ordena a list
  • Remove: remove a primeira ocorrencia de um objeto especifico
  • Reverse : inverte a ordem dos elementos
  • To array: copia os elementos de List em uma nova matriz

Para exemplificar a teoria acima, irei apresentar o seguinte código abaixo:

 
Module Module1

Sub Main()

Dim listaDeClientes As New List(Of Cliente) cria um objeto do tipo lista de cliente

Console.WriteLine("Lista de Clientes" & vbNewLine)

For i As Integer = 0 To 5

listaDeClientes.Add(New Cliente(i, "Regilan")) adiciona clientes a lista de cliente

Console.WriteLine("ID = " & listaDeClientes(i).ID & vbNewLine & "Nome = " & listaDeClientes(i).Nome)

Next

System.Threading.Thread.Sleep(3000)

End Sub

End Module

classe cliente

Public Class Cliente

atributos

Dim intID As Integer

Dim strNome As String

construtor

Public Sub New(ByVal ID As Integer, ByVal Nome As String)

MyClass.intID = ID

MyClass.strNome = Nome

End Sub

propriedades

Public Property ID() As Integer

Get

Return intID

End Get

Set(ByVal value As Integer)

intID = value

End Set

End Property

Public Property Nome() As String

Get

Return strNome

End Get

Set(ByVal value As String)

strNome = value

End Set

End Property

End Clas
            

Dando continuidade, a Generics irei escrever agora sobre as classes: Fila(Queue) e Pilha(Stack).

Uma Fila, representa um conjunto do tipo onde o primeiro a entrar é o primeiro a sair, é como se fizéssemos uma analogia com uma fila de banco onde o primeiro cliente deve ser o primeiro a sair dela para ser atendido. Vejamos abaixo alguns métodos e propriedades de uma fila:

  • Count: Quantidade de Elementos de uma Fila
  • Clear: Remove todos os objetos da fila criada
  • Contais: verifica se um elemento existe na fila
  • Enqueue: adiciona um objeto ao final da fila
  • Dequeue: remove e retorna o objeto do inicio da fils
  • Peek: retira o objeto do começo da fila sem removê-lo

Por outro lado, uma pilha é um conjunto do tipo onde o último a entrar é o primeiro a sair, tomando um exemplo real é como se tivéssemos uma pilha de pratos da feijoada do domingo para lavar, dessa forma o último prato adicionado será o primeiro a sair dela para ser lavado. Uma pilha possui métodos semelhantes a de uma fila, sendo que os dois principais são os métodos PUSH e POP respectivamente utilizado para inclusão e remoção de objetos na pilha.

Para exemplificar o que escrevi acima desenvolvi o seguinte código abaixo tomando como base a classe cliente desenvolvida na implementação da List. Neste exemplo criei dois objetos que são uma PILHA e uma FILA de cliente. Vejamos abaixo:

 
Module Module1

Sub Main()

Dim filaDeClientes As New Queue(Of Cliente) cria um objeto do tipo fila de cliente

Console.WriteLine("Fila de Clientes" & vbNewLine)

For i As Integer = 0 To 5

filaDeClientes.Enqueue(New Cliente(i, "Regilan")) adiciona clientes a fila de cliente

Next

Dim enuFila As IEnumerator(Of Cliente) usado para enumerar os objetos do conjunto

enuFila = filaDeClientes.GetEnumerator

While enuFila.MoveNext

Console.WriteLine("ID = " & enuFila.Current.ID & " Nome = " & enuFila.Current.Nome)

End While

Dim pilhaDeClientes As New Stack(Of Cliente) cria um objeto do tipo pilha de cliente

Console.WriteLine()

Console.WriteLine("Pilha de Clientes" & vbNewLine)

For i As Integer = 0 To 5

pilhaDeClientes.Push(New Cliente(i, "Regilan")) adiciona clientes a pilha de cliente

Next

Dim enuPilha As IEnumerator(Of Cliente)

enuPilha = pilhaDeClientes.GetEnumerator retorna um enumerador para a cole‡Æo de pilha cliente

While enuPilha.MoveNext

Console.WriteLine("ID = " & enuPilha.Current.ID & " Nome = " & enuPilha.Current.Nome)

End While

System.Threading.Thread.Sleep(3000)

End Sub

End Module
            

Essas são algumas das classes implementadas pela System.Collections.Generics que possuem outras clases como LinkedList, HashTable, entre outras.