Você está na página 1de 151
Visual Studio.Net Autor: Paulo Cesar Macedo

Visual Studio.Net

Autor:

Paulo Cesar Macedo

Apostila de VISUAL STUDIO .NET

1 - Introdução ao Visual Basic .NET

 

3

1.1 – Hardware necessário para instalação

3

1.2 – Conceitos para o desenvolvimento de aplicativos Microsoft

4

2 - Estudo da Linguagem Visual Basic .NET

 

8

2.0 – Arquivos gerados pelo Visual Basic .NET

8

2.1 - Nova Estrutura do programa escrito em VB .Net

10

2.2 – Atribuir nomes aos elementos do seu programa

11

2.3 – Utilizando quebra de linha e combinação de código

11

2.4 – Caracteres especiais no VB .Net

 

12

2.5 – Criar comentários no Código

12

2.6 – Limitações do Visual Basic .NET

13

2.7 - Compilação Condicional

13

2.7.1 – Criando Constantes de declaração Condicional

14

2.7.2 – Ocultando ou expandindo o código

14

2.8 – Técnicas de codificação e programação

14

2.9 – Declarando Elementos

20

2.10

– Tipos de Dados –

2.10.1

Estruturas de dados

27

37

2.10.2

– Matrizes (Arrays)

38

2.11 –

Objetos

44

2.12 – Strings

46

2.13 - Constantes e Enumerações

 

49

2.14 –

Operadores

52

2.15 – Procedures (Procedimentos)

 

62

2.16 -

Collection (Coleções)

73

2.17 - Estruturas de Controle de Fluxo

 

76

2.18 - Visual Basic .NET e a programação orientada a objeto

84

2.18.1

2.18.2

2.18.3

2.18.4

2.18.5

2.18.6

2.18.7

– Early bound e Late bound

Eventos e

Delegar

85

– Palavra chave New e liberando recursos do Sistema

86

– Trabalhando com Grupos de Objetos

87

- Obtendo informações de uma classe

88

- Classes

89

– Propriedades, Campos e Métodos de uma Classe –

98

103

2.18.8

Interfaces

no VB .NET

 

110

2.18.9

– Herança (Inherits)

112

2.18.10 – Construtores e Destrutores na hierarquia de classes

118

2.18.11 –

Polimorfismo

120

2.18.12 – Criando um hierarquia de heranças

122

2.19 – Operações com Componentes COM

Multithreading

123

2.20 –

125

2.21 – Drivers, Pastas e Arquivos

 

129

2.21.1 - A classe System.IO

129

2.21.2 – Acessando arquivos com as funções internas do VB

130

2.21.3 – Acessando

arquivos

com

FileSystemObject

138

2.22

– Manipulando exceções (Exception)

141

2.22.1 – Manipulador estruturado de exceções

141

2.22.2 – Manipulador

de exceções não estruturado

143

3 – Visão Geral da Tecnologia .NET Framework

146

3.1

– Infraestrutura NET

146

1 - Introdução ao Visual Basic .NET

A

Microsoft lançou as versões mais significativas do Visual Basic, conforme abaixo :

Visual Basic 1 – Facilitou a criação de aplicativos DESKTOP para Windows.

Visual Basic 4 – Incluiu a nova tecnologia COM2 que permitia a criação de controles OCX, arquivos DLL e servidores EXE para Windows.

Visual Basic .NET – Incorpora uma nova Tecnologia denominada .NET Framework, especialmente criada para Internet, Aplicativos Servidores, Componentes e XML.

O

pacote Visual Studio .NET substitui e aposenta o Visual Studio 6.0 e anteriores, assim como o

Visual Basic .NET substitui e aposenta o VB 6.0, 5.0 e 4.0. O VB .NET faz parte do pacote Visual

Studio .NET.

Agora, o Visual Basic 7.0 ou Visual Basic .NET (pronuncia-se DOT NET) pode ser usado para criar qualquer aplicativo Windows Cliente, Servidor, Internet, não precisando usar nenhuma outra ferramenta.

O Visual Basic só trabalha com a Tecnologia .NET e de agora em diante qualquer aplicativo criado

com o Visual Basic .NET é GERENCIADA e não mais interpretada ou nativa (VB 6.0), além disso, utiliza novos recursos de desenvolvimento procedentes do C++.

O Visual Basic é uma ferramenta denominada pela Microsoft de RAD – Rapid Application

Development que possibilita a criação de aplicativos rapidamente sem preocupar-se com os detalhes

da

programação Windows, é portanto uma ferramenta de alta produtividade.

O

Visual Basic é a combinação de três componentes :

Visual – É o componente que é usado para criar a Interface Gráfica de Usuário (GUI), assim você usa os objetos pré-construídos para criar a sua tela. Se não fosse por intermédio desse componente, você seria obrigado a digitar linhas e mais linhas de código para “desenhar” uma simples janela, além de utilizar as centenas de funções API do Windows. O ambiente visual é conhecido como IDE (integrated Development Enviroment) que possui um kit de ferramentas para o desenvolvimento. Basic – É a linguagem Basic criada em 1964, adicionado de Métodos, Funções, Comandos, Propriedades e Eventos. Tudo isso foi herdado do Ambiente gráfico do Windows. Plataforma .NET – É um conjunto de centenas de classes e objetos pré-construídos pela Microsoft para serem utilizados na codificação do aplicativo, além disso possui vários arquivos distribuídos a serem compilados junto com o aplicativo.

O VS vem originalmente em 4 versões Academic, Professional, Enterprise Developer e Enterprise

Architect, sendo que a última é a versão mais completa.

1.1 – Hardware necessário para instalação

O Visual Studio .Net não pode ser instalado em sistemas operacionais Windows 95, 98, Me. Além

disso para instalar as ferramentas de desenvolvimento Web é necessário o Windows 2000 Server ou NT com o IIS (Internet Information Service) instalado na máquina. Hardware necessário para cada versão do VS .NET :

Hardware

Enterprise Architect

Enterprise

Professional

Academic

   

Developer

   

Processador

Pentium II-, 450 MHz Recomendado: Pentium III -

Mesmo

Mesmo

Mesmo

600MHz

RAM

Windows 2000 Professional — 96 MB; Windows 2000 Server

Mesmo

Mesmo

mesmo

192 MB; Windows NT4.0

Workstation — 64 MB; Windows NT 4.0 Server — 160

MB; Windows XP Professional

160 MB

Recomendado: 128 MB - 2000

Professional, 256 MB - 2000 Server, 96 MB - Workstation, and 192 MB - NT 4.0 Server,

192

MB - XP Professional

Espaço em Disco

500

MB no drive do sistema, 3

Mesmo

Mesmo

mesmo

GB drive de instalação

Sistema

Windows® 2000, Windows XP, ou Windows NT 4.0

Mesmo

Mesmo

mesmo

Operacional

CD-ROM ou

Recomendado

Recomendado

Recomendado

Recomendado

DVD-ROM

Video

800

x 600, 256 cores

Mesmo

Mesmo

mesmo

Recomendado: High Color 16-

bit

Mouse

Qualquer

Mesmo

Mesmo

mesmo

Para melhor o desempenho do VS .NET desligue o antivírus na instalação; desfragmente o disco rígido; faça um upgrade da memória.

Para melhorar a velocidade na inicialização do VS .Net feche a janela de propriedades da IDE; feche a janela Start Up da IDE; feche a janela Dynamic Help. Observação desmarque a opção de abrir estas janelas automaticamente.

1.2 – Conceitos para o desenvolvimento de aplicativos Microsoft

Este capítulo foi incluído para explicar o significado de alguns termos que a Microsoft utiliza na documentação oficial, e no treinamento para a certificação.

Para desenvolver aplicativos Windows, a Microsoft utiliza a Modelagem de Aplicativos Enterprise (EAM - Entreprise Application Model) que envolve seis etapas :

O Modelo de Desenvolvimento – Processo de desenvolvimento do software.

O Modelo de Negócios – Define o objetivo do software.

O Modelo do Usuário – Refere-se a interface, documentação, treinamento, suporte e configuração ao usuário.

O Modelo Lógico – Define a estrutura lógica e a modelagem dos objetos e serviços do software.

O Modelo Tecnológico – Define a reutilização dos componentes do software, do sistema, do gerenciamento dos recursos.

O Modelo Físico – É o produto final que engloba os componentes, a distribuição e a interconecção.

Para o programador VB a fase mais importante das descritas acima é o Modelo de Deesenvolvimento (Model Development) que é o intermediário entre o Modelo de Negócios e os Modelos do Usuário, Lógico e Tecnológico.

1

- O Modelo de desenvolvimento

O

modelo de desenvolvimento envolve três etapas :

Desenho Conceitual (Conceptual Design) – Trata o sistema do ponto de vista do usuário.

Desenho Lógico (Logical Design) – Identifica os objetos e serviços do negócio.

Desenho Físico (Physical Design) – Implementa o desenho lógico incluindo as soluções específicas de hardware e software.

O

Desenho Conceitual irá considerar o perfil do usuário, isto é quem é o usuário e como ele irá

trabalhar com o sistema, além disso o perfil do usuário engloba sua função ou cargo.

O desenho conceitual também deve considerar o cenário atual em uso, isto é quantos usuários utilizam o sistema atual e as situações de uso.

E finalmente o desenho conceitual deve considerar o cenário proposto para o uso, isto é quantos

usuários deverão utilizar o novo sistema e as situações de uso.

2 – O Desenho Lógico

Para criar o desenho lógico é preciso seguir os passos abaixo :

1. Identificar os objetos e serviços do negócio

2. Definir a interface

3. Identificar as dependências do objeto

4. Validar o desenho lógico

5. Revisar e refinar o desenho lógico

Uma entidade que representa os modelos lógicos ou físicos é chamado de business object (Objeto de Negócio, ou Objeto comercial), isto é representar as situações ou funções de uma empresa em um objeto no sistema. Um business object pode retratar :

Contas

Clientes

Vendas

Faturas

O desenvolvimento do software irá implementar esses objetos para criar seus membros tais como

propriedades e métodos para interagirem com outros objetos. Para identificar um business object é necessário determinar os nomes dos cenários em uso e os verbos dos cenários em uso.

Os nomes dos cenários podem ser determinados pelos diversos departamentos ou seções que irão utilizar o aplicativo, e serve como base para identificar os verbos para compor o objeto.

Os verbos podem ser indicados pelos termos Possui ou Tem; Usa; Contém ou Guarda ou Consiste; É um exemplo de ou É um.

3 – O Desenho Físico

Para criar o desenho Físico a partir do Desenho Lógico é preciso seguir estes passos :

Definir o tipo de serviço aos componentes – Cria os componentes a partir dos objetos lógicos já definidos e determina se cada objeto é um usuário, um negócio ou um objeto de serviços de dados.

Distribuir o componente na rede – Definir o local do componente na rede.

Refinar a distribuição dos componentes – Agrupar os componentes de acordo com as necessidades do sistema.

Definir os membros do componente – Define o relacionamento entre os componentes.

Validar o desenho físico – Certificar que cada componente corresponde ao serviço no objeto lógico.

Um desenho lógico bem efetuado vai ter um impacto positivo na criação do desenho Físico. A forma de medir o impacto do desenho lógico no desenho físico é observar se as considerações abaixo podem ser alcançadas.

Performance (Desempenho)

Maintainability (Manutenciabilidade)

Extensibility (Extensibilidade)

Scalability (Escalabilidade)

Availability (Disponibilidade)

Security (Segurança)

Performance

A performance (desempenho) é a velocidade e a eficiência que o sistema executa as tarefas. O

desempenho tem que ser considerado pelo ponto de vista dos recursos do sistema, isto é o total de recursos que o sistema utiliza para executar a tarefa. E do ponto de vista do usuário, isto é o tempo gasto que o sistema utiliza para executar a tarefa.

Entretanto é necessário ter um ponto de equilíbrio entre o desempenho e outras considerações em relação ao software, pois o código que incrementa a performance pode afetar outros aspectos do sistema.

Maintainability

O sistema que permite uma boa manutenção, isto é revisão do código fonte pelos programadores, é

aquele que evita um longo trabalho de revisão e a participação de usuários no processo.

O sistema pode centralizar todos os componentes em um único lugar de forma a substituir o

