Structures - Classes de brincar
Introdução
Para todas aquelas aplicações em que achamos que ter uma classe é demais ou apenas para aqueles que gostam simplesmente de catalogar e organizar, as Structures, ou estruturas, são o tipo de dados composto ideal. Podemos basear uma noção de Structures numa classe, senão reparem:
É instanciável? | Sim. |
Podemos declarar o constructor? | Claro. Necessita apenas, obrigatoriamente, de possuír pelo menos um argumento. |
Pode abrigar variáveis? | Sem dúvida. |
Pode abrigar propriedades? | Porque não? |
Pode abrigar métodos? | Perfeitamente. Até estáticos. |
Posso deixar de usar classes? | Não. São duas coisas diferentes. |
Na verdade, existem algumas coisas úteis que as Structures não podem fazer, como herdar de outras. As classes são elementos vitais e não se deve considerar a sua substituição por Structures. As Structures devem ser usadas quando existem pequenas necessidades de arrumação e/ou organização que não justifiquem a criação de uma classe.
Alguns exemplos de utilização
Agrupamento de dados
Public Structure Coordenada
Public X As Integer
Public Y As Integer
Public Descrição As String
End Structure
Private Sub NovaCoordenada()
Dim Coor As New Coordenada
Coor.Descrição = "Pixel preto"
Coor.X = 100
Coor.Y = 100
End Sub
Agrupamento de dados central
Public Structure EsteComputador
Private Nulo As Boolean 'apenas para passar no compilador
Public Shared Computador As String
Public Shared IP As Net.IPAddress
Public Shared Estado As String
End Structure
Private Sub EstadoDoPC()
Dim Comp As String = EsteComputador.Computador
Dim IP As String = EsteComputador.IP.ToString
Dim Estado As String = EsteComputador.Estado
End Sub
Agrupamento de dados com um método, propriedade e constructor
Public Structure Pessoa
Public Nome As String
Public Apelido As String
Private Idade As Integer
Public Morada As String
Public Property AnoNascimento() As Integer
Get
Return Now.Year - Idade
End Get
Set(ByVal value As Integer)
Idade = Now.Year - value
End Set
End Property
Public Function NomeCompleto() As String
Return Nome & Space(1) & Apelido
End Function
Public Sub New(ByVal NomePessoa As String)
Nome = NomePessoa
End Sub
End Structure
Private Sub NovaPessoa()
Dim Homem As New Pessoa("José")
Homem.Morada = "Rua dos pepinos"
Homem.AnoNascimento = 1986
Homem.Apelido = "Funil"
MostraNomeCompleto(Homem)
End Sub
Private Sub MostraNomeCompleto(ByVal Homem As Pessoa)
MsgBox(Homem.NomeCompleto)
End Sub
Por que é a arrumação tão referenciada?
Utiliza-se muitas vezes a referência à arrumação porque tudo o que está dentro de uma Structure está coberto pelo Intellisense1, o que ajuda bastante a referência aos elementos da Structure. Para além disso, à semelhança das classes, e porque uma Structure é instanciável, podemos armazenar n instâncias com dados diferentes em listas ou por outros meios, tornando as Structures o tipo de dados ideal para uma "colecção de colecções de dados".