Objetos e Classes no Visual Basic

Um objeto é uma combinação de código e dados que podem ser tratados como uma unidade. Um objeto pode ser uma parte de um aplicativo, como um controle ou formulário. Todo um aplicativo também pode ser um objeto.

When you create an application in Visual Basic, you constantly work with objects. You can use objects provided by Visual Basic, such as controls, forms, and data access objects. You can also use objects from other applications within your Visual Basic application. You can even create your own objects and define additional properties and methods for them. Objects act like prefabricated building blocks for programs — they let you write a piece of code once and reuse it over and over.

Este tópico discute os objetos em detalhes.

Objetos e Classes

Cada objeto no Visual Basic é definida por um classe. Uma classe descreve as variáveis, propriedades, procedimentos e eventos de um objeto. Os objetos são instâncias de classes; Você pode criar como muitos objetos, é necessário uma vez você definiu uma classe.

Para entender a relação entre um objeto e sua classe, pense em cookies e guilhotinas de cookie. O cortador é a classe. Ele define as características de cada cookie, por exemplo, tamanho e forma. A classe é usada para criar objetos. Os objetos são os cookies.

Você deve criar um objeto antes de poder acessar seus membros.

To create an object from a class

  1. Determine from which class you want to create an object.

  2. Write a Instrução Dim (Visual Basic) to create a variable to which you can assign a class instance. The variable should be of the type of the desired class.

    Dim nextCustomer As customer 
    
  3. Add the operador New (Visual Basic) keyword to initialize the variable to a new instance of the class.

    Dim nextCustomer As New customer
    
  4. You can now access the members of the class through the object variable.

    nextCustomer.accountNumber = lastAccountNumber + 1
    
ObservaçãoObservação

Whenever possible, you should declare the variable to be of the class type you intend to assign to it. This is called early binding. If you do not know the class type at compile time, you can invoke late binding by declaring the variable to be of the Tipo de dados Object. However, late binding can make performance slower and limit access to the run-time object's members. For more information, see Declaração de variável de objeto (Visual Basic).

Várias instâncias

Objetos criados recentemente a partir de uma classe geralmente são idênticos entre si. Depois que eles existem como objetos individuais, entretanto, suas propriedades e variáveis podem ser alteradas independentemente das outras instâncias. Por exemplo, se você adicionar três caixas de seleção para um formulário, cadaobjeto de caixa de seleçãoé uma instância de CheckBoxclasse. O indivíduo CheckBox objetos compartilham um conjunto comum de características e recursos (Propriedades, variáveis, procedimentos e eventos) definidos pela classe. No entanto, cada uma tem seu próprio nome, separadamente pode ser ativado e desabilitadoe podem ser colocados em um local diferente no formulário.

Object Members

Um objeto é um elemento de um aplicativo, que representa um instância de uma classe. Campos, propriedades, métodos e eventos são os blocos de construção de objetos e constituem seus membros.

Associado Acesso

Você acessar um membro de um objeto , especificando em ordem, o nome do objeto variável, um período (.) e o nome do membro. O exemplo a seguir define o Textapropriedade de um Labelobjeto.

warningLabel.Text = "Data not saved"

IntelliSense Lista de membros

IntelliSense lista de membros de uma classe quando você chama a sua opção de membros da Lista , por exemplo, quando você digita um período (.) como um membro-acessar o operador. Se você digitar o período após o nome de uma variável declarada como uma instância dessa classe, IntelliSense lista todos os membros de instância e nenhum dos membros compartilhados. Se você digitar o período após o nome da classe , IntelliSense lista todos os membros compartilhados e nenhum dos membros de instância. For more information, see Usando o IntelliSense.

Campos e Propriedades

Campos e Propriedades representam informações armazenadas em um objeto. Recuperar e definir seus valores com instruções de atribuição da mesma maneira que você recuperar e define as variáveis locais em um procedimento. O exemplo a seguir recupera o Widthpropriedade e conjuntos a ForeColorapropriedade de um Labelobjeto.

Dim warningWidth As Integer = warningLabel.Width
warningLabel.ForeColor = System.Drawing.Color.Red

Observe que também é chamado de um campo de uma variávelde membro.

