Desenvolvimento - Visual Basic .NET

VB.NET: Estudo da linguagem - Parte 6

Esta é a sexta parte da série de estudos sobre o Visual Basic .NET.

por Paulo Cesar Macedo



Importante:
Esse estudo foi uma compilação dos seguintes textos feita pelo autor:
MSDN Visual Studio 2002/2003 (tradução da fonte original do site da Microsoft)
Livro: Programando em Visual Basic de Michael J. Young.
Livro: Visual Basic for Windows de Steven Holzner.
Livro: Visualização e realidade virtual de Lee Adams.

1.11 – Objetos

O VB .Net foi projetado inteiramente para programação orientada a objeto (OOP), e todo o desenvolvedor irá trabalhar com objetos. Objeto é uma pequena parte de código que engloba funções, propriedades e métodos num único lugar, e não pode ser executado sozinho sem um aplicativo principal. O processo que engloba funções, propriedades e métodos num único objeto é chamado de Encapsulamento.

Classes e Objetos

Geralmente os objetos são escritos em forma de arquivos dll, e podem ser utilizados declarando variáveis como referência a eles. Outro conceito importante é a diferença entre Classes e Objetos.

  • Classes – É o protótipo de criação dos objetos, isto é o código fonte que contém procedimentos, funções para a criação do Objeto. Cada objeto no VB .Net é uma classe, basta fazer uma referência no programa para utilizar seus recursos.
  • Objeto – É uma cópia, também conhecida de instância, de uma classe. Pode-se utilizar quantos objetos desejar, uma vez criado a classe . Assim a Toolbox (Barra de ferramentas) do VB .Net é uma coleção de classes, uma vez escolhido um controle e desenhado na janela, esta classe se transforma em Objeto. As Janelas do VB .Net são classes e quando o aplicativo está em execução (Run Time) o compilador cria uma cópia da classe e se transforma em Objeto.

Resumindo : Classe é um código VB .Net estático, e Objeto é um código VB .Net em execução. Todos os Objetos são uma cópia exata da Classe que o implementa, e cada cópia de classe não interfere no processamento de outras cópias, isto é cada objeto tem seu próprio processamento.

Membros

Todo objeto possui Membros que são formados por :

  • Propriedades – São informações armazenadas na classe.
  • Métodos – São procedimentos ou ações que a classe executa.
  • Eventos – São notificações que uma classe emite quando determinada ação é executada.

No VB .Net e no C++, as propriedades, Métodos e Eventos também são chamados de Membros. No antingo VB 6 as propriedades, métodos e Eventos eram chamados de Interface. Para acessar um Membro de um objeto, é obrigatório nomear o Objeto, usar um ponto e nomear o nome do Membro desejado.

Exemplo:

NomeDoObjeto . NomeDoMembro

Text1.Caption = “Olá”

Para utilizar um Objeto, é preciso criar uma instância (Cópia) da Classe, em seguida basta utilizar os Membros.

Exemplo:

Dim MeuObjeto as New Class1 ( )

MeuObjeto.Cantar

No Exemplo acima, foi criada uma cópia de uma classe chamada Class1 utilizando a palavra chave as e New, em seguida utilizou-se do membro Cantar que executa um pseudo procedimento. Observe que se omitir o comando New , a variável fica declarada e pronta para receber a cópia de uma classe, mas efetivamente a variável não é criada e não recebe a atribuição.

Com o comando New, o compilador cria a variável e atribui a ela a cópia da classe.

Fontes de objetos

Os objetos no VB .Net estão divididos em duas fontes diferentes :

  • Objetos Internos – Objetos internos, também conhecidos como intrínsecos ou (Built In), são os objetos nativos do VB, isto é os que acompanham o ambiente de desenvolvimento VB .Net. São objetos internos os tipos de dados elementares, tais como Integer, Long, String, etc..

Não é necessário criar referências a objetos internos antes de serem usados no aplicativo, mas para algumas classes é necessário criar instâncias (cópias) das classes para utilizá-las.

  • Objetos Externos – São todos os objetos que não acompanham o ambiente de desenvolvimento. É obrigatório criar uma referência a estes objetos externos antes de utilizá-los. As classes da tecnologia .NET Framework devem ser importadas usando o comando Imports antes de serem usadas no código.

Com o VB .NET pode-se utilizar Objetos Externos tais como as ferramentas de edição de texto do Microsoft Word, as fórmulas do Microsoft Excel, e tantos outros recursos do Office, Corel, AutoCad e etc. Para isso basta criar uma referência a fonte Externa no menu do Visual Studio .NET.

