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.