Use os procedimentos de propriedade quando:

  • Você precisa controlar quando e como um valor é definido ou recuperado.

  • A propriedade tem um bem-um conjunto definido de valores que precisam ser validados.

  • Definir o valor faz com que alguma alteração perceptível no estado do objeto, como um IsVisible propriedade.

  • A configuração da propriedade faz com que as alterações para outras variáveis internas ou os valores das outras propriedades.

  • Um conjunto de etapas deve ser executado antes que a propriedade pode ser definido ou recuperado.

Use campos quando:

  • O valor é de self-tipo de validação. Por exemplo, um erro ou uma conversão automática de dados ocorre se um valor diferente de True ou False é atribuído a uma Boolean variável.

  • Qualquer valor no intervalo suportado pelo tipo de dados é válido. Isso é verdadeiro de muitas propriedades do tipo Single ou Double.

  • A propriedade é um String tipo de dados, e não há nenhuma restrição sobre o tamanho ou o valor da seqüência de caracteres.

  • For more information, see Procedimentos de propriedade (Visual Basic).

Methods

A método é uma ação que um objeto pode executar. Por exemplo, Add é um método de ComboBoxoobjeto que adiciona uma nova entrada a uma caixa de combinação.

O exemplo a seguir demonstra a Startométodo de um Timerobjeto.

Dim safetyTimer As New System.Windows.Forms.Timer
safetyTimer.Start()

Observe que um método é simplesmente uma procedimento que é exposto por um objeto.

For more information, see Procedimentos no Visual Basic.

Events

Um evento é uma ação reconhecida por um objeto, como, por exemplo, clicando com o mouse ou pressionar uma chave, e para o qual você pode escrever código para responder. Os eventos podem ocorrer como resultado de uma ação do usuário ou o código de programa , ou podem ser causados pelo sistema. OCódigo que sinaliza um evento é considerado elevar o eventoe o código que responde a ele é considerado tratar -lo.

Você também pode desenvolver seus próprios eventos personalizados para ser disparado por seus objetos e manipulados por outros objetos. For more information, see Eventos (Visual Basic).

Os membros de instância e compartilhada

Quando você criar um objeto de uma classe, o resultado é uma instância dessa classe. Membros que não são declarados com o Compartilhamento (Visual Basic) palavra-chave são os membros de instância, estritamente que pertencem a essa instância específica. Um membro de instância em uma instância é independente do mesmo membro em outra instância da mesma classe. Um membro de instância variável, por exemplo, pode ter valores diferentes em diferentes situações.

Os membros declarados com o Shared palavra-chave são membros compartilhados, que pertencem à classe como um todo e não para qualquer instância específica. Um membro compartilhado existe apenas uma vez, não importa quantas instâncias de sua classe você criar, ou mesmo se você criar nenhuma instância. Uma variáveldo membro compartilhado, por exemplo, tem apenas um valor, que está disponível para todo o código pode acessar a classe.

Accessing Nonshared Members

To access a nonshared member of an object

  1. Make sure the object has been created from its class and assigned to an object variable.

    Dim secondForm As New System.Windows.Forms.Form
    
  2. In the statement that accesses the member, follow the object variable name with the member-access operator (.) and then the member name.

    secondForm.Show()
    

Accessing Shared Members

To access a shared member of an object

  • Follow the class name with the member-access operator (.) and then the member name. You should always access a Shared member of the object directly through the class name.

    MsgBox("This computer is called " & Environment.MachineName)
    
  • If you have already created an object from the class, you can alternatively access a Shared member through the object's variable.

Differences Between Classes and Modules

The main difference between classes and modules is that classes can be instantiated as objects while standard modules cannot. Because there is only one copy of a standard module's data, when one part of your program changes a public variable in a standard module, any other part of the program gets the same value if it then reads that variable. In contrast, object data exists separately for each instantiated object. Another difference is that unlike standard modules, classes can implement interfaces.

ObservaçãoObservação

When the Shared modifier is applied to a class member, it is associated with the class itself instead of a particular instance of the class. The member is accessed directly by using the class name, the same way module members are accessed.

Classes and modules also use different scopes for their members. Members defined within a class are scoped within a specific instance of the class and exist only for the lifetime of the object. To access class members from outside a class, you must use fully qualified names in the format of Object.Member.

On the other hand, members declared within a module are publicly accessible by default, and can be accessed by any code that can access the module. This means that variables in a standard module are effectively global variables because they are visible from anywhere in your project, and they exist for the life of the program.