Os objetos Externos e Internos permitem múltiplas ações simultaneamente. Exemplo :

Private Sub UpdateForm()

Button1.Text = "OK"

Button1.Visible = True

Button1.Top = 24

Button1.Left = 100

Button1.Enabled = True

Button1.Refresh()

End Sub

No exemplo acima, o evento UpdateForm( ) utiliza várias propriedades e métodos de um botão simultaneamente. Entretanto a Microsoft recomenda utilizar os comandos With ... End With para alcançar esse mesmo resultado . Exemplo :

Private Sub UpdateForm2()

With Button1

.Text = "OK"

.Visible = True

.Top = 24

.Left = 100

.Enabled = True

.Refresh()

End With

End Sub

Neste ultimo exemplo, o comando With … End With melhora o desempenho do código e torna mais fácil a leitura do código para outro desenvolvedores.

Janelas (Forms)

As Janelas, também conhecidas como Forms, Window, etc, são objetos gráficos que fazem a interface do usuário. No VB .NET as classes definem como as janelas serão exibidas e o que elas farão. Quando um aplicativo está em execução e uma janela é exibida na tela, o VB .NET cria uma instância (cópia) da Classe denominada Form.

Pode-se alterar o comportamento das janelas, ou criar novos procedimentos e métodos. Por exemplo, para criar um procedimento (método) para a janela basta escrever o procedimento e declará-lo como público . Exemplo

Public Sub Som( )

Beep

End sub

O Exemplo acima cria um procedimento público Som, que pode ser acessado por outras partes do código. Exemplo :

Dim NovaJanela as Form1

Form1.Som ( )

No exemplo acima, foi criado uma instância da Janela para acessar o método Som ( ).

1.12 – Strings

Strings é um tipo de dados elementar que representa uma matriz de caracteres ( tipo de dados Char), que aceita qualquer expressão desde que estejam entre aspas. Exemplo :

Dim minhaVariável as String = “Não sei como”

Para usar aspas na criação da string, é necessário criar uma dupla marcação de aspas. Exemplo

Dim minhaVariável as String = “Eu quero usar “”aspas”””

Toda string é imutável , isto significa que o seu valor não pode ser alterado uma vez que foi criado. O que acontece é que, qualquer variável do tipo de dados String é um tipo Referência e portanto aponta para a memória onde o valor está armazenado, uma vez que o valor é alterado por outra string, essa variável é destruída e criada em seguida com a nova string. Exemplo :

Dim minhaVariável as String = “Eu quero usar “”aspas”””

minhaVariável = “Agora não quero mais”

No Exemplo acima a primeira linha do código cria uma instância (Cópia) da string e atribui um valor. Na próxima linha, essa variável é destruída e uma nova cópia é criada e atribuída o novo valor “Agora não quero mais”.

Métodos para manipular String

Todo tipo de dados é uma classe da tecnologia .Net Framework que oferece métodos da própria classe. Além disso o VB .NET também oferece funções herdadas da própria linguagem, isto significa que não é preciso fazer referência ou cópia da classe para poder usá-las. Exemplo :

Dim aString As String = "Fale Agora"

Dim bString As String

bString = Mid(aString, 2, 3) ‘ retorna a palavra “ale”

No exemplo acima, a sintaxe é a mesma do antigo VB 6.0 onde a função é utilizada sem qualquer referência a classe.

Além disso, no VB .NET pode-se utilizar métodos da própria classe String de duas formas

  • Métodos Shared (Métodos Compartilhados) – Outra forma de usar um método sem fazer referência ou cópia de classes. Basta colocar o nome da própria classe. Exemplo

Dim aString as String = “Fale Agora”

aString = String.Copy(“Fale Agora ou Cale-se”) ‘exibe o texto “Fale Agora ou Cale-se”

  • Métodos Instance (Métodos em Instância) – Usa os métodos da classe fazendo a qualificação da cópia da classe, isto é o nome da variável. Exemplo :

Dim aString as String = “Fale Agora”

aString.ToUpper ‘ retorna “FALE AGORA”

O compilador trata o tipo de dados especial Nothing igual a string vazia “”, entretanto o compilador não pode fazer operações com este string. Exemplo :

Dim Minha as string

Dim i as integer

Minha = “” ‘string vazia

Minha = Nothing ‘ string vazia

i = Minha.Length ‘Ocorre um erro de execução, pois a variável Minha recebeu Nothing

Pode-se comparar strings utilizado o método Compare da classe String, ou a função StrComp do VB. Exemplo :

Dim m as string

Dim n as string

Dim resultado as integer

m = “Nosso”

n = “Meu”