componente debilitado pelo componente corrigido. Outro caso seria dividir os componentes em

pequenos pedaços de forma a isolar o problema em áreas específicas

O ideal é dividir os componentes em pequenos pedaços de código e centralizá-los em um único

lugar, assim um sistema cliente servidor pode centralizar os pedaços dos componentes no servidor e permitir que a manutenção seja feita no próprio servidor sem a participação do usuário no processo.

Extensibility

Extensibilidade é a capacidade de integrar outros aplicativos ao sistema. Para alcançar a extensibilidade pode-se utilizar as regras abaixo :

Dividir os serviços do sistema em pequenos componentes que possuem membros e executem tarefas específicas que possam ser reutilizáveis por outros sistemas.

Criar componentes COM ou .NET que podem ser sempre utilizados em outras plataformas.

Se o sistema for WEB utilize os serviços do IIS Internet Information Service para enviar informações ao Browser dos usuários.

Scalability

A escalabilidade é a capacidade que um sistema possui de mudar de um ambiente de pouca utilização

para um ambiente de intensa utilização do sistema sem afetar suas funcionalidades. O ambiente de

intensa utilização pode envolver :

Aumento do número de usuários

Aumento do tráfico do sistema na rede

Serviços que utilizem os dados do aplicativo

Assim a escalabilidade também está ligada a performance do sistema, entretanto a escalabilidade é mais especializada que a performance pois trata de técnicas que ajudam na melhoria do desempenho de redes, distribuição de dados, servidores de dados, camadas de dados e etc.

Availability

Um sistema deve estar disponível na maior parte do tempo possível e na maioria dos lugares em que for acessado. Para que um sistema esteja sempre disponível é necessário observar a natureza do sistema e outros fatores tais como :

Área local

Rede

Internet

INtranet

Security

A segurança de um aplicativo está voltado a formas de evitar acessos externos e total controle da

administração do sistema. Para melhor segurança o sistema deve estar centralizado em um único lugar para melhor administração e evitar acessos externos.

2 - Estudo da Linguagem Visual Basic .NET

2.0 – Arquivos gerados pelo Visual Basic .NET

Quando iniciado um projeto em VB, o sistema cria os arquivos com extensão .vb, além de outros que podem ser incluídos no projeto tais como arquivos ASP que tem a extensão .aspx; arquivos XML com extensão .xml; arquivos HTML com extensão .html e outros. Assim não há distinção de arquivos de classes, janelas, controles e etc, pois todos terão a partir de agora a extensão .vb.

Item do projeto

Extensão

Descrição

Janela

.vb

Janela para aplicativos Desktop.

Classe

.vb

Arquivo de código para classes

Modulo (Visual Basic)

.vb

Arquivo que agrupa funções

Component Class

.vb

Uma classe de componentes.

User Control

.vb

Controle para aplicativos

Data Form Wizard

.vb (.aspx para projetos WEB.)

Uma janela de dados

DataSet

.xsd

Arquivo DataSet para criar esquemas XML

Arquivo XML

.xml

Arquivo XML

Esquema XML

.xsd

Arquivo para criar Esquemas de documentos XML.

Code File

.vb

Arquivo de código

Custom Control

.vb

Classe para criar controles para aplicativos Windows.

Página HTML

.htm

Página HTML que inclui código.

Inherited Form

.vb

Janela baseada em outra janela existente.

Web Custom Control

.vb

Classe para criar um controle servidor ASP.NET.

Inherited User Control

.vb

Novo controle baseado em um controle existente.

Windows Service

.vb

Classe para criar Serviços Windows.

COM Class

.vb

Classe baseada em componente COM

Transactional

.vb

Classe para usar componentes transacionais.

Component

Arquivo texto

.txt

Arquivo de texto

Frameset

.htm

Arquivo HTML que possui várias páginas HTML.

Arquivo XSLT

.xslt

Arquivo usado para transformar documentos XML

StyleSheet

.css

Arquivo estilo planilha para definições HTML

Installer Class

.vb

Classe para ser chamada em processos de instalação.

Crystal Report

.rpt

Um relatório Crystal Report

Arquivo Bitmap

.bmp

Arquivo bitmap.

Arquivo de Cursor

.cur

Cursor padrão

Icone

.ico

Ícone padrão

Arquivo Assembly Resource

.resx

Arquivo usado para armazenar recursos para o aplicativo

Arquivo Assembly Information

.vb

Arquivo que contém informações do Assembly.

Arquivo Application Configuration

.config

Arquivo usado para configurações do aplicativo.

Arquivo JScript

.js

Arquivo contendo código JScript

Arquivo VBScript

.vbs

Arquivo contendo código VBScript

Windows Script Host

.wsf

Arquivo que contém Script que é executado como um aplicativo Windows.

Arquivos de um projeto WEB

Arquivos

Extensão

Descrição

Janela Web

arquivos: .aspx .vb

2

Uma janela WEB.

Web Service

arquivos: .asmx .vb

2

Componente que troca mensagens usando os protocolos padrões HTTP, XML, XSD, SOAP e WSDL.

Class

.vb

Arquivo de classe.

Modulo (Visual Basic)

.vb

Arquivo que agrupa funções

Component Class

.vb

Classe de componentes

Data Form Wizard

.aspx (.vb para projetos locais)

Uma janela de dados para aplicativos WEB.

DataSet

.xsd

Arquivo para esquemas XML usando DAtaSet

Web User Control

.ascx

Controle servidor ASP.NET

Página HTML

.htm

Página HTML que inclui código

Frameset

.htm

Um pagina HTMP que inclui várias páginas HTML.

Style Sheet

.css

Arquivo estilo planilha usado para definições HTML

Arquivo XML

.xml

Arquivo XML .

Esquema XML

.xsd

Arquivo esquema para documentos XML.

Arquivo XSLT

.xslt

Arquivo usado para transformar documetnos XML

Web Custom Control

.vb

Controle ASP.NET server.

Arquivo de código

.vb

Arquivo de código

Dynamic Discovery Document

.vsdisco

Arquivo baseado em XML usado para descobrir o caminho do servidor WEB.

Static Discovery

.disco

Arquivo de mecanismo de procura para servidores XML WEB.

Global Application Class

.asax

Arquivo para manipular eventos ASP.NET

Web Configuration

.config

Arquivo de configuração para aplicativos WEB

Texto

.txt

Arquivo de texto

Installer Class

.vb

Classe chamada em processos de instalação

Crystal Report

.rpt

Arquivo Crystal Report

Bitmap

.bmp

Imagem Bitmap

Cursor

.cur

Cursor Padrão

Icon File

.ico

Ícone padrão

Assembly Resource File

.resx

Arquivo de recursos utilizado pelo aplicativo

Assembly Information File

.vb

Informações gerais do assembly

JScript File

.js

Código JScript

VBScript File

.vbs

Código VBScript

Windows Script Host

.wsf

Arquivo para Windows scripting

Em versões anteriores do VB, as janelas tinham extensões .frm, os controles tinham extensões .ctr, as classes tinham a extensão .cls.

Ainda hoje, os arquivos do Vb podem ser abertos por qualquer programa de texto e podem ser alterados diretamente sem usar o Ambiente de Desenvolvimento do Visual Studio.

2.1 - Nova Estrutura do programa escrito em VB .Net

A nova estrutura do programa deve seguir essas etapas:

1. Utilize os comandos Option para verificar os erros de lógica e de sintaxe.

2. Utilize o comando Imports para acessar os recursos da tecnologia .NET Framework.

3. O procedimento Main ( ) será o ponto inicial do programa, ou seja o código que será

executado em primeiro lugar.

4. Utilize os comandos Class, Module ou NameSpace se for criar objetos para o programa.

5. Utilize comandos de compilação condicional #if

#else

se necessário.

Exemplo 1 :

' Programa escrito em Visual Basic . Option Explicit Module Olá Sub Main( )

MsgBox("Olá Mundo!") End Sub End Module

' Exibe a Mensagem na tela.

A primeira linha funciona como comentário. O Comando Option obriga declarar todas as variáveis antes de utilizá-las no programa.

No exemplo acima, no módulo “Olá” está o procedimento Sub Main ( ) que vai controlar a execução do processo e exibir a mensagem “Olá Mundo” na tela do computador.

Quando criamos um programa em VB escolhendo Windows Application na janela de opções, o Visual Studio .NET cria um projeto contendo referências e uma classe chamada sempre de form1.vb. Exemplo 2 :

Public Class Form1

Inherits System.Windows.Forms.Form ‘ O código abaixo foi criado automaticamente pelo Visual Basic #Region " Windows Forms Designer generated code "

Public Sub New() MyBase.New()

' This call is required by the Windows Forms Designer. InitializeComponent()

' Add any initialization after the InitializeComponent() call.

End Sub

' Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then

components.Dispose() End If End If MyBase.Dispose(disposing) End Sub

No exemplo acima, O VS .net criou o protótipo central para ser modificado, contendo uma janela Form1 que possui o código inicial da janela Sub New que é o construtor da janela onde é colocado o código de inicialização da janela que substitui o antigo evento Initialize do VB 6.0.

Resumindo, quando a janela é carregada na tela, o primeiro procedimento a ser executado será o código dentro de Sub New, também conhecido como Construtor (proveniente da linguagem C++).

InitializeComponent( ) é criado automaticamente pelo VStudio e substitui o antigo arquivo .frm que era criado pelo VB 6, onde continha todo as propriedades e códigos fonte da janela em formato de Texto. Resumindo, InitializeComponent( ) grava todas os controles, textos, figuras e outras coisas que forem feitas na janela.

O comando inherits na primeira linha do exemplo acima herda todas as características de uma janela normal. Assim pode-se alterar suas propriedades na janela de propriedades do VB.

Resumindo, para criar uma janela é preciso acionar a classe Windows Form da tecnologia .NET Framework.

2.2 – Atribuir nomes aos elementos do seu programa

Quando for nomear (dar nome as variáveis, objetos ou classes) os elementos do seu programa a Microsoft recomenda usar as seguintes técnicas.

Começar cada Nome com letra maiúscula , Exemplo : ConvertaPrimeiraLetra.

Quando nomear uma função ou método inicie com a ação que ela executa. Exemplo :

CarregarFiltro; IniciarProcura; FecharJanela.

Quando nomear uma Classe ou uma propriedade da classe inicie com o nome a que se refere

a classe . Exemplo : CarroAcessórios;

EmpregadosSalário; ArquivosNome.

Quando nomear uma Interface (Interface) no seu programa, inicie com a letra I maiúscula seguida da ação ou comportamento dessa interface. Exemplo : IPersistente; IAleatório.

Quando nomear eventos para sua classe, inicie com a palavra “Event” ou “Evento”. Exemplo:

EventoFechar; EventoAbrir.

Se for usar um evento que foi disparado no momento da ação ou depois da ação, utilize os verbos no presente ou passado. Exemplo : EventoFechar; EventoFechou; EventoAbrir; EventoAbriu.

Para nomes muito grandes utilize abreviações. Exemplo : HTML (abreviação de Hyper Text Marquet Language).

Não use nomes idênticos no mesmo módulo ou procedimento, o ideal é utilizar nomes completamente diferentes em todo o programa.

2.3 – Utilizando quebra de linha e combinação de código

No momento da codificação os comandos estiverem extensos demais, pode-se quebrar a linha em

diversas partes sem gerar erros de execução. Utilize o “Caracter de continuação de Linha” ( _ ) após

um espaço simples, em seguida continuar a escrever o código em outra linha

Exemplo :

Data1.RecordSource = _

"SELECT * FROM Titles, Publishers" _

& "WHERE Publishers.PubId = Titles.PubID" _

& "AND Publishers.State = 'CA'"

Assim, a linha de código fica mais fácil de ler na tela do seu computador, entretanto existe uma limitação para o número de linhas.

Para combinar muitas linhas de código em uma única linha utilize dois pontos ( : ). Exemplo :

Text1.Text = "Olá" : Vermelho = 255 : Text1.BackColor = Vermelho

2.4 – Caracteres especiais no VB .Net

Alguns caracteres possuem significados diferentes na linguagem, veja a seguir :

1. Parênteses : Use parênteses para criar um procedimento ou função. Exemplo : Sub Main ( ).