Reutilização de objetos e Classes

Objetos permitem que você declarar variáveis e procedimentos de uma vez e, em seguida, reutilizá-los sempre que necessário. Por exemplo, se você deseja adicionar um verificador ortográfico para um aplicativo poderia definir todas as variáveis e funções para fornecer a funcionalidade de verificação de ortográfica-de suporte. Se você criar sua ortografia verificador como uma classe, você pode, em seguida, reutilizá-lo em outros aplicativos adicionando uma referência ao assemblycompilado. Melhor ainda, você poderá economizar algum trabalho usando uma classe de verificador ortográfico que alguém já desenvolveu.

The .NET Framework provides many examples of components that are available for use. O exemplo a seguir usa a TimeZone classe a System namespace. TimeZonefornece a membros que permitem que você recupere informações sobre a zona de tempo do sistema de computador atual.

Public Sub examineTimeZone()
    Dim tz As System.TimeZone = System.TimeZone.CurrentTimeZone
    Dim s As String = "Current time zone is "
    s &= CStr(tz.GetUtcOffset(Now).Hours) & " hours and "
    s &= CStr(tz.GetUtcOffset(Now).Minutes) & " minutes "
    s &= "different from UTC (coordinated universal time)"
    s &= vbCrLf & "and is currently "
    If tz.IsDaylightSavingTime(Now) = False Then s &= "not "
    s &= "on ""summer time""."
    MsgBox(s)
End Sub

No exemplo anterior, o primeiro Instrução Dim (Visual Basic) declara umavariável do objetodo tipo TimeZone e atribui a ele um TimeZoneoobjeto retornado pela CurrentTimeZonepropriedade.

Relationships Among Objects

Objects can be related to each other in several ways. The principal kinds of relationship are hierarchical and containment.

Hierarchical Relationship

When classes are derived from more fundamental classes, they are said to have a hierarchical relationship. Class hierarchies are useful when describing items that are a subtype of a more general class.

In the following example, suppose you want to define a special kind of Button that acts like a normal Button but also exposes a method that reverses the foreground and background colors.

Para definir uma classe é derivada de uma classede já existente

  1. Use a Declaração Class (Visual Basic) to define a class from which to create the object you need.

    Public Class reversibleButton

    Be sure an End Class statement follows the last line of code in your class. By default, the integrated development environment (IDE) automatically generates an End Class when you enter a Class statement.

  2. Follow the Class statement immediately with an Declaração Inherits. Specify the class from which your new class derives.

    Inherits System.Windows.Forms.Button

    Your new class inherits all the members defined by the base class.

  3. Add the code for the additional members your derived class exposes. For example, you might add a reverseColors method, and your derived class might look as follows:

    Public Class reversibleButton
        Inherits System.Windows.Forms.Button
        Public Sub reverseColors() 
            Dim saveColor As System.Drawing.Color = Me.BackColor
            Me.BackColor = Me.ForeColor
            Me.ForeColor = saveColor
        End Sub
    End Class 
    

    If you create an object from the reversibleButton class, it can access all the members of the Button class, as well as the reverseColors method and any other new members you define on reversibleButton.

Derived classes inherit members from the class they are based on, allowing you to add complexity as you progress in a class hierarchy. For more information, see Noções básicas de herança (Visual Basic).

Compiling the Code

Be sure the compiler can access the class from which you intend to derive your new class. This might mean fully qualifying its name, as in the preceding example, or identifying its namespace in an Declaração Imports (Tipo e Namespace .NET). If the class is in a different project, you might need to add a reference to that project. For more information, see Referenciando Namespaces e Componentes.

Containment Relationship

Another way that objects can be related is a containment relationship. Container objects logically encapsulate other objects. For example, the OperatingSystem object logically contains a Version object, which it returns through its Version property. Note that the container object does not physically contain any other object.

Collections

One particular type of object containment is represented by collections. As coleções são grupos de objetos semelhantes que podem ser enumerados. Visual Basicoferece suporte a uma sintaxe específica na Instrução For Each...Next (Visual Basic) que permite que você para iterar por meio de uma coleçãode itens. Additionally, collections often allow you to use an Item to retrieve elements by their index or by associating them with a unique string. Collections can be easier to use than arrays because they allow you to add or remove items without using indexes. Because of their ease of use, collections are often used to store forms and controls.