Tabela de Conteúdos
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
Porque é 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 por o 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"