2. Separadores ( : ) : Os dois pontos ( : ) são usados para separar blocos de código na mesma linha. Exemplo : Text1.Text = "Olá" : Vermelho = 255 :

Text1.BackColor = Vermelho

3. Concatenação : Para combinar duas variáveis Strings, utilize o operador de concatenação &. Exemplo :

Var1 = "10.01" Var2 = 11 Result = Var1 + Var2 Result = Var1 & Var2

' Result = 21.01 ' Result = 10.0111

Não use o operador “ + “ para concatenar duas string, pois pode gerar erros. Observe os resultados do exemplo acima.

4. Operador de acesso ( . ) : O ponto é utilizado para acessar funções, métodos ou propriedades de uma classe ou objeto. Exemplo : MyForm.Text = "This is my form"

5. Operador de acesso ( ! ) : A exclamação também é utilizada para acessar métodos ou propriedades somente de algumas classes ou estruturas. Exemplo :

RS.Fields!CustomerID.Value = txtCustomerID.Text

6. Caracter de declaração de tipos de dados ( ! ) : O ponto de exclamação também pode ser utilizado para declarar variáveis do tipo Single. Exemplo : Var = 1234578!

2.5 – Criar comentários no Código

Para cada linha de código, pode-se criar um comentário explicando o significado do procedimento, este tipo de linha é ignorado pelo compilador. Utilize o símbolo de comentário ( ‘ ) para ativar o comentário. Exemplo :

' Este é um comentário no início do código

Text1.Text = "Hi!"

' Este é um comentário na mesma linha do código

A Microsoft recomenda criar comentários para cada seção de código dessa forma :

1. Propósito : Inclua esse tópico no comentário, para identificar qual a descrição ou tarefa do código em questão.

2. Requisitos : Inclua esse tópico no comentário, para identificar quais variáveis, objetos, classes e outros elementos utilizados no código em questão.

3. Efeito : Inclua esse tópico para identificar quais variáveis, objetos, classes e outros elementos que serão afetados pelo código em questão.

4. Argumentos : Inc.ua esse tópico para explicar os argumentos exigidos pelo código em questão.

5. Retorno : Inclua esse tópico para identificar o valor de retorno desse código em questão.

Não se pode quebrar linhas em comentário, utilizando o caracter ( _ ). Pode-se utilizar o comando REM para ativar comentários, entretanto esse procedimento requer mais espaço em memória que o símbolo ( ‘ ), portanto utilize o símbolo somente.

2.6 – Limitações do Visual Basic .NET

As versões anteriores do VB tinham várias limitações no código, veja abaixo :

Número de variáveis usadas no mesmo código.

Número de funções usadas no mesmo código.

Número de arquivos abertos no mesmo código.

Número de janelas abertas no mesmo código.

Dentre outras

No VB .NET existem limitações físicas, segundo a Microsoft, mas são tão altas que não há chances

de serem atingidas pelo desenvolvedor, a ponto de não serem nem documentadas oficialmente.

2.7 - Compilação Condicional

Quando se executa um programa, o compilador inicia a leitura do código fonte indistintamente até o final. Entretanto esse comportamento pode ser alterado utilizando a Compilação Condicional.

A compilação condicional faz com que o compilador execute certos blocos de código enquanto

outros são ignorados. É útil quando se deseja usar comandos para certos tipos de Sistemas

operacionais em uso, ou utilizar dicionários para uma língua de um país, etc

Para aplicar esse recurso use o comando de diretiva # if

uma constante a nível de compilação usando o comando de diretiva #Const . Exemplo :

#Then

# Else . Além disso pode-se criar

‘Cria uma compilação para a versão de um programa de língua Francesa ou Alemã, note ‘que FrenchVersion e GermanVersion são constantes predefinidas pelo VB. #If FrenchVersion Then

' <código para a lingua francesa>. #ElseIf GermanVersion Then

' <código para a lingua alemã>. #Else

' <código para outras versões>. #End If

2.7.1

– Criando Constantes de declaração Condicional

Constantes são variáveis que não podem ser alteradas. As constantes de declaração condicional são variáveis que não podem ser alteradas e também não podem ser acessadas pelo código geral.

Pode-se criar constantes com caixa de diálogos de propriedades, por linha de comando ou por comandos em código. Para criar constantes condicionais por comandos em código, utilize #Const. Exemplo :

#Const MeuPaís = "BRASIL" #Const Versão = "8.0.0012" #Const NúmeroPadrão = 36

2.7.2 – Ocultando ou expandindo o código

No VB .NET há um recurso que permite ocultar ou expandir o código escrito no Editor de Códigos, é semelhante ao Windows Explorer ao visualizar os diretórios e subdiretórios do sistema. Quando um diretório possui subdiretórios, o sistema exibe um sinal de mais ( + ) ao lado do nome do diretório corrente, informando que há outros elementos nele. Basta clicar sobre o ( + ) para visualizar os outros elementos.

Assim funciona esse recurso, que pode ser aplicado usando a diretiva #Region. Exemplo :

#Region "O código dentro de Region é ocultado clicando sobre #Region" Private components As System.ComponentModel.Container Dim WithEvents Form1 As System.Windows.Forms.Form

Private Sub InitializeComponent() components = New System.ComponentModel.Container Me.Text = "Form1" End Sub #End Region

Esse recurso torna fácil ler e administrar o código fonte do desenvolvedor. Note que não é possível usar esse recurso quando criar Funções, e qualquer código ocultado ou expandido é lido normalmente pelo compilador.

2.8 – Técnicas de codificação e programação

É necessário utilizar técnicas para aumentar a produtividade do programador Visual Basic .NET, além de solucionar grande parte dos bugs dos programas. Além disso utilizando essas técnicas consolidadas de programação, permite criar códigos de alta qualidade e permite seguir as regras de criação de software das grandes companhias.

Quando for nomear elementos, utilize as seguintes técnicas :

Rotinas ou Procedimentos

Quando criar rotinas ou procedimentos, evite usar nomes confusos que não contribuem para explicar o significado do procedimento. Como por exemplo : Sub AnalizeIsto ( ).

Quando criar classes, evite citar nomes redundantes para as propriedades, métodos ou funções dessa classe. Como por Exemplo : Livro.LivroTítulo use : Livro.Título

Quando Nomear um método ou Função, dê o nome da ação respectiva. Exemplo :

CalculeRaízQuadrada( ) . Com todas as iniciais em maiúsculas.

Variáveis

Quando nomear variáveis que armazenarão dados calculados, finalize o nome com a identificação do cálculo utilizado. Como por exemplo : intSoma, intDiferença, intMax, intMin, pode-se utilizar até o nome de funções do VB para criar os nomes. intSum, intAvg, intIndex, etc

Use nomes complementares quando forem necessários na mesma operação, tais como Início / Fim, Mín / Max, Aberto / Fechado. Exemplo : intInício, intFim, intMín, intMax.

Para nomear variáveis utilize o primeira palavra em minúsculas e as restantes em maiúsculas. Exemplo : documentoFormatoIndexado., ou utilize a notação húngara *.

Para variáveis do tipo Boolean pode utilizar a palavra É, Esta ( Is) para designar se a variável

está na condição True ou False. Exemplo :

ArquivoEstáAberto,

ou

FileIsOpen

Muitos programadores utilizam a palavra Flag para nomear suas variáveis, entretanto é preferível substituir a palavra Flag por outro nome que descreva melhor a variável. Exemplo:

ao invés de documentoFlag , use documentoFormatoIndexado.

Para variáveis utilizadas em loops, dê nomes simples como i, j, x, etc

Utilize sempre constantes nomeadas para efetuar loops e outras condições de teste. Como por exemplo : ao invés de For i = 1 to 7 utilize For i = 1 to intContadorIndexado, onde intContadorIndexado é uma constante nomeada de valor 7.

* Uma notação especialmente popular é a notação húngara. Ela costuma ser usada na programação em Windows e no OS/2. No caso da notação húngara, pode-se antecer uma variável String com “str”, uma variável Integer com “int” , um ponteiro como “p”, funções com “fn”, handles com “h” e assim por diante. A regra é compor o nome da variável utilizando a abreviação das primeiras letras do controle, tipo de dados ou uma combinação de suas primeiras letras com um nome de identificação individual.

A notação húngara foi desenvolvida por um programador da Microsoft chamado Charles Simonyi. Nos velhos tempos da Microsoft, Charles ficou famoso por dar rasantes de helicópteros nos piqueniques da empresa.

Tipo do Controle

Prefixo

Exemplo

3D Panel

pnl

pnlGroup

ADO Data

ado

adoBiblio

Animated button

ani

aniMailBox

Check box

chk

chkReadOnly

Combo box, drop-down list box

cbo

cboEnglish

Command button

cmd

cmdExit

Common dialog

dlg

dlgFileOpen

Communications

com

comFax

Controles

ctr

ctrCurrent

Data

dat

datBiblio

Data-bound combo box

dbcbo

dbcboLanguage

Data-bound grid

dbgrd

dbgrdQueryResult

Data-bound list box

dblst

dblstJobType

Data combo

dbc

dbcAuthor

Data grid

dgd

dgdTitles

Data list

dbl

dblPublisher

Data repeater

drp

drpLocation

Date picker

dtp

dtpPublished

Directory list box

dir

dirSource

Drive list box

drv

drvTarget

File list box

fil

filSource

Flat scroll bar

fsb

fsbMove

Form

frm

frmEntry

Frame

fra

fraLanguage

Gauge

gau

gauStatus

Graph

gra

graRevenue

Grid

grd

grdPrices

Hierarchical flexgrid

flex

flexOrders

Horizontal scroll bar

hsb

hsbVolume

Image

img

imgIcon

Image combo

imgcbo

imgcboProduct

ImageList

ils

ilsAllIcons

Label

lbl

lblHelpMessage

Lightweight check box

lwchk

lwchkArchive

Lightweight combo box

lwcbo

lwcboGerman

Lightweight command button

lwcmd

lwcmdRemove

Lightweight frame

lwfra

lwfraSaveOptions

Lightweight horizontal scroll bar

lwhsb

lwhsbVolume

Lightweight list box

lwlst

lwlstCostCenters

Lightweight option button

lwopt

lwoptIncomeLevel

Lightweight text box

lwtxt

lwoptStreet

Lightweight vertical scroll bar

lwvsb

lwvsbYear

Line

lin

linVertical

List box

lst

lstPolicyCodes

ListView

lvw

lvwHeadings

MAPI message

mpm

mpmSentMessage

MAPI session

mps

mpsSession

MCI

mci

mciVideo

Menu

mnu

mnuFileOpen

Month view

mvw

mvwPeriod

MS Chart

ch

chSalesbyRegion

MS Flex grid

msg

msgClients

MS Tab

mst

mstFirst

OLE container

ole

oleWorksheet

Option button

opt

optGender

Picture box

pic

picVGA

Picture clip

clp

clpToolbar

ProgressBar

prg

prgLoadFile

Remote Data

rd

rdTitles

RichTextBox

rtf

rtfReport

Shape

shp

shpCircle

Slider

sld

sldScale

Spin

spn

spnPages

StatusBar

sta

staDateTime

SysInfo

sys

sysMonitor

TabStrip

tab

tabOptions

Text box

txt

txtLastName

Timer

tmr

tmrAlarm

Toolbar

tlb

tlbActions

TreeView

tre

treOrganization

UpDown

upd

updDirection

Vertical scroll bar

vsb

vsbRate

Lista de nomes de Menus onde a regra é criar um prefino Mnu + Nome do Menu utilizado :

Menu

Nome do Menu

File Open

mnuFileOpen

File Send Email

mnuFileSendEmail

File Send Fax

mnuFileSendFax

Format Character

mnuFormatCharacter

Help Contents

mnuHelpContents

A Microsoft recomenda utilizar uma codificação modular, isto significa que se deve utilizar

variáveis, constantes, controles agrupados dentro de um procedimento que execute uma tarefa única em um formulário simples. Por exemplo, para acionar uma caixa de diálogo Abrir, devemos colocar todas as variáveis, controles e flags necessários agrupados em um único botão ou menu “Abrir” que execute a tarefa de acionar essa Caixa de diálogo, uma vez terminado a execução da tarefa todas as variáveis e controles são finalizados.

