Compartilhar via


Adicionando propriedades a uma classe

Nesta lição, você aprenderá como adicionar propriedades à classe que você criou na lição anterior.

Em uma lição anterior, Examinar mais detalhadamente: Noções básicas sobre propriedades, métodos e eventos, você aprendeu que todos os objetos têm atributos e que as propriedades representam atributos.Na lição anterior, você criou uma classe Persons que representa uma pessoa. Pessoas têm atributos, como nome e idade, portanto, a classe Persons precisa de propriedades para representar esses atributos.

Propriedades podem ser adicionadas a uma classe de duas maneiras: sistema autônomo a campo, or sistema autônomo a procedimento de propriedade.Você também pode determinar como uma propriedade funciona usando os modificadores Public, ReadOnly ou WriteOnly para a propriedade.

Campos e Procedimentos de Propriedade

Os campos são apenas variáveis públicas dentro de uma classe que podem ser definidas ou lidas de fora da classe.Eles são úteis para as propriedades que não precisam ser validadas. Por exemplo, um valor Boolean (True ou False).No caso do Persons classe, você pode ter um Boolean propriedade chamada Married que especifica se uma pessoa é único ou casado. Como há somente dois valores possíveis, um campo funciona bem para essa propriedade.

Para adicionar um campo a uma classe, o código teria a aparência a seguir.

Public Married As Boolean

A maioria das propriedades, no entanto, são mais complexas do que isso. Na maioria dos casos, você desejará usar um procedimento de propriedade para adicionar uma propriedade a uma classe.Procedimentos de propriedade têm três partes: uma declaração de uma variável particular para armazenar o valor da propriedade; um Get procedimento de evento que expõe o valor; e um Set procedimento que, quanto parece, define o valor.

Por exemplo, um procedimento de propriedade para uma propriedade Name para a classe Persons teria a seguinte aparência.

Private nameValue As String
Public Property Name() As String
    Get
        Name = nameValue
    End Get
    Set(ByVal value As String)
        nameValue = value
    End Set
End Property

A primeira linha do código declara uma variável privada String, nameValue, que irá armazenar o valor da propriedade.O procedimento de propriedade propriamente dito começa em Public Property e termina em End Property.

O procedimento Get contém o código que será executado quando você desejar ler seu valor. Por exemplo, se você lesse a propriedade Persons.Name, o código retornaria o valor armazenado na variável nameValue.

O procedimento Set contém código usado para atribuir um novo valor à variável nameValue usando um valor passado para ele como um argumento value.Por exemplo, se você escreveu o código Persons.Name = "John", o valor StringJohn seria passado como o argumento value. O código no procedimento Set poderia, em seguida, atribuí-lo à variável NameValue para o armazenamento.

Você pode perguntar por que você deveria ter todos esses problemas ao invés de usar um campo para representar a propriedade Name.No mundo real, existem determinadas regras para nomes. Por exemplo, os nomes geralmente não contém números.Você poderia adicionar código ao procedimento Set para verificar o argumento value e retornar um erro se ele contivesse números.

No procedimento a seguir, você adicionará um campo e três propriedades para a classe Persons.

Tente-o!

Para adicionar propriedades à sua classe

  1. Abra o projeto Persons que você criou na lição anterior.Se você não salvá-lo, você primeiro precisará voltar para a lição anterior, Modelagem de um objeto reais: Criando sua primeira classe e conclua os procedimentos na lição.

  2. No Solution Explorer, selecione Persons.vb e em seguida, no menu View, escolha Code.

  3. Adicione o seguinte código de declaração abaixo da linha Public Class Persons.

    Private firstNameValue As String
    Private middleNameValue As String
    Private lastNameValue As String
    Public Married As Boolean
    
  4. Adicione os procedimentos de propriedade a seguir abaixo do código de declaração.

    Public Property FirstName() As String
        Get
            FirstName = firstNameValue
        End Get
        Set(ByVal value As String)
            firstNameValue = value
        End Set
    End Property
    
    Public Property MiddleName() As String
        Get
            MiddleName = middleNameValue
        End Get
        Set(ByVal value As String)
            middleNameValue = value
        End Set
    End Property
    
    Public Property LastName() As String
        Get
            LastName = lastNameValue
        End Get
        Set(ByVal value As String)
            lastNameValue = value
        End Set
    End Property
    
  5. No menu File,escolha Save All para salvar seu trabalho.

Propriedades somente leitura e somente gravação

Às vezes, uma propriedade deve ser definida uma única uma vez e não deve nunca ser alterada durante a execução do programa.Por exemplo, uma propriedade que representa um número de funcionário não deve nunca ser alterada. Portanto, ela pode ser lida por outro programa, mas você não permitirá que esse programa altere seu valor.

A palavra-chave ReadOnly é usada para especificar que um valor da propriedade pode ser lido, mas não modificado.Se você tentar atribuir um valor a uma propriedade ReadOnly, um erro ocorrerá no Editor de Códigos.

Para criar uma propriedade somente leitura, você criaria um procedimento de propriedade com um procedimento Get, mas nenhum procedimento Set, da seguinte maneira.

Private IDValue As Integer
ReadOnly Property ID() As Integer
    Get
        ID = IDValue
    End Get
End Property

Da mesma forma, a palavra-chave WriteOnly permite que um valor da propriedade possa ser definido, mas não lido. Por exemplo, você não permitirá que uma propriedade de senha possa ser lida por outros programas.Você pode usar esse valor para realizar tarefas em sua classe, mas você desejaria mantê-lo particular.

Para criar uma propriedade somente leitura, você criaria um procedimento de propriedade com um procedimento Set, mas nenhum procedimento Get, da seguinte maneira.

Private passwordValue As String
WriteOnly Property Password() As String
    Set(ByVal value As String)
        passwordValue = value
    End Set
End Property

Os procedimentos de propriedade ReadOnly e WriteOnly também são úteis quando você deseja tomar um valor da propriedade e convertê-lo em um valor diferente.Por exemplo, considere a idade de uma pessoa.Ao contrário de um nome, a idade é alterada ao longo do tempo. Se você tiver atribuído sua idade a uma classe e a ler novamente um ano depois, o valor estaria incorreto.

Na classe Persons, você pode evitar isso adicionando duas propriedades: uma propriedade WriteOnlyBirthYear que representa o ano de seu nascimento, que nunca é alterada, e uma propriedade ReadOnlyAge que retorna um valor proveniente do cálculo da diferença entre o ano atual e o ano de nascimento.

Tente-o!

Para adicionar propriedades ReadOnly e WriteOnly à sua classe

  1. Adicione o seguinte código de declaração abaixo das outras declarações na parte superior do módulo da classe.

    Private birthYearValue As Integer
    
  2. Adicione os procedimentos de propriedade a seguir abaixo do código de declaração.

    WriteOnly Property BirthYear() As Integer
        Set(ByVal value As Integer)
            birthYearValue = value
        End Set
    End Property
    
    ReadOnly Property Age() As String
        Get
            Age = My.Computer.Clock.LocalTime.Year - birthYearValue
        End Get
    End Property
    
  3. No menu File,escolha Save All para salvar seu trabalho.

Próximas etapas

Nesta lição, você aprendeu sobre as propriedades e as diferentes maneiras para adicioná-las à sua classe.Na próxima lição, você aprenderá como adicionar métodos à sua classe para que ele possa realizar ações.

Próxima Lesson: Adicionando métodos a uma classe

Consulte também

Tarefas

Modelagem de um objeto reais: Criando sua primeira classe

Conceitos

Propriedade procedimentos vs. Campos

Outros recursos

Programação com objetos: Usando classes