resultado = String.Compare (m,n ) ‘resultado tem o valor de 1

Esse método retorna um número que indica o resultado da comparação, se o número for positivo então a primeira string (m) é maior que a segunda string (n). Se o resultado for negativo, então a segunda string (n) é maior que a primeira string (m), ao passo que se o resultado for zero, então as duas strings são iguais.

É possível procurar Strings dentro da string, utilizando o índice da matriz ou procurando pela letra na matriz. Pode-se também utilizar as funções InStr do VB. Exemplo :

Dim myString As String = "ABCDE"

Dim myChar As Char

myChar = myString.Chars(3) " myChar = "D"

Observe que Strings são matrizes de caracteres (Char) e portanto possui índices, a propriedade Char é usada para retornar a letra da matriz informando o seu índice. No exemplo acima o índice 3 corresponde ao caracter D.

Dim myString As String = "ABCDE"

Dim myInteger As Integer

myInteger = myString.IndexOf("D") " myInteger = 3

No exemplo acima, a propriedade IndexOf é utilizada para retornar o número do índice (posição do caracter no string) com base no caractere informado. O caractere D está na posição 3 (índice).

É possível concatenar (combinar) duas ou mais strings, utilizando o método Concat ou os operadores & , + do VB. Exemplo :

Dim aString As String = "A"

Dim bString As String = "B"

Dim cString As String = "C"

Dim dString As String = "D"

Dim myString As String

" myString = "ABCD"

myString = String.Concat(aString, bString, cString, dString)

Uma das funções mais importantes para strings é Trim, que remove os espaços no texto. Usa-se a função Trim do VB ou o método Trim da classe String para remover os espaços na string. Exemplo :

Dim spaceString As String = _

" Este texto possui espaços "

Dim oneString As String

Dim twoString As String

" Remove todos os espaços usando o método da classe String

oneString = spaceString.Trim

" Remove todos os espaços usando a função do VB

twoString = Trim(spaceString)

No exemplo acima, foram utilizados tanto as funções do VB quanto o método da classe String para remover os espaços. Note que é possível eliminar somente os espaços iniciais com LTrim quanto os espaços finais com RTrim. Exemplo:

Dim m As String

Dim a As String

m = "&&&&Caco&&&&&"

a = m.Trim("&")

MsgBox(a) ‘mostra a string “Caco”

Acima, o exemplo demonstra o uso de Trim para remover caracteres específicos na string.

Conclui-se que a tecnologia .NET Framework encapsulou todas as funções do VB em classes, substituindo algumas e aprimorando outras, de forma a facilitar o trabalho do desenvolvedor. Entretanto é necessário estudar as classes básicas para saber como usá-las no código, veja as explicações no capítulo sobre o assunto.

1.13 - Constantes e Enumerações

Constantes são valores que nunca mudam, é um recurso da linguagem que utiliza nomes ao invés de valores facilitando a leitura do código por outros desenvolvedores.

Constantes

Para criar uma constante declare uma variável com o comando Const, obedecendo as regras de codificação e programação já estudadas anteriormente. Observe que se a opção Option Strict estiver ligada (Option Strict On) então é obrigatório declarar explicitamente o tipo de dados da Constante. Exemplo:

‘Option Strict Off

Public Const IdadeDoBrasil = 500

Private Const IdadeDoMatusalém = 1500

O exemplo acima declara a constante IdadeDoBrasil em 500 anos com escopo Público, isto é pode ser acessada por outros blocos de código, e as constante IdadeDoMatusalém em 1500 anos tem escopo local e não pode ser acessado por outros blocos de código. Observe que a opção Strict está desligada por default, portanto não precisa especificar o tipo de dados da constante.

Option Strict On

Public Const IdadeDoBrasil as integer = 500, IdadeDoMatusalém as integer = 1500

No código acima, a opção requer declarar o tipo de dados das constantes. Observe, porém que todas as constantes agora são Públicas e foram declaradas na mesma linha de código.

Há dois tipos de constantes no VB, as constantes definidas pelo usuário (User-Defined Constants) e as constantes intrínsecas ou pré-definidas, isto é as constantes do próprio VB .NET.

  • User-Defined Constants – As constantes definidas pelo usuário são todas as constantes nomeadas criadas pelo programa do desenvolvedor, nos exemplos anteriores as constantes foram criadas e definidas pelo usuário.
  • Constantes intrínsecas ou pré-definidas - As constantes do VB são todas as constantes embutidas na linguagem. Podem ser utilizadas em todas as partes do código e não precisam ser declaradas.