Lista de sugestão de escopo de variáveis (esses prefixos eram muito utilizados em versões anteriores

do Visual Basic, entretanto com a nova formulação da linguagem, essa terminologia quase não se usa

mais) :

Escopo

Prefixo

Exemplo

Global

g

gstrUserName

Module-level

m

mblnCalcInProgress

Local to procedure

Nenhum

dblVelocity

Para se formar um nome de constante adequadamente, a regra é utilizar o prefixo do escopo acima + o prefixo do tipo de dados + as letras iniciais maiúsculas do significado/propósito da constante, exemplo:

gintIdadeDoAluno

‘ Variável global , do tipo de dados inteiro , Idade do aluno

(g + int + Idade Do Aluno)

mstrNomeDoAluno

(m + str + Nome Do Aluno)

‘Variável a nível de módulo, do tipo string, Nome do Aluno

Use os seguintes prefixos para indicar o tipo de dados da variável (esses prefixos eram muito utilizados em versões anteriores do Visual Basic, entretanto com a nova formulação da linguagem, essa terminologia quase não se usa mais):

Tipo de Dado

Prefixo

Exemplo

Boolean

bln

blnFound

Byte

byt

bytRasterData

Collection object

col

colWidgets

Decimal

dec

decRevenue

Date (Time)

dtm

dtmStart

Double

dbl

dblTolerance

Error

err

errOrderNum

Integer

int

intQuantity

Long

lng

lngDistance

Object

obj

objCurrent

Single

sng

sngAverage

String

str

strFName

Compound-defined type

cdt

cdtEmployee

Os nomes de variáveis de tipos definidos pelo usuário (tipos de dados compostos) podem ser definidos com o prefixo “cdt” , assim cdt + nome da variável / combinação das tres primeiras letras , exemplo :

cdtCli‘Uma variável do tipo de dados composto , Cliente

( cdt + Cli)

Tabelas

Quando nomear tabelas use nomes sempre no singular. Exemplo : ao invés de tabela Alunos use tabela Aluno.

Quando nomear campos em tabelas, evite repetir o nome da tabela no Campo. Exemplo : ao

invés do nome do Campo

AlunoEndereço

utilize o nome

Endereço.

Não utilize o Tipo de Dados do campo para compor o seu nome.

Microsoft SQL Server

Evite o nome com abreviações, somente use abreviações quando tiver um significado consistente.

Quando nomear funções no SQL Server utilize a descrição do valor retornado. Exemplo :

RetorneNomeJanelaAtual( ) .

Os nomes de arquivos, pastas, procedimentos armazenados devem descrever o seu propósito.

Evite reutilizar nomes de funções para variáveis ou vice-versa. Exemplo : Função com nome

ProcessarArquivo( )

Variável com nome

IProcessarArquivo.

Evite utilizar homônimos ou palavras com mesmo fonema . Exemplo Rigth e Write.

Certifique-se que não há erros quando soletrar palavras. Pois algumas palavras possuem significados diferentes em certas regiões do Globo. Exemplo Check e Cheque não tem o mesmo significado, Color e Colour não tem o mesmo significado.

Evite usar marcações especiais quando nomear elementos , tais como $ , %. (utilizadas para string e inteiros repectivamente).

Comentários

Quando modificar o código fonte, coloque sempre a data da última modificação.

No início de cada rotina, coloque os comentários no formato Propósito, Descrição,

Parâmetros, etc

.( Ver item 3.5).

Evite criar comentários no final de linha, pois fica mais difícil de ler. Se for imperativo, coloque com uma tabulação padrão para todos os comentários desse tipo.

Evite asteriscos e outros caracteres para criar o comentário, utilize somente espaços.

Apague qualquer comentário improdutivo no código.

Utilize palavras completas no Comentário, evite portanto abreviações e símbolos outros.

Crie comentário para todo o código não óbvio.

Explique o que consiste o loop e outros blocos de código.

Formato

Utilize sempre o mesmo tipo de formatação para o código escrito. Isso inclui o tamanho da letra, o tipo da letra, o espaçamento da letra, a cor da letra, etc

Utilize sempre parênteses , chaves e outros, para agrupar conjuntos de códigos para a mesma

finalidade. Exempo

if

(x >5 and x<10) then

Crie uma tabulação padrão que torne consistente o código para cada bloco dentro de procedimentos, loops, funções e etc

Evite combinar muitas linhas de código em uma linha única , utilizando o separador ( : ). Exemplo : x = 350 : intContador = 4 : ArquivoEstáAberto = true

Quando escrever comandos em SQL, utilize letras maiúsculas para palavras chaves SQL e somente iniciais maiúsculas para Tabelas, colunas e Visões.

Divida um código complexo em pedaços menores, podendo ser em módulos ou arquivos separados

Coloque a Cláusula SQL separados das linhas de comando para facilitar a leitura e edição do código. Exemplo :

SELECT FirstName, LastName FROM Customers WHERE State = 'WA'

2.9 – Declarando Elementos

A linguagem utiliza alguns tipos de instruções tais como :

Palavras-Chaves (KeyWords) – São palavras reservadas da linguagem para construir uma estrutura de comandos, e não podem ser usadas individualmente.

Comandos (Statements) – São instruções completas que fazem sentido ao compilador e podem conter palavras chaves, operadores, constantes, expressões. Os comandos são divididos em duas categorias :

1. Comandos de declaração – Usados para nomear variáveis, constantes, matrizes, definir procedimentos e objetos.

2. Comandos de execução – Usados para executar uma ação, e englobam todos os comandos de loop, comandos de decisão e todos os comandos que utilizam operadores matemático ou condicionais.

Expressões – São séries de elementos que representam valores, separados por operadores que resultam em outro valor. Utilizam de operadores de comparação para comparar dois valores; utilizam operadores matemáticos para efetuar operações entre dois ou mais valores; utilizam de elementos Booleanos para fazer comparações e parênteses para alterar a ordem de cálculos.

A Microsoft não reconheceu os Comandos de atribuição como uma terceira categoria, mas incluiu na documentação como todos aqueles que utilizam operadores de atribuição.

Para declarar elementos para uso no código utiliza-se Comandos de declaração ou Palavras-Chaves.

O elemento declarado fica retido na memória do computador sendo gerenciado diretamente pela

tecnologia .NET Framework.

Os elementos declarados no código podem ser constantes, variáveis, objetos, classes, enumerações,

estruturas, propriedades, métodos, funções, eventos, interfaces, delegates (delegar).

O VB ignora letras maiúsculas e minúsculas quando se referir a elementos declarados, portanto pode-

se usar MinhaVariável quanto minhavariável.

Quando se declara elementos, o processo envolve as seguintes considerações :

1. Variáveis – É o espaço reservado dentro da memória do computador, para ser usado no programa.

2. Comandos de Declaração – São comandos do VB que declaram elementos na memória.

3. Tipo de Dados – É o tipo de dados fundamental que o elemento deverá pertencer.

4. Vida útil (LifeTime) – É o período de execução que o elemento está disponível para ser usado.

5. Escopo – É a extensão que o elemento deve atingir, sem ser declarado novamente.

6. Acessibilidade – É a forma que o código deve fazer uso do elemento.

7. Nomes Ambíguos – Quando dois elementos têm o mesmo nome, e como o VB resolve este problema.

1 – Variáveis

Uma variável é um espaço reservado dentro da memória para armazenar valores desconhecidos.

Diferentemente de um ponteiro que representa o local onde ela está endereçada.

Para usar variáveis é necessário aplicar os Comandos de Declaração, utilizando as técnicas de codificação e programação já explicadas acima. Observe que quando se declara uma variável , o compilador reserva um espaço na memória para o valor, mas não a cria explicitamente. Para criar explicitamente uma variável, é preciso declarar a variável e atribuir um valor.

O comando Option Explicit obriga que todas as variáveis sejam declaradas antes do uso.

2 – Comandos de Declaração

Os comandos de declaração são Dim e Const. As palavras chaves (Keywords) são Private, Public,

Shared, Protected, Friend e Static. Exemplo :

Private I As Integer Dim Amount As Double Static YourName As String

Public BillsPaid As Decimal Const Modulus As Single = 4.17825 ‘Esse valor não pode ser alterado.

Public I, J, K As Integer

Dim FirstName, MiddleName, LastName As String

Private S, SArray() As Short

Friend B1, B2 As Byte, C1, C2 As Char

' Declara três variáveis inteiras.

' Declara três variáveis string.

' Uma variável Shor e uma variável de matriz.

' Duas variáveis Byte e duas variáveis Char.

O comando Dim é semelhante as palavras chaves Private e Public. E pode ser usado em

procedimentos, módulos, classes , blocos e estruturas, mas só podem ser acessadas no código que foram declaradas. A diferença entre Private, Public e Dim é que as duas primeiras permitem ou não

que essa variável fique disponível a outros blocos de código, portanto são também chamados de Modificadores de Acesso.

Alguns autores até recomendam não usar o Comando Dim por se tratar de um declarador pouco expressivo.

A palavra chave Private é um modificador de acesso e declara variáveis em todos os blocos de

código, e assim como o comando Dim, só podem ser acessadas no código que foram declaradas. E

não podem ser acessadas por outros blocos de código.

A palavra chave Public é um modificador de acesso e declara variáveis em todos os blocos de

código, e diferentemente de Dim e Private, permitem que outros códigos exteriores utilizem a variável.

A palavra chave Shared é um modificador de acesso que declara variáveis em classes, e permitem

que outros códigos acessem essa variável sem fazer uma referência a classe.

A palavra chave Static é um modificador de acesso e declara variáveis em todos os blocos de código

, exceto Classes e Módulos. Variáveis declaradas com Static retém o último valor na memória

mesmo quando o procedimento em que foi declarado é encerrado.

O

Comando Const declara variáveis que não podem ser alteradas, e são utilizadas em todos os blocos

de

código, entretanto a variável constante fica disponível somente ao código em que foi declarada.

A

palavra chave Protected declara variáveis somente dentro de Classes. Variáveis declaradas com

protected só podem ser acessadas dentro da classe que a declarou ou de classes derivadas.

A palavra chave Friend declara variáveis em todos os blocos de código, exceto procedimentos.

Variáveis declaradas com Friend podem ser acessadas por todo o programa.

3 – Tipos de Dados Para organizar como as variáveis gravam informações na memória, foram criados tipos de dados elementares, que podem ser numéricos ou caracteres.

Os tipos de dados numéricos podem ser integrais (números inteiros) e não integrais (números decimais fracionários). Os números inteiros são mais rápidos em processamento que os não integrais.

Para cada tipo de Dados há uma faixa máxima de informações que podem ser gravados, além disso certos tipos de dados podem ser sinalizados ou não sinalizados, isto significa que a faixa de informações podem variar de números negativos até números positivos.

Tipo de Dados

Common language

Tamanho em

Faixa

runtime

Bytes

Boolean

System.Boolean

2

bytes

True ou False

Byte

System.Byte

1

byte

0

à 255 (não sinalizado).

Char

System.Char

2

bytes

0

à 65535 (não sinalizado).

Date

System.DateTime

8

bytes

0:00:00 de 1 Janeiro, 0001 à 11:59:59 da noite de 31 Dezembro, 9999.

Decimal

System.Decimal

16 bytes

à +/-79,228,162,514,264,337,593,543,950,335 sem virgula;

0

0

à +/-7.9228162514264337593543950335 com 28

dígitos depois da vírgula; o número mais próximo do zero é

     

+/-0.0000000000000000000000000001 (+/-1E-28).

Double

System.Double

8

bytes

-1.79769313486231570E+308 à -4.94065645841246544E-324 negativos; e 4.94065645841246544E-324 à 1.79769313486231570E+308 positivos.

(double-ponto

 

flutuante)

Integer

System.Int32

4

bytes

-2,147,483,648 à 2,147,483,647.

Long

System.Int64

8

bytes

-9,223,372,036,854,775,808 à

(long integer)

 

9,223,372,036,854,775,807.

Object

System.Object (classe)

4

bytes

Qualquer tipo de dados

Short

System.Int16

2

bytes

-32,768 à 32,767.

Single

System.Single

4

bytes

-3.4028235E+38 à -1.401298E-45 negativos; e 1.401298E-45 à 3.4028235E+38 positivos.

(single-ponto

 

flutuante)

 

String

System.String (class)

