Ferramentas de Utilizador

Ferramentas de Site


dev_net:vb.net:structures

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 estructuras, 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, obrigatóriamente, 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"

dev_net/vb.net/structures.txt · Esta página foi modificada pela última vez em: 2018/05/14 21:37 (Edição externa)