As constantes definidas pela linguagem VB, podem ser examinadas no Object Browser do ambiente de desenvolvimento Visual Studio .NET, veja no capítulo referente ao Ambiente de Desenvolvimento Integrado do Visual Studio.

Exemplo de criação de constantes definidas pelo usuário utilizando constantes pré-definida pelo VB.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click

Const Sim = vbYes

Const Não = vbNo

MsgBox(Sim & " e " & Não) ‘exibe “6 e 7”

End Sub

No exemplo acima as duas constantes são Sim e Não e foram atribuídas os valores de vbYes e vbNo, respectivamente 6 e 7. Observe que as constantes foram criadas dentro de procedimento local (Evento clique de um botão), portanto não é permitido incluir comandos de declaração como por exemplo Dim, Public, Private, etc..

Assim como as variáveis, as constantes devem ser coagidas a receber alguns tipos de dados de valores muito altos, dependendo do estado da opção Option Strict, veja a explicação no capítulo Elementos de Dados. Exemplo :

Option Strict Off ‘Opção ligada então e preciso coagir as constantes a receber os valores

Public Const DefaultInteger = 100 " Default é Integer.

Public Const DefaultDouble = 54.3345612 " Default é Double.

Public Const MyCharacter = "a"C " Força a constante a ser do tipo Char.

Public Const MyDate = #01/15/01# " constant do tipo Date.

Public Const MyTime = #1:15:59 AM# ‘idem acima

Public Const MyLong = 45L " Força o tipo de dados Long.

Public Const MySingle = 45.55! " Força o tipo de dados Single.

O compilador do VB considera alguns valores como default, como por exemplo qualquer valor numérico desde que não seja muito alto é considerado Integer; qualquer valor com dígitos decimais é considerado como Double; qualquer valor muito extenso é considerado Long, e finalmente qualquer valor com True ou False é considerado Boolean. Assim quando houver erro em atribuição de valores a constantes ou variáveis, basta forçar o valor da variável utilizando os comandos de tipo de dados. No exemplo acima, todas as constantes estão declaradas corretamente, portanto o compilador não gera erros em execução.

Exemplo :

Dim myDecimal as Decimal

myDecimal = 100000000000000000000 " Ocorre um erro de execução.

No exemplo acima e conforme as definições acima, o valor 100000000000000000000 é considerado Double (default) pelo compilador, e a variável myDecimal é do tipo Decimal. Mesmo que o tipo Decimal suporte o valor acima descrito, ele não pode aceitar o tipo de dados Double (que é muito maior), portanto o compilador gera um erro. A forma correta de utilização é :

Dim myDecimal as Decimal

myDecimal = 100000000000000000000D " Atribuição Correta.

Enumeradores

Os Enumeradores é uma forma conveniente de agrupar conjuntos de constantes relacionadas e também associar valores com nomes. Um exemplo prático de enumeradores é, quando se declara uma variável no Editor de Código da IDE e no final da palavra chave AS , o VB exibe a lista de opções de tipos de objetos disponíveis.

Para usar enumeradores use o seguinte :

Private Enum MyEnum

Public Enum MyEnum

Protected Enum MyEnum

Friend Enum MyEnum

Protected Friend Enum MyEnum

Exemplo :

Public Enum Dias

Sunday

Monday

Tuesday

Wednesday

Thursday

Friday

Saturday

End Enum

Como Default, o valor da primeira constante do Enumerador Dias é zero (0), e os valores subseqüentes são incrementados automaticamente com um (1), assim Segunda teria o valor 0, Terça o valor 1, Quarta o valor 2 e etc. Pode-se ainda, atribuir explicitamente valores as constantes, usando a operador de atribuição igual ( = ), mas certifique-se em não criar enumeradores com valores do tipo ponto flutuante.

Para um correto uso de enumeradores, utiliza-se a estrutura hierárquica para acessar as constantes, desta forma evita-se conflitos de referências, quando há enumeradores com constantes iguais :

Dias . Saturday

Assim como as constantes, os enumeradores podem ser tanto intrínsecos ao VB, isto é enumeradores definidos pelo sistema VB, quanto enumeradores definidos pelo usuário. Por exemplo a função MsgBox do VB possui as seguintes enumerações e constantes definidas pelo sistema :

Exemplo :

MsgBox ("olá", MsgBoxStyle.Critical + MsgBoxStyle.OKOnly + MsgBoxStyle.SystemModal)

No exemplo acima, foi necessário nomear a classe MsgBoxStyle a que pertence as enumerações, além disso foi possível combinar várias enumerações para criar a mensagem “Olá”.

Paulo Cesar Macedo

Paulo Cesar Macedo