Depende do

0 até 2 bilhões de caracteres Unicode.

sistema

User-Defined

(herda de

Depende do

Determinado pela faixa de cada tipo de dados usado na estrutura

Type

System.ValueType)

sistema

(estrutura)

 

O VB .NET manipula os tipos de dados elementares de duas formas :

Tipo Valor – Quando a variável grava os dados dentro da memória. Assim enquadram-se todos os tipos de dados numéricos, Boolean, Char, Date, Estruturas e Enumerações.

Tipo Referência – Quando o sistema aponta para um endereço de memória onde está os dados. Assim enquadram-se os tipos de dados String, Matrizes, Classes e Forms (Janelas).

A partir do VB .NET cada tipo de dado listado acima, é implementado como uma estrutura e Classe da tecnologia .NET Framework. Isto significa que cada tipo de dado tem suas próprias funções e métodos internos.

Basta verificar na coluna Common language runtime (CLR) qual classe pertence o tipo de dado elementar.

Exemplo :

Dim strTeste as string Dim intTeste2 as System.Int32

strTeste.Trim ( ) intTeste2.ToString ( )

No Exemplo acima, foi declarado uma variável do tipo String, e foi invocada a função Trim que remove os espaços em seu conteúdo. Em seguida a variável intTeste2 foi declarada como um tipo de dados Inteiro da classe .NET Framework, invocando a função ToString que converte os dados para string.

Outra forma de declarar variáveis, é forçar a variável para tornar-se de um tipo utilizando os “caracteres de tipo”. Veja a tabela abaixo:

Caracter de tipo

Tipo de Dado

Exemplo

%

Integer

Dim L%

&

Long

Public M&

@

Decimal

Const W@ = 37.5

!

Single

Dim Q!

#

Double

Static X#

$

String

Private V$ = "Secret"

Caracter de tipo

Tipo de Dado

 

Exemplo

S

Short

 

I = 347S

I

Integer

 

J = 347I

L

Long

 

K

= 347L

D

Decimal

 

H

= 347D

F

Single

 

Y

= 347F

R

Double

 

Z

= 347R

C

Char

 

Q

= "."C

4

– Vida Útil (LifeTime)

 

Vida útil é o período em que a variável mantém o valor na memória. Dependendo como foi declarada

a variável, sua vida útil é igual ao período de tempo que o aplicativo estiver em execução.

Por outro lado, uma variável declarada dentro de um bloco de código, sua vida útil é igual ao tempo que o procedimento estiver em execução. Assim quando o procedimento termina, a variável finda sua vida útil e a memória é limpa e fica disponível novamente ao Sistema Operacional.

Quando uma variável é declarada com a palavra chave Shared, sua vida útil é extendida até quando

o aplicativo estiver em uso.

Quando uma variável é declarada com a palavra chave Static, sua vida útil é extendida entre procedimentos que estiver em uso.

5

– Escopo

O

Escopo de uma variável é a seção de um aplicativo que pode ver e manipular uma variável. Deste

modo, uma variável declarada em um procedimento, só pode ser manipulada nesse procedimento, as outras seções ou blocos de código não podem ver nem manipular essa variável.

O Escopo tem esses níveis :

Escopo de Bloco – A variável fica disponível somente no bloco de código em que foi declarada. Escopo de Procedimento – A variável fica disponível somente no procedimento que foi declarada. Escopo de Módulo – A variável fica disponível para todo o código do módulo, classe ou estrutura que foi declarada. Escopo de EspaçoNomeado (NameSpace) – A variável fica disponível para todo o código desse Espaço Nomeado.

6 – Acessibilidade

Acessibilidade é a permissão que uma variável poderá ser acessada ou manipulada. Para definir sua

acessibilidade usa-se as palavras chaves : Public, Private, Friend, Protected, Protected Friend.

Pode-se criar uma variável com escopo de Módulo, mas declarada com private, e nenhum outro bloco de código poderá ver e manipular essa variável.

7 – Nomes Ambíguos

Quando se declara elementos, o Compilador do VB procura a referência a este nome na declaração.

Se houver mais de um elemento com o mesmo nome, o Compilador utiliza o elemento que estiver no mesmo Escopo. Exemplo :

Module Mod1 Public Sub Perform() ' A palavra Chave Public permite acesso de outros procedimentos.

'

End Module

Module Mod2 Public Sub Perform()

' Pode ser diferente do cálculo executado em Perform( ) do Mod1.

'

Perform()

' Chama somente Perform( ) do Mod2 que é o modulo ativo (mesmo escopo).

Mod1.Perform()

End Module

' Chama Perfomr( ) do Mod1.

Module Mod3

'

Mod1.Perform()

' Chama Perform( ) do Mod1.

Perform()

' Chama Perform( ) que é um nome ambíguo e portanto gera um erro.

End Module

O Exemplo acima usa 3 Módulos, Mod1, Mod2 e Mod3. O módulo Mod1 possui um procedimento declarado como Público chamado Perform( ) e portanto está disponível para acesso por outros procedimentos. O módulo Mod2 possui outro procedimento declarado como Público também chamado Perform( ), também disponível para acesso por todos os outros procedimentos. E finalmente o módulo Mod3 que não possui nenhum procedimento declarado.

Note que tanto Mod1 quanto Mod2 têm um mesmo nome de procedimento Perform( ) (Nome ambíguo). Quando Mod2 chama esse procedimento, o compilador procura o elemento declarado no mesmo Escopo, isto é Perform( ) declarado no módulo ativo Mod2. Em seguida, quando Mod2 utiliza Perform( ) declarado em Mod1, utiliza uma descrição mais completa do lugar, informando ao compilador onde deverá procurar a referência do elemento. Neste caso houve uma qualificação do nome, e portanto não gera erros de execução.

Quando Mod3 utiliza Perform( ) declarado em Mod1, utiliza uma descrição mais completa do lugar onde o compilador deverá procurar a referência do elemento. Quando Mod3 utiliza Perform( ) sem qualificar seu nome, o compilador encontra o procedimento em Mod1 e Mod2 portanto não sabe qual utilizar, gerando erro de execução.

Ao utilizar procedimentos ou funções de Classes ou Estruturas, é obrigatório qualificar o nome além de fazer referência à classe ou estrutura. Exemplo :

Dim DemoClass As Class1 = New Class1() DemoClass.SomeSub( )

No Exemplo acima, foi criado uma variável de referência a classe Class1, em seguida invocou-se o método SomeSub( ). Não é permitido usar Class1.SomeSub( ) diretamente, pois nesse caso gera erros de execução.

No VB .NET há formas de tratar elementos ambíguos, utilizando a técnica de ocultar elementos, também conhecido como Shadow. Com Shadow um elemento fica ocultado de outro elemento com mesmo nome além de não ficar disponível.

Há duas formas de usar a técnica de ocultar elementos.

1. Shadowing através do Escopo – No penúltimo exemplo, o procedimento Perform( ) de Mod2, ocultou o procedimento Perform( ) de Mod1, pois o compilador obedeceu a regra de Escopo. Outro Exemplo :

Module Mod3

Public Num As Integer Sub Show() Dim Num As Integer

' Variável a nível de módulo.

' Variável Local

Num = 2

MsgBox(CStr(Mod3.Num))

'Variável Local agora tem o valor 2.

' Exibe o número 0.

End Sub

Sub UseModuleLevelNum()

Num = 1 ' Show() End Sub End Module

' Atribui 1 à Mod3.Num

' Chama Show, que exibe o valor da Variável de módulo Num, que agora é 1

No exemplo acima, Mod3 tem uma variável a nível de módulo Num, e dois procedimentos Show( ) e UseModuleLevelNum( ). No procedimento Show( ) foi declarada uma variável local ambígua a Num.

Quando o procedimento Show( ) é acionado, o compilador usa a variável local declarada dentro deste procedimento, ou seja no mesmo escopo do procedimento ativo, portanto a variável local oculta (shadows) a variável de módulo. Portanto, no exemplo acima, para fazer referência a variável em shadow é preciso qualificar o seu nome, como Mod3.Num em

MsgBox(CStr(Mod3.Num)).

Quando o procedimento UseModuleLevelNum( ) é acionado, o compilador usa a variável a nível de módulo, pois não há nomes ambíguos dentro desse procedimento.

2. Shadowing através de Herança – Quando uma classe é derivada de outra, pode-se ocultar (Shadow) o elemento ambíguo existente na classe básica, utilizando a palavra chave Shadow. Não se deve confundir Shadow (Ocultar) com Override (Substituir), que será discutido mais tarde. Exemplo :

Public Class BaseCls Public Z As Integer = 100

End Class Public Class DervCls Inherits BaseCls Public Shadows Z As String = "*"

End Class Public Class UseClasses Dim BObj As BaseCls = New DervCls()

' Elemento a ser ocultado (Shadowed).

' O Elemento para ocultar o anterior

' DervCls deriva de BaseCls.

Dim DObj As DervCls = New DervCls() Public Sub ShowZ() MsgBox("Classe básica: " & BObj.Z)

MsgBox("Classe derivada: " & DObj.Z) End Sub End Class

' Acessa através da classe derivada.

' exibe o número 100. ' exibe a string "*".

No exemplo acima, há três classes : BaseCLS que é classe básica e DervCLS que é a classe derivada, e finalmente a Classe UseClasses que utiliza as duas primeiras. A classe básica possui uma variável numérica pública Z que pode ser acessada por todos os códigos que utilizam essa classe. A Classe Derivada possui outra variável Z string mas configurada com a palavra chave Shadows que oculta a variável numérica da classe básica.

UseClasses faz referência as duas classes básica e derivada que muda o valor de cada variável. Note que a referência de BObj é BaseCls por isso a variável numérica é utilizada pelo compilador, enquanto que DObj, a variável string é utilizada pelo compilador.

No caso de DObj, o elemento String ocultou (Shadowed) o elemento numérico.

2.10 – Tipos de Dados

Esta seção tem por objetivo estudar os tipos de dados fundamentais e apresentar um novo tipo de dado composto, além de outros recursos de programação aplicados aos tipos de dados.

O VB .NET, por default, obriga a declaração de todos os elementos antes de usá-los no código. Exemplo :

Dim MinhaVariável as string

Se não for declarado o elemento no código, o compilador acusa o problema e gera erro. Este tipo de recurso chama-se Declaração Explícita. Para desligar esse recurso utiliza-se o comando Option Explicit Off.

Toda vez que o compilador encontrar a declaração Option Explicit Off, qualquer variável não declarada em código irá ser considerada do tipo Object, entretanto esse tipo de comportamento do compilador gera potenciais erros de execução além de gerar um aplicativo de desempenho ruim.

É recomendável utilizar em todos os códigos fontes o comando Option Explicit On para obrigar o compilador varrer todas as variáveis não declaradas.

Quando todas as variáveis são declaradas com o tipo de dados em Option Explicit On, diz-se que os elementos são Altamente tipificados (Strong Typing), que além de aumentar a velocidade do aplicativo, se beneficia dos recursos do editor de códigos do Visual Studio, como por exemplo :

IntteliSense – É um recurso que exibe as propriedades e métodos de um classe, simultaneamente enquanto se digita no editor.

Verificação de sintaxe – O compilador verifica a sintaxe do código escrito simultaneamente enquanto se digita no editor.

1 – Usando tipos de dados Short

As variáveis do tipo Short podem guardar valores de 16 bits (2 bytes). É o menor tipo de dados numérico disponível.

As normas aplicadas ao tipo de dados Integer logo abaixo, se aplicam ao tipo de dados Short. Exemplo :

Dim MeuNúmero as short Dim NossoNúmero as int16

MeuNúmero = 32767 NossoNúmero = 32768 ‘O VB exibe uma mensagem “NaM Não é um nùmero”

No exemplo acima há duas variáveis declaradas do tipo Short (int16 é a mesma coisa que Short), a primeira variável recebeu o valor máximo de armazenamento, enquanto que a segunda recebeu um valor superior a capacidade de armazenamento. O VB acusa o erro exibindo uma mensagem de erro

na compilação “Existem erros, deseja continuar?“.

2 – Usando tipos de dados Integer

Qualquer tipo de dados numérico exige maior processamento do sistema , assim é necessário definir o tipo adequadamente antes de usar. O tipo Integer armazena dados em 16-bit (2 byte) dentro da faixa especificada acima, podendo ser utilizada para criar um enumerador (veja posteriormente).

A atribuição de um valor a variável é simples, utilizando apenas o operador de atribuição ( = ) e

nunca utilize separadores de milhares. Qualquer caractere diferente de número não será aceito pelo VB, gerando erro de Type Mismatch.

VariávelInteger = 1234

Qualquer valor digitado entre aspas ( “ “ ) é uma string por definição, entretanto o VB ativa uma interpretação correta para o tipo de dados da variável. Veja abaixo :

VariávelInteger = “1234”

O VB não se incomoda com aspas, já que a variável é do tipo numérica, podendo até efetuar

operações matemáticas corretamente, entretanto se houvesse um caractere diferente de número, o sistema geraria um erro de Type Mismatch. Como no exemplo :

VariávelInteger = “1234A”

‘Tipo Integer não suporta caracteres diferentes de número

Pode-se utilizar um separador de precedência “( ) “ para atribuir o valor numérico a uma variável integer sem alterar a interpretação do VB. Exemplo :

VariávelInteger = (1234)

Embora o parênteses não seja um caractere numérico, ele possui um significado de ativar a precedência de primeiro plano em cálculos do compilador, pois desta forma não interfere na interpretação do compilador VB. Entretanto quando se combina aspas + parênteses na atribuição de um valor numérico, o resultado é ligeiramente diferente :

VariávelInteger = “(1234)” Msgbox VariávelInteger

No exemplo acima, a VariávelInteger terá um valo negativo –1234 exibido na caixa de mensagem Msgbox. A combinação de aspas e parênteses “( )” troca o sinal de um valor numérico positivo, transformando-o em negativo. Essa funcionalidade foi inserida neste contexto como simples curiosidade.

Conclui-se que um parênteses e aspas podem criar uma interpretação diferente no compilador do VB quando atribuirmos valores a variáveis Integer, portanto devemos nos ater sempre as formas mais simples e corretas de programação, não devemos portanto “inventar” coisas novas para o sistema “descobrir” e que poderá levar a resultados imprevisíveis.

Uma variável do tipo Integer, quando não devidamente inicializada com um valor atribuído, tem como Default o valor zero (0) , assim por exemplo, se um desenvolvedor esquecesse de atribuir um valor a uma variável Integer, esse valor seria Zero (0) devido a natureza do tipo de dados Integer, assim é completamente diferente de uma variável String vazia “”. Exemplo :

Dim MeuInteiro as int32 ‘Mesma coisa que Integer Dim NossoInteiro as integer

MeuInteiro = 1234 NossoInteiro = 1234

3 – Usando tipos de dados Long

Os tipos de dados Long são armazenados em 32–bits (4 byte), que irremediavelmente necessitam de mais memória do sistema. Todas as observações referentes ao tipo de dados integer, se aplicam ao tipo de dados Long, com uma ressalva na capacidade de faixa de dados que este suporta. Exemplo :

Dim MeuLong As Int64

MeuLong = 10

MsgBox(MeuLong.MaxValue)

MsgBox(MeuLong)

No exemplo acima, foi declarado uma variável do tipo Long (ou Int64) atribuindo o valor 10. Em seguida foi utilizada uma função interna dessa classe que retorna o valor máximo de armazenamento desse tipo de dados.

Observe que todos os tipos de dados possuem funções específicas, pois fazem parte de classes da tecnologia .NET Framework.

4 – Usando tipos de dados Double e Single

Os tipos de dados Double armazenam informações em 64-bits (8 byte) e são especialmente utilizados para cálculos precisos com números decimais. Os tipo de dados Single armazenam informações em 32-bits (4-bite). Todas as observações referentes ao tipo de dados integer se aplicam aos dados Double e Single

VariávelDouble = 12.123456789

‘O grande benefício deste tipo de dados são as casas decimais e

‘sua precisão nos cálculos.

Note porém que o VB somente aceita o separador decimal ponto ( . ) ao invés da vírgula, veja explicações no tipo de dados Decimal logo mais adiante.

5

– Usando tipos de dados Byte

O

tipo de dados Byte armazenam informações em 8-bit (1-byte), e são utilizados para conter dados

binários. Pode-se observar que o tipo de dados Byte é também referenciado em banco de dados, onde é semelhante ao tipo de dados SmallInt em SGBD SQL Server. Como um exemplo de utilização de dados binários é copiar o conteúdo de um campo de dados no formato de imagem binária (*.bmp, *.jpg, etc) para outro campo de dados :

Dim MinhaFoto as Byte MinhaFoto = recordset.Fields(“Foto”).value

No fragmento de código acima, a variável MinhaFoto foi declarada explicitamente como Byte, e foi atribuída a ela, o campo “Foto” de um objeto de banco de dados Recordset. Assim o conteúdo binário dessa foto foi armazenada no tipo de dados Byte, que pode ser transferida para outro campo do banco de dados.

O tipo de dados Byte quando não devidamente inicializado pelo desenvolvedor, terá sempre como

valor Default o zero (0).

6 – Usando o tipo de dados Boolean

Um tipo de dados Boolean armazena dois valores possíveis : Verdadeiro (-1) ou Falso (0) em números de 16-bit (2-byte). O tipo de dados Booleano contém informações do tipo yes/no, on/off, true/false. O valor padrão de uma variável do tipo de dados Boolean é sempre false (falso).

Os valores True e False são constantes pré-definidas no VB, que por outro lado poderiam ser referenciadas como –1 e 0 respectivamente. O uso do tipo Boolean é tipico para operações de comparação ou como retorno de funções específicas :

VariávelBoolean = ( 1 = 2)

A VariávelBoolean no exemplo acima, terá como resultado o valor 0 (False), decorrente de uma

comparação 1 = 2. Se a expressão de comparação fosse 2 = 2 , o valor de VariávelBoolean seria –1 (True).

Um outro exemplo de comparação entre strings para uso em tipos de dados boolean, confirma a hipótese de que strings devem ser idênticas na sua construção, onde os caracteres maíusculos e minúsculos fazem a diferença, neste caso específico de comparação :

VariávelBoolean = ( “Campo” = “CAmpo”)

Os dois elementos são strings semelhantes, entretanto não são idênticas, pois “CA” maiúsculo faz a distinção com “Ca” , assim o resultado de VariávelBoolean será False.

As propriedades dos objetos, onde é informado true ou false (como por exemplo Enabled) são do tipo Boolean. Como já foi dito , uma variável Boolean não inicializada com a atribuição , terá como Padrão o valor False.

7 – Usando o tipo de dados Date

Os tipos de dados Date armazenam valores em números 64-bit (8-byte). Quando outros tipos de dados são transformados para o tipo de dados Date, os números representados a esquerda do valor decimal é a data, e os números representados a direita do valor decimal é o horário.

Há duas regras para atribuição de datas :

O sinal # ativa o reconhecimento de datas no VB.

Sempre digite datas no formato mm/dd/aa para certificar-se que o sistema interpretará corretamente

os dados, em qualquer região. Exemplo :

VariávelDate = #12/30/2002#

‘ data no formato mm/dd/aa

Portanto é necessário incluir o sinal # de forma a evitar uma interpretação indevida pelo compilador, no caso de uma data em string “12/30/2001” o compilador não seria capaz de executar operações com datas. Exemplo :

VariávelDate1= “12/30/2001” VariávelDate2 =“11/30/2001” MsgBox VariávelDate1 – VariávelDate2

O compilador do VB não gera mensagens de erro no caso do exemplo acima, mesmo que as expressões não estejam devidamente configuradas com o sinal #, entretanto no momento de efetuar operações com datas, o erro é iminente (Type mismatch).

O exemplo acima seria corretamente configurado quando transformássemos as expressões em datas,

e o resultado final seria 1 mese de diferença entre as datas. Agora o compilador interpreta exatamente

as

expressões como datas, permitindo a execução de operações.

VariávelDate1= #12/30/2001# VariávelDate2 =#11/30/2001# MsgBox VariávelDate1 – VariávelDate2

O

como resultado a data e o horário do sistema :

tipo de dados Date também pode receber uma função intrínseca de data do VB, de forma a retornar

VariávelDate = Now Msgbox VariávelDate

‘Função Now que retorna a data e hora atual do sistema

O resultado obtido na caixa de Mensagem será : 23/11/2001 18:46:13 como exemplo da construção

acima.

Para um cálculo envolvendo dias, bastaria acrescentar ou subtrair da expressão data um inteiro simples, como mostrado abaixo :

VariávelDate = #12/01/2001# Msgbox (VariávelDate –1 )

A mensagem final seria 01/11/2001, pois foi subtraído 1 dia da data originalmente atribuída a

VariávelDate. Deve-se observar, entretanto que para efetuar operações com datas mais eficiente, usa-

se as funções intrínsecas de datas do VB.

Note sempre que o formato atribuído é mm/dd/aa, caso essa regra não for obedecida, o VB trata de corrigir o erro, invertendo a ordem das datas automaticamente. Entretanto, não se pode esperar um bom resultado como por exemplo o dia 01/02/2001, o resultado final seria 02/01/2001 ao invés de

01/02/2001.

O VB foi concebido em língua Inglesa/U.S. , que considera as datas no formato mm/dd/aa,

descartando qualquer possibilidade de formatação diferente, portanto trate sempre de usar essas

regras daqui para frente, de modo a evitar confusões em cálculos e atribuições.

O tipo de dados Date quando não devidamente inicializado pelo desenvolvedor, isto é não for

atribuído um valor de data, terá como valor Default 00:00:00.

8 – Usando o tipo de dados Decimal

Os tipos de dados Decimal são armazenados em números de 128-bit (12-byte) inteiros a potência de 10, que representa o número de casas decimais. Esse tipo de dados, trabalha com números de grande precisão. Exemplo :

Dim a As Decimal = 328.558 Dim b As Decimal = 12.4051 Dim c As Decimal c = a * b MsgBox(c)

9

– Usando o tipo de dados Object

O

tipo de dados Object armazena endereços de 32-bit (4-byte) dos objetos em referência. Esse tipo

de

dados é suficientemente flexível para fazer referência a qualquer tipo de objeto reconhecido pelo

sistema. Essa definição de armazenar endereços assemelha-se a um conceito de ponteiros em C++, guardando suas proporções. Exemplo :

Dim objDb As Object Set objDb = OpenDatabase("c:\Vb5\Biblio.mdb")

A variável objDb foi declarada explicitamente como um objeto de banco de dados. Note, que a

declaração foi explicitamente genérica com object, de forma a piorar o desempenho do sistema, como regra geral tente sempre declarar objetos como Classes a que pertencem ( discussão em capítulos posteriores), uma forma de pesquisar a classe a que pertence o objeto é o Object Browser.

As variáveis do tipo Object podem ser tratadas do Tipo Valor ou do Tipo Referência já estudadas anteriormente.

O Valor Nothing é usado para desassociar um objeto a variável. É recomendado desassociar (limpar

da memória) todas as variáveis Object que não forem mais utilizadas no programa. Exemplo :

Dim brush As System.Drawing.Brush brush = New System.Drawing.Brush(bmap) . brush = Nothing

.

.

.

.

.

No exemplo acima, foi utilizado uma variável de objeto que faz referência a um classe da tecnologia .NET Framework para criar um instrumento de desenho, em seguida após o uso, foi desassociado a variável do objeto, liberando a memória ao sistema.

10

– Usando o tipo de dados Char

O

tipo de dados Char aceita somente caracteres Unicode 2 bytes (16 bit). Pode usar métodos como

IsDigit e IsPunctuation em variáveis desse tipo para determinar sua classificação.

Se o comando de verificação Option Strict estiver ligado, é preciso anexar o caracter Literal para que o compilador identifique o tipo de variável corretamente. Exemplo

Option Strict On ' Dim CharVar As Char

CharVar = "@" CharVar = "@"C

' Não pode converter String em Char com Option Strict On. 'Assim pode

11

– Usando tipos de dados String

O

tipo de dados String armazenam caracteres alfanuméricos e símbolos padrões de código ASCII ( 0

até 255) que representam todos os caracteres existentes, entretanto há de se mencionar que nem todos

os caracteres dentro dessa faixa são suportados pelo Windows. Há somente um tipo de strings :

• Os strings de tamanho variável (variable-length) que diminui ou cresce a medida que os dados são adicionados a variável.

Para atribuirmos valores em strings, basta colocarmos esse valor entre aspas “ “ , para ativar a interpretação do VB para tipos de dados string. Assim :

VariávelString = “Carro”

No caso de uma abstenção no uso de aspas, o VB não interpreta a expressão como string, desde que ela não ultrapasse uma palavra simples :

VariávelString = Carro VariávelString = Carro Azul

‘O VB não interpreta essa expressão como string ‘O VB não interpreta como string, mas como uma linha de comando

No exemplo acima, a primeira atribuição não ocorre porque o VB não interpreta a expressão como uma string válida, assim a VariávelString terá string vazio “”. No último exemplo, o VB interpretou a expressão como uma linha de comando de código ao compilador, e não como uma expressão String, neste caso o VB gera uma mensagem de erro em execução ( Esperado final do comando !) , pois a expressão não é uma palavra simples.

O VB tem uma sensibilidade especial para caracteres numéricos, de forma que não há necessidade de

utilizar-se de aspas para sua atribuição , conforme o exemplo :

VariávelString = 1234 Ou Variável String = “1234”

Logicamente, não haverá maneira de efetuar qualquer operação matemática, o que pode ser feito é uma concatenação de variáveis, com resultado de 12341234 (use sempre o operador & , veja em

capítulo posterior). Por outro lado, se fosse atribuído uma expressão 1234B sem aspas, o caractere não numérico geraria um erro de execução.

De qualquer forma , é sempre necessário utilizar aspas “ “ para atribuirmos strings a variáveis string, como uma forma correta de programação, mesmo que seja expressões com números.

Se uma variável String não for inicializada, isto é, se o desenvolvedor não atribuir nenhuma expressão a ela, o seu valor será vazio “”.

12 – Infinity (Infinito) e outros tipos de dados

No VB .NET há dois tipos de dados não numéricos mas que são produzidos por cálculos numéricos.

Infinity – Qualquer cálculo que gera números infinitos. Por exemplo dividir um inteiro por zero.

NaN – Not a Number (Não é um Número). É qualquer resultado que não corresponde a valores numéricos.

Exemplo1 :

Dim dblVar As Double = 999

Dim infVar as Double infVar = dblVar / 0

msgbox (InfVar)

No exemplo acima, não há formas de dividir números inteiros por zero, portanto o resultado da tela em msgbox é “+Infinito”. Observe que não há um tipo específico de dados que represente Infinity, portanto é um recurso da linguagem do que propriamente um tipo de dados. Exemplo2 :

Dim var1, var2 As Double Dim result As Double var1 = 0 var2 = 0 result = var1 / var2 MsgBox(result)

No exemplo2, o resultado da divisão de 0 / 0 não é um número, portanto o resultado exibido em msgbox é “NaN (Não é um Número)”. Assim como Infinity, NaN não é representado por nenhum tipo de dados específico, mas como um recurso da linguagem.

Pode-se usar as funções IsInfinity e IsNaN para testar o resultado de cálculos matemáticos. Exemplo:

Dim var1, var2 As Double Dim result As Double var1 = 0 var2 = 0 result = var1 / var2 If result.IsInfinity(result) Then If result.IsPositiveInfinity(result) Then

MsgBox(“Encontrei um número muito grande. Não posso continuar”)

Else

MsgBox(“Encontrei um número muito pequeno. Não posso continuar”)

Else

End If

If result.IsNaN(result) Then MsgBox(“Erro no cálculo”)

Else

MsgBox(“O resultado é “ & result.ToString)

End If

End If

13 – Conversões entre tipos de dados

Conversão é um processo que muda um tipo de valor de uma variável para outro tipo de valor. O comportamento do compilador VB pode mudar quando a opção Option Strict estive ligada ou desligada, por isso justifica-se estudar esse assunto.

Há dois tipos de conversão no VB :

Conversão Widening - Conversão com alargamento significa converter um valor de um tipo de dados de pequena faixa para um tipo de dados de grande faixa de atuação. Assim pode-se mudar de um tipo de dados integer para um tipo de dados long.

Conversão Narrowing – Conversão com estreitamento significa converter um valor de um tipo de dados de grande faixa para um tipo de dados de pequena faixa de atuação. Só pode converter um tipo de dados long para integer, se o valor máximo da variável long for suportado pelo tipo de integer, caso contrário gera erro de overflow.

Exemplo 1 de uma conversão do tipo Widening :

Dim meuLongo As Long Dim meuInteiro As Short

meuInteiro = 32767

meuLongo = meuInteiro

MsgBox(meuLongo) ‘ retorna 32767

Exemplo 2 de conversão Narrowing :

Dim meuLongo As Long Dim meuInteiro As Short

meuLongo = 32767

meuInteiro = meuLongo

MsgBox(meuInteiro)

‘ retorna 32767

No exemplo 1 ocorreu uma conversão que alargou um valor de uma variável inteira para um valor long. Enquanto que no exemplo 2 ocorreu um estreitamento de um valor de uma variável long para um valor inteiro.

No exemplo 1 o compilador efetuou um conversão implícita, alargando um tipo de dados inteiro para long sem qualquer interferência do desenvolvedor. No exemplo 2 o compilador também efetuou uma conversão implícita estreitando um tipo de dados long para integer, pois a opção Option Strict estava desligada (Option Strict Off).

O compilador efetua uma conversão explícita, quando o desenvolvedor usa comandos de Conversão

de modo a forçar uma conversão de um tipo de dados para outro, esse tipo de conversão é também conhecida como Casting. Exemplo

Dim meuInteiro as short Dim MeuLongo as long

meuInteiro = CInt(MeuLongo)

Uma conversão do tipo Narrowing explícita, isto é converter um valor maior para menor com uma função de conversão do VB, pode gerar perdas nos dados. Uma conversão do tipo Widening explícita, isto é converter um valor menor para maior com uma função de conversão do VB, pode gerar perdas no arredondamento decimal de valores no caso de converter um dados do tipo Long para um Decimal. Pois o tipo Decimal aceita grande quantidade de números após a vírgula enquanto que Long não aceita números decimais.

A conversão de qualquer tipo de dados string para um tipo de dados numéricos é sempre do tipo

Narrowing. O operador de concatenação ( & ) também funciona como conversor implícito. Exemplo:

Dim meu as integer = 1 Dim nosso as string

Nosso = “Número “ & meu

‘além de concatenar duas variáveis ‘o operador & também funciona como conversor implícito

A função Val do VB .NET pode ser utilizado para conversão de strings. A função varre toda a string

até encontrar um dígito diferente quando termina o processo convertendo somente os números encontrados. Exemplo :

Dim m As Integer

m = Val ("142 kilômetros")

MsgBox(m) ‘exibe a mensagem 142

Resumindo : O compilador do VB .NET tem duas regras default:

1. Toda variável deve ser declarada antes do uso.

2. Toda conversão do tipo Narrowing deve ser efetuada com funções de conversão apropriada.

Esse comportamento pode ser alterado desligando o controle de verificação Option Strict Off. Deste modo todas as variáveis podem ser usadas sem declaração anterior e o tipo de conversão (Narrowing) pode ser feito implicitamente, isto é sem funções de conversão.

A Microsoft recomenda sempre utilizar conversões explícitas usando as funções de conversão, para criar um aplicativo de melhor desempenho. Além disso recomenda sempre utilizar o comando Option Strict On.

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. Exemplo :

Dim myDecimal as Decimal myDecimal = 100000000000000000000

' Erro de compilaçã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

' Ok.

14 – Sistema numérico no VB .NET

Muitos números usados em VB são decimais (base 10). Mas pode ocorrer o uso de números hexadecimais (base 16) ou números octal (base 8). O Visual Basic representa nrs. Decimais com o prefixo &H e octal com &O.

Decimal

Octal

Hexadecimal

9

&O11

&H9

15

&O17

&HF

16

&O20

&H10

20

&O24

&H14

255

&O377

&HFF

O computador pode trabalhar com qualquer número utilizado pelo sistema, entretanto o número hexadecimal é utilizado em certas tarefas, como o sistema de cores, tela e principalmente as APIs do Windows.

2.10.1 – Estruturas de dados

As estruturas de dados é uma forma de combinar diferentes tipos de dados para criar uma única estrutura. Essa técnica é chamada de Tipo de Dados Compostos, pois permite criar tipos de dados personalizados que eram conhecidos como User Defined Type UDT nas versões do VB 6.0.

Entretanto, como as estruturas permitem criar além de tipos de dados fundamentais, também propriedades, métodos e eventos, as UDT foram aposentadas, e daqui por diante existirá somente as Estruturas de Dados.

Para criar uma estrutura, inicie com o Comando Structure e finalize com End Structure. Dentro desse bloco de código declare as variáveis normalmente. Exemplo :

Structure Empregado Public Nome As String

' Nome do empregado.

Public NomeFamília As String

' Sobrenome da Família.

Public Telefone As Long Private Salário As Decimal End Structure

' Telefone do empregado. ' Salário do empregado.

No Exemplo acima, a estrutura foi criada com o nome de Empregado e possui variáveis públicas (Acesso a todos os blocos de código) e privadas (Acesso não permitido a outros blocos de código). Como opção, pode-se declarar uma estrutura como Public ou Private antes do comando Structure.

Depois de criar uma estrutura, deve-se criar uma variável e declará-la com o nome dessa estrutura, em seguida utilize as propriedades e métodos dessa estrutura. Exemplo

Dim MinhaVariável as Empregado

MinhaVariável.Nome = “Antonio”

2.10.2 – Matrizes (Arrays)

As Matrizes (Arrays) são séries de variáveis, objetos, elementos ou controles que possuem o mesmo nome e são diferenciados somente por um índice que os torna únicos para identificação. As variáveis de mesmo nome são identificadas pelo seu índice único, que vão desde o índice mais baixo também conhecido como LBound (lower bond) até o índice mais alto UBound (upper bond) , essas faixas permitem que o VB evite criar matrizes maiores que o necessário. Todos os elementos de uma matriz , devem ser de um único tipo de dados, entretanto se o tipo de dados for Object, é claro que os dados armazenados nesta matriz podem ser string, números, datas, objetos e etc.

Para se criar uma matriz pública, use o comando Public na seção de declaração.

Para se criar uma matriz a nível de módulo (module-level) , use o comando Private na seção de declaração.

Para se criar uma matriz local (procedure-level), use o comando Dim, Static dentro de um procedimento para declarar uma matriz.

Pode-se utilizar matrizes dentro de classes utilizando os comandos Protected, Friend, Public, Private e Dim.

As matrizes podem ser declaradas fixando os seus limites máximos com base na faixa do tipo de dados Long ( -2,147,483,648 até 2,147,483,647). Exemplos :

Dim MeuArray (14) as integer

Dim MeuArray (2147483646) ‘ Máximo permitido

‘ Matriz de 15 elementos

No exemplo acima, a matriz MeuArray foi declarada com no máximo 14 elementos, entretanto o limite inferior inclue o Zero (0), que é utilizado para efeito de contagem , portanto existe 15 slots para a matriz. A segunda declaração comporta o máximo de slots possível. As matrizes podem ser alocadas automaticamente pelo VB, de modo que o desenvolvedor não precise determinar o limite máximo :

Dim MeuArray ( ) as integer

‘ Informa ao VB alocar automaticamente os limites.

O Exemplo acima não especifica os limites da matriz , apenas sujeita o VB alocá-lo automaticamente com parênteses ( ), essa matriz é conhecida como Matriz Dinâmica e o VB vai criar os limites até a

faixa máxima do tipo de dados Long. Esse procedimento é utilizado, quando o desenvolvedor não sabe de antemão quais os limites da matriz. Por outro lado , nos exemplos anteriores, a matriz foi alocada nos limites máximos, de forma que a matriz resultante é conhecida como Matriz Estática , e só pode ser utilizado quando o desenvolvedor tiver completa certeza dos limites da matriz a ser utilizada.

As matrizes são classificadas também pela quantidade de dimensões a saber :

Matrizes Unidimensionais – Que possuem apenas uma dimensão de valores mínimo e máximo . Como por exemplo :

Dim MeuArray (2) as string

‘Matriz unidimensional

Matrizes Multidimensionais – que possuem duas ou mais dimensões de valores mínimos ou máximos. Como por exemplo

Dim MeuArray (2,3,4) as string Dim MeuArray ( , , ) as string

‘Matriz tridimensional ‘também pode ser escrito dessa forma

A quantidade de combinação de elementos de um matriz (Array) multidimiensional, é o resultado do

produto dessas dimensões, assim no exemplo acima : 2 X 3 X 4 = 24 combinações de slots ou elementos. Assim o desenvolvedor pode fazer 60 combinações de elementos possíveis na matriz MeuArray. O VB aceita uma matriz com até 32 dimensões.

Para uma matriz multidimensional, a combinação de slots é complexo, a característica da combinação da matriz MeuArray (2,3,4) seria a seguinte :

10

30

50

70

90

110

130

150

170

190

210

230

20

40

60

80

100

120

140

160

180

200

220

240

O valor de MeuArray (1,1,1) = 10 ; o valor de MeuArray (2,3,4) = 240 de forma muito simples.

Entretanto o valor de MeuArray (2,3,1) = 60, o valor de MeuArray (1,2,2) = 90. De forma geral tem-

se :

o valor de MeuArray (1,2,2) = 90. De forma geral tem- se : Para se popular

Para se popular uma matriz, usa-se os índices apropriados juntamente com o tipo de dados corretamente, a forma recomendada pela Microsoft é utilizar um Loop para manipular e popular as matrizes.

Dim MeuArray (10, 10) as string

For i = 0

to 10 For j = 0 to 10 MeuArray ( i , j ) = “Olá “ & (i + j) Next j

Next I

O Resultado final do loop será :

MeuArray ( 1, 1) = “Olá 2” MeuArray ( 1, 2) = “Olá 3” MeuArray (1, 3) = “Olá 4”

-

-

Etc

Importante, as matrizes necessitam de muita memória para armazenar seus valores, e a medida que os valores limites aumentam , mais recursos do sistema é necessário. Além do mais, as matrizes multidimensionais construídas com base no tipo de dados Object, são vorazes consumidores de memória. As matrizes dinâmicas podem afetar o desempenho da execução do sistema.

O Vb oferece o comando ReDim para amenizar os custos de processamento e de memória de uma matriz dinâmica, de forma que quando usado, o VB muda os limites da matriz automaticamente com base em valores já encontrados, entretanto o comando ReDim só pode ser usado dentro de procedimentos (procedure-level) , sem especificar o tipo de dados. Portanto, quando se cria uma matriz com um número fixo, pode-se alterar mais tarde esse número, utilizando o comando ReDim.

Assim, quando declara-se uma matriz dinâmica na seção de módulo de um formulário, esta matriz pode ser redimensionada de dentro de uma procedure. A lógica de programação do desenvolvedor pode identificar os limites e dimensões da matriz, e em seguida redimensionar a matriz :

Dim Matrix1() As Integer

‘ procedimento abaixo, deveria calcular os limites da matriz

‘ e em seguida dimensionar Matrix1 com ReDim:

Sub CalcValuesNow ()

.

.

.

ReDim Matrix1(19, 29) End Sub

No exemplo acima, a matriz Matrix1 foi declarada explicitamente de forma dinâmica com o tipo de dados numérica, e o procedimento CalcValueNow irá redimensionar os valores da matriz, para economizar recursos de memória e do sistema, utilizando o comando ReDim para alocar 20 e 30 slots multidimensionais. O trabalho do procedimento CalcValueNow é identificar os limites da matriz e redimensiona-los automaticamente.

Cada vez que Redim é acionado, os valores da matriz são limpos, assim os valores de tipos de dados variants são convertidos para vazios, os valores são zerados para os tipos de dados integers , os valores são limpos (strings de tamanho zero) para os tipos de dados string e os valores são convertidos para Nothing (nenhum objeto) para os arrays de objetos. A representação abaixo mostra como fica cada matriz após o uso de Redim:

Dim meu ( ) as string

Redim meu (1,1)

meu (1,1) = “”

Dim teu ( ) as variant

Redim teu (1,1)

teu (1,1) = Empty

Dim nosso ( ) as integer

Redim nosso (1,1)

nosso (1,1) = 0

Dim vosso ( ) as object

Redim vosso (1,1)

set vosso (1,1)= nothing

A única forma de reter esses valores , aproveitando os valores antigos já criados, e aumentando

somente os slots para novos dados, utiliza-se o comando Preserve .

Redim Preserve Matrix1 (19 , 29)

De forma geral , esse comando é útil quando se deseja preparar a matriz para novos dados, mesmo que este esteja populado com valores anteriormente armazenados por procedimentos anteriores. Entretanto pode-se mudar apenas o último limite máximo (UBound) da última dimensão de uma matriz multidimensional, se tentarmos mudar um limite inferior (Lbound) ou de outra dimensão, um erro de run time vai ocorrer.

ReDim Preserve Matrix(19, UBound(Matrix, 2) + 1)

O código acima, pode ser usado, pois acrescenta a última dimensão da matriz Matrix um (1) slot a

mais. Note que foi usado a função UBound para identificar o limite máximo da última dimensão (2).

ReDim Preserve Matrix(UBound(Matrix, 1) + 1, 10)

Entretanto o código acima, não pode ser utilizado, pois a tentativa de acrescentar mais um slot para a primeira dimensão, gera um erro de runtime.

Assim de forma resumida temos :

gera um erro de runtime. Assim de forma resumida temos : Pode-se atribuir um conteúdo de

Pode-se atribuir um conteúdo de uma matriz para outra, de duas formas : A primeira copia-se slot por slot de cada matriz e atribui para outra matriz slot por slot, mas é mais eficiente utilizar a atribuição ( = ) para copiar uma matriz para outra :

Matriz A = Matriz B

‘Considerando que Matriz B já tenha dados

Obviamente, deve-se obedecer regras para efetuar cópias de variáveis, caso contrário podem gerar erros de compilação e de run-time :

As matrizes devem ter o mesmo tipo de dados, ou a variável que receber a cópia seja Object. As matrizes devem ter o mesmo número de dimensões. Os tipos de elementos de cada matriz devem ser compatíveis.

As matrizes só podem ser definidas com Base zero (0), isto é inicia-se no zero (0), assim um matriz

do tipo “MinhaMatriz(5) “ possui 6 slots vazios , pois o limite inferior é zero.

1 – Utilizando Matrizes

Pode-se declarar uma matriz e em seguida atribuir o valor, ou declarar e atribuir (inicializar) o valor simultaneamente. Exemplo 1 :

Dim MinhaVariável ( ) as single

‘ Declara uma variável dinâmica com unidimensional

MinhaVariável (1) = 3456 MinhaVariável (2) = 3457

Exemplo 2 :

‘Atribui um número ao primeiro slot ‘Atribui outro número ao segundo slot

Dim MinhaVariável ( ) as single = New single ( ) {3456 , 3457 }

‘Declara e inicializa os valores

No exemplo 1, foi criado a matriz MinhaVariável e atribuído os números separadamente, enquanto que no exemplo 2 foi criado a matriz MinhaVariável e atribuído os números simultaneamente.

Observe que no exemplo 2, a matriz é inicializada como parte da sua declaração, e portanto deve seguir as seguintes regras :

Use sempre o sinal de igual ( = ) seguido pela palavra chave New com o tipo de dados da matriz.

Finalize sempre com chaves { } a atribuição de valores.

Exemplo 3 :

Dim Meu ( ) as Byte = New Byte ( ) Dim Minha ( ) as Byte = New Byte ( ) { }

‘ Declaração errada pois falta chaves { } ‘ Declaração correta

No exemplo acima as duas declarações foram feitas sem valores iniciais, mas somente a segunda declaração “Minha” é válida.

Exemplo 4:

Dim Nossa (1,1) as Short

Nossa (0,0) = (5)

Nossa (0,1) = (6)

Nossa (1.0) = (7) Nossa (1,1) = (8)

Exemplo 5 :

‘Declaração de matriz Multidimensional

‘Atribui os valores

Dim Nossa ( , ) as Short = New Short ( , ) {{5,6},{7,8}} “Declara e inicializa uma _ matriz multidimensional

msgbox (Nossa (0,0)) msgbox (Nossa (0,1)) msgbox (Nossa (1,0))

‘ exibe o valor 5 ‘ exibe o valor 6 ‘ exibe o valor 7

No Exemplo 4 e 5, a matriz “Nossa” tem duas dimensões de zero até hum, com declarações e atribuições válidas, observe que no exemplo 5 a sintaxe é diferente.

Após a palavra chave New Short, é obrigatório incluir o número de vírgulas correspondentes a declarada na variável Nossa ( , ). Para atribuir os valores é obrigatório incluir chaves adicionais além de vírgulas { {5,6} , {8,8}}.

Exemplo 6 :

Dim Tua () () As Byte = {New Byte() {5, 6}, New Byte() {7, 8}}

Msgbox (Tua ( 0 ) ( 0 ) ) Msgbox ( Tua (0) ( 1) ) Msgbox ( Tua ( 1) ( 0) ) Msgbox ( Tua ( 1) (1 ))

‘ exibe o número 5 ‘ exibe o número 6 ‘ exibe o número 7 ‘ exibe o número 8

No exemplo 6, foi criado uma matriz contendo outra matriz. Este tipo de técnica é chamado de matriz não retangular ou recortada (jagged) e está disponível somente no VB .Net.

A matriz não retangular (matriz de matriz) tem sintaxe diferente de uma matriz multidimensional. No exemplo 6, a primeira matriz “Tua” foi inicializada com os valores 5 e 6 , enquanto que a segunda matriz foi inicializada com 7 e 8.

Assim para utilizar o primeiro elemento da primeira matriz usa-se ( 0 ) e ( 0 ), para utilizar o segundo elemento da primeira matriz usa-se (0) e (1). Para acessar o último elemento da última matriz do exemplo, usa-se (1) e (1).

Usa-se uma matriz de matriz quando o desenvolvedor deseja combinar matrizes mas não se deseja criar uma matriz bidimensional.

Exemplo 7

Dim Número(1) as integer Dim Letra(1) as char

Número(0) =1 Letra(0) = “A”

:

:

Número(1) = 2 Letra(1) = “B”

Dim TudoJunto(1) as Object

TudoJunto(0) = Número TudoJunto(1) = Letra

Msgbox (TudoJunto(0)(0)) Msgbox (TudoJunto(0)(1)) Msgbox (TudoJunto(1)(0)) Msgbox (TudoJunto(1)(1))

‘ exibe 1 ‘ exibe 2 ‘ exibe A ‘ exibe B

No exemplo 7, criou-se uma matriz “TudoJunto” do tipo Objeto que aceita qualquer tipo de dados do sistema, além de duas matrizes de tipos de dados diferentes entre si.

Observe que não foi atribuído valores para TudoJunto, mas sim recebeu como atribuição as outras matrizes “Número” e “Letra”. Observe ainda, que este tipo de atribuição diminui o desempenho do aplicativo.

2 – Matriz é um elemento da classe System.Array

Como já foi visto nos tópicos anteriores, todo o tipo de dados fundamental é uma cópia de classes da tecnologia .Net Framework. Desta forma, as matrizes também herdam os recursos da classe System.Array, oferecendo seus próprios métodos.

Exemplo 8 :

Dim Meu(1) as integer = New Integer ( ) {4,5}

Msgbox (Meu.Rank)

Msgbox (Meu.Length) ‘exibe o número 2 que equivale ao número de slots da matriz

Meu.Clear(Meu,0,1)

‘ exibe o número 1 que equivale ao número de dimensões da matriz.

‘Limpa o slot 0 que contém o número 4

Msgbox (Meu(0))

‘ exibe o número 0 como conseqüência da método Clear

No exemplo 8, foi declarado e inicializado a matriz “Meu”, em seguida foi invocado as Propriedades

da classe .Net que está embutida na matriz Meu.

A Propriedade Rank retorna o número de dimensões da Matriz, enquanto que a Propriedade Length retorna o número de slots declarados na matriz. O Método Clear limpa o valor atribuído a um slot. Observe que para utilizar as funções-membros da classe é necessário fazer a referência completa à variável além do ponto . Meu.Rank.

2.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