Conteúdo
Módulo 1: A Linguagem VB .NET
Módulo 2: Tipos de Dados
Módulo 3: Comandos Operações e Coleções
Módulo 4: Classes e Objetos
Módulo 5: Herança e Polimorfismo
Módulo 6: Interfaces
Módulo 7: Eventos e Delegates
Módulo 8: Tratamento de Exceções
Módulo 9: Serialização de Objetos
Características principais Projetada para o .NET Framework
Sintaxe moderna e limpa
Tipos Comuns (Common Type System)
Substitui os componentes COM
Suporte à multithreading
Segurança integrada
Totalmente orientada à objetos Herança de implementação
Herança de Interface aprimorada
Overriding e Overloading
Contrutores parametrizados
Tratamento de Exceções Estruturado
Assembly
VB.Net - Compilação e execução
Código
Fonte
Compilador
da
Linguagem
Compilação
Execução
Compilador
JITCódigo
Nativo
Código (IL)
Metadados
VB.Net - Estrutura do programa
Execução do programa começa na função Main()
Instruções são comandos que executam ações Um programa é composto por um conjunto de
instruções
Instruções são separadas por uma nova linha
Blocos Instrução...EndInstrução são utilizados para agrupar instruções Module Module1
Sub Main()
Console.WriteLine("Olá Mundo!")
Dim x As Integer = 10
End Sub
End Module
Declaração de variáveis
Declarando Atribuindo um tipo Atribuindo um nome
Dim num As Integer
Inicializando– Use operador de atribuição– Atribuindo um valor
1
2
1
2
Atribuindo valores literais– Adicione um sufixo de tipo1
Dim val As Long = 100L
Dim palavra As String
Dim s As String = ".net"
Sistema de tipos
Tudo pode ser visto como um objeto
Todos tipos “herdam” de Object
Todos dados podem ser manipulados,
armazenados e transportados sem trabalho
adicional
Stream
MemoryStream FileStream
Hashtable DoubleInteger
Object
Sistemas de tipos Tipos-valor
Contém os dados diretamente; “baratos”
Não podem ser “Nothing”
Não utiliza o garbage collector
Ex: tipos primitivos, enumerações e estruturas
Tipos-referência
Contém referências para objetos
Podem ser “Nothing”
Ex: classes, interfaces, arrays, strings
Novos tipos de dados
Tipos de dados
VB .NET
Tamanho de armazenamento
Faixa de valores
Char 2 bytes 0 a 65535 (sem sinal)
Short 2 bytes -32,768 a 32,767
Decimal 12 bytes Mais de 28 dígitostanto na parte inteira
quanto na fracionária.
Mudanças
Integer Type Visual Basic 6.0 Visual Basic .NET
8-bit Byte Byte
16-bit Integer Short ou Int16
32-bit Long Integer ouInt32
64-bit Long ou Int64
Sistema de tipos
Byte 0 a 255 8-bit sem sinal
Short -32.768 a +32.767 16-bit com sinal
Integer -2.147.483.648 a +2.147.483.647 32-bit com sinal
Long-9.223.372.036.854.775.808 a
+9.223.372.036.854.775.807 64-bit com sinal
Char U+0000 a U+ffff 16-bit Unicode
Single 1,5x10-45 a 3,4x10+38 32-bit ponto flutuante
Double 5,0x10-324 a 1,7x10+308 64-bit ponto flutuante
Boolean True ou False
Decimal 1,0 × 10-28 a 7,9 × 10+28 128-bit ponto flutuante
Boxing e Unboxing
Boxing – Conversão de um tipo valor para
um tipo referência
A memória é alocada no heap.
Os campos do tipo valor são copiados para o
novo local no heap
O endereço deste objeto é retornado.
Ele é agora uma referência para um objeto.
Agora o tipo-valor é um tipo-referência.
Boxing e Unboxing
Unboxing – Conversão de um tipo-
referência para um tipo-valor
Obter o ponteiro para o tipo-referência
Copiar os campos obtidos a partir da operação
acima e alocá-los em uma variável do tipo valor.
Boxing e Unboxing
Dim i As Integer = 123
Dim o As Object = i
Dim j As Integer = CInt(o)
123i
o123
System.Int32
123j
Conversão de tipos
Implícita Executada pelo compilador em operações em que há
garantia de que a informação não será truncada ou perdida
Explícita Quando explicitamente é pedido ao compilador para
converter uma informação
Dim x As Integer = 123456 // 32 bits
Dim y As Long = x // coerção implícita
Dim x As Integer = 7 // 32 bits
Dim z As Byte = CByte(x)
// coerção explícita para 8 bits
Declaração de constantes
Declara-se utilizando a palavra-chave Const
junto a um tipo
O valor deve ser atribuído no ato da
declaração
Const raioTerrestre As Integer = 6378
Const distanciaAoSol As Long = 149600000
Const velocidadeOrbital As Decimal = 29.79D
Sistemas de tipos
Structure
São tipos de dados definidos pelo usuário
São tipos valor
São mais eficientes que classes para armazenar
objetos simples!
Public Structure Ponto
Public X As Integer
Public Y As Integer
End Structure
Sistemas de tipos
Enumerações
Permite a definição de um tipo que possa aceitar
um valor dentro de um conjunto finito de valores
por ele fornecido
São fortemente tipadas
Public Enum Orientacao
norte
sul
leste
oeste
End Enum
If
Baseados em expressões condicionais
booleanas.
If <expressão que retorna booleano> Then
<instruções>
ElseIf <outra expressão que retorna booleano> Then
<instruções>
Else
<instruções>
End If
Select Case
Funciona com valores inteiros e strings.
Select Case <expressão>
Case valor1
<Instruções>
Case valor2
<instruções>
Case valor3
<instruções>
End Select
For...Next
Executa um bloco de comandos um
determinado número de vezes.
For variável = vInicial To vFinal Step valor
<instruções>
Next variável
While
Executa um bloco de comandos enquanto
expressão é verdadeira.
While <condição>
<instruções>
End While
Do While...Loop
Executa um bloco de comandos enquanto expressão é verdadeira.
Do While <expressão>
<instruções>
Loop
Do...Loop While
Executa um bloco de comandos enquanto
expressão seja verdadeira.
Executa pelo menos uma vez.
Do
<instruções>
Loop While <expressão>
Do Until...Loop
Executa um bloco de comandos até que a expressão se torne verdadeira.
Do Until <expressão>
<instruções>
Loop
Do...Loop Until
Executa um bloco de comandos até que a expressão se torne verdadeira.
Executa pelo menos uma vez.
Do
<instruções>
LoopUntil <expressão>
Funções
Utiliza-se a palavra-chave “Function”
Devem retornar valores
Podem receber parâmetros
Public Function GetData() As String
…
Return “My Data”
End Function
Sub-rotinas
Utiliza-se a palavra-chave “Sub”
Não retornam valores
Podem receber parâmetros
Public Sub Escreve()
Console.Write(“Hello World”)
End Sub
Parâmetros
ByRef – passa o endereço de memória da
variável. É possível modificá-la diretamente.
ByVal – passa uma cópia da variável. É
modificado somente a cópia da variável, a
original permanece intacta.
Por default a passagem de parâmetros é feita
por valor (ByVal)
Parâmetros
Por valor
Por referência
Public Function Soma(ByVal n1 As Integer, ByVal
n2 As Integer) As Integer
Dim resultado As Integer = n1 + n2
return resultado
End Function
Public Sub setNome(ByRef n As String)
nome = n
EndSub
Arrays
Estrutura de dados que contém um número máximo definido de valores (elementos do array)
Todos os elementos de um array tem que ser do mesmo tipo
Arrays são indexados a partir de zero
Arrays são objetos
Arrays podem ser: Unidimensionais, um array de ordem um
Multidimensionais, um array de ordem maior do que um
Jagged, um array cujos elementos são arrays
Arrays possuem métodos específicos para manipulação de seus itens
Arrays
Declaração e inicialização
Array unidimensional
Array multidimensional
Dim meuArray(12) As Integer
„Cria um array com 13 elementos
Dim arrInteiros() As Integer = {1,2,3}
Dim meuArray(9,9) As Integer
„Cria um array com 100 elementos
Dim arrInteiros(,) As Integer = {{1,3}, {4,6}}
Arrays
Declaração e inicialização
Array Jagged
Dim Valores(9)() As Integer
„Cria 10 entradas, sendo que cada uma é um array
Dim arrJagged()() As Integer =
{New Integer() {1, 3}, New Integer() {5,7}}
Arrays
Redimensionamento
Modo correto em VB .NET
Modo permitido em VB .NET
Dim x() As String
ReDim x(5)
Dim y(2) As String
ReDim Preserve y(5)
„A palavra-chave Preserve copia o
array original para um novo array.
Lists
Lists não têm tamanho definido
Use o método Add() para adicionar um objeto ao
fim do List
Use () para acessar elementos na List
Localizados do namespace
System.Collections.Generic
Use Clear() para remover todos os elementos
Uso recomendado para manipulação de
coleções de objetos
Foreach
Varrer arrays
Varrer coleções
For Each c As Customer In customers.OrderBy(“name”)
If c.Orders.Count != 0 Then
…
End If
Next
Sub Main(ByVal args As String())
For Each umArg As String In args
Console.WriteLine(umArg)
Next
End Sub
O que é um programa ?
Programa:
Conjunto de objetos que se comunicam.
Purrer = ronronador
Pouncer = espreitador
Dog taunter = irritador de cachorro
Wool tangler = embaralhador de lâ
Objetos
Objetos são as entidades que compõem um
programa.
Cada objeto é responsável por executar
determinadas tarefas.
O conjunto de tarefas que um objeto realiza
define seu comportamento.
Comportamento
Objetos são manipulados através de seus
métodos.
Um método consiste de uma seqüência de
instruções que acessam dados.
Quando se executa um método não é
necessário conhecer seu conjunto de
instruções. O importante é saber a tarefa o
que o método realiza.
Representação de um objeto
Objeto 1
Método 1
Método 2
Método 3
Identificador do objeto
Métodos
(definem o comportamento do objeto)
Exemplo
Um programa representa uma lâmpada.
Uma lâmpada pode estar ligada ou
desligada. Além disto, a lâmpada possui
um mecanismo que permite apagar a
lâmpada e um mecanismo que permite
acendê-la.
Abstração
Modelo abstração
Uma abstração foca nas características essenciais
de um objeto relativas a perspectiva do usuário.
•Por exemplo,
não foi o caso de
representar se a
lâmpada estava
queimada ou não.
Noção de estado
A abstração da lâmpada implica em 2
estados:
Aceso e apagado
Um objeto é capaz de armazenar o estado
em que se encontra.
apagadoaceso
apaga
acende
Classes e objetos
Para representar várias lâmpadas são
necessários vários objetos:
Todos estes objetos, porém, terão a mesma
estrutura, ou seja, pertencem a mesma classe.
Lampada
acende
apaga
Lampada
acende
apaga
Lampada
acende
apaga
Veículo
marca
placa
ler_placa
classe
Ferrari
IDN8810
Fiat Uno
IAS3333
instâncias
veículos
objeto1
objeto2
Classes e objetos
Classes
Uma classe é uma “fôrma” para produzir
objetos
Determina um conjunto de objetos com:
propriedades semelhantes
comportamentos semelhantes
relacionamentos comuns com outros objetos
Classes
Membros das classes
Constantes, atributos, métodos, propriedades,
indexadores, eventos, operadores, construtores,
destrutores
Membros “de instância” e “de classe”
Tipos aninhados
Modificadores de Acesso
public, protected, internal, private
Atributos
“Variáveis das Classes”
Podem ser:
Read-Only: Apenas leitura – não se pode utilizar
esse tipo de atributo em blocos Set.
Write-Only: Apenas escrita – não se pode utilizar
esse tipo de atributo em blocos Get.
Atributos
Public Class Pessoa
' Atributos da Classe Pessoa
Private _nome As String
Private _idade As Integer
end class
Métodos
Ações que o objeto executa
Podem ser:
Procedimentos (subs): Não retornam valor
Funções (functions): Retornam valor definido pelo
programador.
' Método que retorna o nome armazenado
Public Function EhMaior() As Boolean
Return _idade >= 18
End Function
Exemplo de classe completa
Public Class Lampada
Private aceso As Boolean
Public Sub New()aceso = False
End Sub
Public Sub Acende()aceso = True
End Sub
Public Sub Apaga()aceso = False
End Sub
Public Function EstaAcesa()Return aceso
End Function
End Class
Atributo
Métodos
Construtor
Instanciando classes
Ativando métodos...
Dim l1 As Lampada = New Lampada
Dim l2 As Lampada = New Lampada
l1.Acende()
l2.Acende()
l1.Apaga()
If l1.EstaAcesa() Then
Console.WriteLine("Lampada 1 acesa")
Else
Console.WriteLine("Lamapada 1 apagada")
End If
If l2.EstaAcesa() Then
Console.WriteLine("Lampada 2 acesa")
Else
Console.WriteLine("Lamapada 2 apagada")
End If
...
Criação de instância
Ativação de métodos
Modificadores de acesso
Private Acessível dentro da mesma
classe
Friend Acessível somente dentro do
mesmo projeto
Protected Acessível dentro da mesma
classe ou uma classe derivada
desta
Protected Friend Acessível dentro das classes
derivadas ou dentro do mesmo
projeto
Public Acessível sem restrições
Métodos
Chama-se de sobrecarga de métodos (overloading) o ato de criar diversos métodos com o mesmo nome que se diferenciam pela lista de argumentos (parâmetros)
Métodos com mesmo nome, mas com tipo, quantidade ou ordenação de parâmetros diferentes, são considerados métodos diferentes
Utiliza a palavra-chave Overloads
Métodos – Sobrecarga: exemplo
Public Class Data
Dim dia, mes, ano As Integer
Sub Inicializa()
dia = 1
mes = 1
ano = 2009
End Sub
Overloads Sub SetData(ByVal d As Integer, ByVal
m As Integer, ByVal a As Integer)
dia = d
mes = m
ano = a
End Sub
Overloads Sub SetData(ByVal d As Integer, ByVal m
As String, ByVal a As Integer)
dia = d
ano = a
Select Case m
Case "jan"
mes = 1
...
Case "dez"
mes = 12
End Select
End Sub
Overloads Sub SetData(ByVal m As Integer,
ByVal a As Integer)
dia = 1
mes = m
ano = a
End Sub
End Class
Construtores
São utilizados para instanciar objetos
Podem ou não receber valores iniciais por
parâmetro
Sub New é a definição de construtor padrão
É possível utilizar o conceito de sobrecarga
de construtores
Construtores
' Contrutor Padrão
Public Sub New()
End Sub
„ Construtor que adiciona apenas o nome
Public Sub New(ByVal n As String)
Nome = n
End Sub
„ Construtor Completo
Public Sub New(ByVal n As String, ByVal i As Integer, ByVal s As Char)
Nome = n
Idade = i
Sexo = s
End Sub
Criando Objetos
' Declarando Objeto
Dim pessoa1 As Pessoa
' Instanciando Objeto
pessoa1 = New Pessoa()
' Declarando e instanciando com
' com um construtor padrão
Dim pessoa2 As Pessoa = New Pessoa()
Dim pessoa3 As New Pessoa()
' Declarando e instanciando com
' com um construtor alternativo
Dim pessoa4 As Pessoa = New Pessoa("Maria")
Dim pessoa5 As New Pessoa("Maria")
Propriedades em VB.Net
Combinam métodos e atributos
Permitem definir uma maneira mais simples de se manipular os atributos de uma classe sem perder o grau de controle fornecido por métodos get/set.
Não precisam, necessariamente estar vinculados a um atributo.
Fazem parte da “arquitetura Microsoft” para definição de componentes (podem ser usadas na integração com o IDE).
Devem ser usadas com parcimônia dentro do paradigma de orientação a objetos !!
Propriedades
São métodos que protegem o acesso aos membros da classe
Para criar uma
propriedade é preciso
definir:
Modificadores de
Acesso (Public, Private,
Friend, Protected,
Protected Friend)
Nome da Propriedade
Tipo da Propriedade
Private _nome As String
Public Property Nome() As String
Get
Return _nome
End Get
Set(ByVal value As String)
_nome = value
End Set
End Property
Propriedades
Acessando propriedades
Pessoa.Nome = “Microsoft”
„Acessa a propriedade Set
Dim n As String = Pessoa.Nome
„Acessa a propriedade Get
Atributos de classe
Atributos de instância:
Cada objeto possui uma cópia particular com seus
valores
Representam o estado de um objeto em particular
Atributos de classe:
Cada classe possui uma única cópia do atributo,
independente do número de objetos instanciados a
partir da classe
Objetos compartilham os atributos de classe
São declarados pela palavra-chave Shared
Invocação <nome_classe>.<nome_atributo>
Métodos de classe
Métodos de instância: Fornecem o comportamento dos objetos instanciados
a partir de uma classe
Trabalham sobre os atributos de um objeto dessa classe
Métodos de classe: Fornecem um comportamento que é independente da
existência de objetos de uma classe
Pertencem à classe e são compartilhados por todas as instâncias da classe
Trabalham sobre os atributos de classe
Indicados pela palavra-chave Shared
Invocação <nome_classe>.<nome_método>(<parâmetros>)
Herança
Ao modelar um conjunto de classes, podemos
encontrar classes semelhantes na estrutura e no
comportamento
Solução 1: modelar as classes de forma independente
Solução 2: extrair características estruturais e
comportamentais que sejam comuns e colocá-las em
classes mais gerais a partir das quais são definidas
classes mais específicas
duplicação de código
herança
Herança
Uma classe que admite casos particulares é uma classe base.
Uma classe que é uma particularização de uma classe base é uma classe derivadadaquela classe base.
Em um programa bem construído, todos osconceitos expressos nos tipos de dados e respectivos métodos de uma classe base também fazem parte da classe derivada.
Herança
Herança é uma relação de generalização/especialização entre classes
A idéia central de herança é que novas classes são criadas a partir de classes já existentes
Classe derivada herda de uma classe base
Classe derivada é mais específica que a classe base
Herança origina uma estrutura em árvore
Herança
Por exemplo, poderíamos construir uma classe
(tipos de dados e métodos) para capturar os
conceitos relevantes relativos a telefones.
Adotando essa classe como base, poderíamos
então construir as classes derivadas telefones
fixos e telefones móveis.
Os telefones móveis poderiam gerar ainda as
classes derivadas telefones móveis pré-pagos e
telefones móveis pós-pagos.
Herança
Construímos dessa forma uma hierarquia de
classes.
Existem conceitos e operações que só dizem
respeito aos telefones móveis pré-pagos, e
alguns conceitos e operações relativos a essa
categoria de telefones têm detalhes que são
inerentes a apenas tais telefones. Os telefones
móveis pré-pagos, entretanto, continuam sendo
telefones, e portanto a eles se aplicam os
conceitos referentes a telefones em geral.
Herança
Para definir a herança de classes em VB.NET
utiliza-se Inherits seguido do nome da classe
base
VB.NET suporta herança simples de classes
Public Class Classe Inherits SuperClasse
…
End Class
Herança
Ao definir os construtores de uma subclasse:
O construtor deve obrigatoriamente chamar o
construtor da classe base para inicializar os atributos
herdados
Caso um construtor não referencie o construtor da
classe base, VB.NET automaticamente referencia o
construtor vazio da classe base
O construtor pode referenciar explicitamente um
construtor da classe base via a palavra-chave MyBase
Herança
Uma classe pode ser impedida de ser
estendida via herança através da palavra-
chave NotInheritable
NotInheritable Public Class Classe
…
End Class
Sobrescrita de Métodos
Uma subclasse pode sobrescrever (do inglês
override) métodos da superclasse
Sobrescrita permite completar ou modificar um
comportamento herdado
Quando um método é referenciado em uma
subclasse, a versão escrita para a subclasse é
utilizada, ao invés do método na superclasse
Em VB.NET, um método que sobrescreve um
método herdado é marcado pela palavra-chave
Overrides
Sobrescrita de Métodos
Um método de uma classe, que pode ser
sobrescrito em uma subclasse, deve ser marcado
pela palavra-chave Overridable
O método herdado pode ser referenciado
através da construção base.nome_método
Public Class SuperClasse
Overridable Public Sub Metodo()
End Class
Public Class Classe Inherits SuperClasse
Overrides Public Sub Metodo()
End Class
Classe Base
Public Class Pessoa
' Propriedades da Classe Pessoa
Protected Nome As String
Protected Endereço As String
' Contrutor Padrão
Public Sub New()
End Sub
' Método que pode ser sobrescrito
Public Overridable Function Concatena() As String
Return Nome + Endereço
End Function
end class
Classe HerdadaPublic Class Pessoa_Fisica
' Declara a classe a ser herdada
Inherits Pessoa
' Pessoa física terá 3
' Nome, Endereço e CPF
Protected CPF As String
Public Sub New()
End Sub
' Alterando o método Concatena
Public Overrides Function Concatena() As String
Return Nome + Endereço + CPF
End Function
End Class
Polimorfismo
Polimorfismo é a capacidade de assumir formas diferentes
VB.NET permite a utilização de variáveis polimórficas
Uma mesma variável permite referência a objetos de tipos diferentes
Os tipos permitidos são de uma determinada classe e todas as suas subclasses
Polimorfismo
Em VB.NET podemos utilizar métodos
polimórficos
Significa que uma mesma operação pode ser
definida em diversas classes, cada uma
implementando a operação de uma maneira
própria
Utiliza como base a sobrescrita de métodos
Classes Abstratas
Em uma hierarquia de classe, quanto mais alta a classe, mais abstrata é sua definição
Uma classe no topo da hierarquia pode definir apenas o comportamento e atributos que são comuns a todas as classes
Em alguns casos, a classe nem precisa ser instanciada diretamente e cumpre apenas o papel de ser um repositório de comportamentos e atributos em comum
É possível definir classes, métodos e propriedades abstratas em VB.NET
Classes Abstratas
Uma classe abstrata é uma classe construída exclusivamente para ser particularizada, ou seja para funcionar como uma “matriz” de conceitos específicos que de fato sejam utilizados diretamente em um programa
Uma classe abstrata, portanto, não admite instâncias – somente suas classes derivadas admitem instâncias
Classes Abstratas
Marca-se a classe com a palavra-chave
MustInherit
Public MustInherit Class Funcionario
Public MustOverride Function
CalcularSalario() As Decimal
Public MustOverride Property Codigo() AS
String
End Class
Interfaces
Interfaces podem ser utilizadas para separar a especificação do comportamento de um objeto de sua implementação concreta
Dessa forma a interface age como um contrato, o qual define explicitamente quais métodos uma classe deve obrigatoriamente implementar Por exemplo, suponha a necessidade de
implementação da estrutura de dados Pilha Toda pilha deve possuir as operações empilha(), desempilha(),
estaVazia()
Mas a pilha pode ser implementada com array, lista encadeada, etc
Interfaces
Declarando interfaces:
Uma interface é declarada de forma semelhante a
uma classe
Utiliza-se a palavra-chave Interface ao invés de
Class
Em VB.NET, interfaces podem conter métodos,
propriedades e eventos
Usualmente membros de uma interface não
possuem modificadores
São implicitamente Public e MustOverride
Interfaces
Utilizando interfaces:
Como interfaces são compostas de métodos abstratos,
esses métodos deverão ser implementados por
alguma classe concreta
Logo, dizemos que uma interface é implementada por
uma classe
Utiliza-se a palavra-chave Implements
A classe deverá implementar todos os métodos
listados na interface
Uma classe pode implementar diversas interfaces
Interfaces não são instanciadas
Interfaces
Interface IMinhaInterface
Sub Metodo()
ReadOnly Property Propriedade() As Integer
End Interface
Public class Classe Implements IMinhaInterface
Public Sub Metodo() Implements
IMinhaInterface.Metodo … End Sub
Public ReadOnly Property Propriedade() As
Integer Implements IMinhaInterface.Propriedade …
End Property
End Class
Polimorfismo
Quando declaramos uma variável como
sendo do tipo de uma interface, essa variável
irá aceitar qualquer objeto de uma classe que
implemente essa interface
Dessa maneira, temos acessos aos métodos
definidos na interface de forma
independente do tipo de objeto que estamos
utilizando
Tratamento de Exceções
É a criação de código para tratar com situações
excepcionais que podem ocorrer nas
aplicações
Tratamento de Exceções estruturada por blocos
Try...Catch...Finally
Suportada por diversas linguagens
Tratamento de Exceções
Bloco Try
Contém código que pode levantar uma exceção.
Se uma exceção ocorrer, o processamento é
transferido para o bloco catch.
Pode ter 0 ou mais blocos catch associados a ele.
Bloco Catch
Contém código que irá tratar a exceção quando esta
for lançada.
As exceções podem ser filtradas por diferentes classes
de exceções.
Tratamento de Exceções
Bloco Finally
Contém código que sempre é executado,
não dependendo dos outros blocos.
É opcional.
Tratamento de Exceções
Try
„Código que pode levantar uma exceção
Catch
„Código para tratar a exceção
Finally
„Código que é sempre executado
EndTry
Tratamento de Exceções
Throw
Permite criar suas próprias exceções.
A exceção é tratada no bloco Catch e levantada
no bloco Try.
Try
If x = 0 Then
Throw New Exception(“x igual a
zero”)
EndIf
Catch eException As Exception
MsgBox(“Erro: ” & eException.Message
EndTry
DICA!!!
OOB o VB.Net não possui a funcionalidade
de refactoring no VS 2008
Instalar Refactor! 2008 http://msdn.microsoft.com/en-us/vbasic/bb693327.aspx
Funcionalidades do Refactor! 2008
Reorder Parameters
Extract Method
Extract Property
Create Overload
Surrounds With
Encapsulate field
Reverse Conditional
Simplify expression
Introduce Local
Introduce constant
Inline Temp
Replace Temp withQuery
Split Temporary Variable
Move initialization to declaration
Split initialization fromdeclaration
Move declaration nearreference
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Eventos e Delegates
Evento
Ação que pode ser manipulada através de código
São notificações que objetos disparam para
indicar a outros objetos interessados que algo
importante aconteceu
Ex.: botões disparam o evento Click quando
pressionados
Eventos e Delegates
Delegate
Membro de classe responsável por delegar as
ações correspondentes a ocorrência de um evento
ao(s) tratador(es) de eventos correspondentes
É uma implementação de uma referência para
uma operação
Tratador de evento
Método responsável pela execução de ações em
reação a ocorrência de um evento
Eventos e Delegates
Declaração de eventos
Através da palavra-chave Event
Dispara-se um evento através da palavra-chave
RaiseEvent
Public Class Origem
Public Event UmEvento(ByVal Parametro As Interger)
Sub CausaEvento()
RaiseEvent UmEvento(123)
End Sub
End Class
Eventos e Delegates
Declaração de tratador de evento
Forma padrão utiliza as palavras-chave Handles e
WithEvents
Public Class MinhaClasse
WithEvents Objeto As New Origem()
Sub TratadorEvento(ByVal Parametro As Interger)
Handles Objeto.UmEvento
…
End Sub
End Class
Eventos e Delegates
Declaração de tratador de evento
Forma mais flexível utiliza as palavras-chave
AddHandler, RemoveHandler e AddressOf
Public Class MinhaClasse
Private Objeto As New Origem()
Sub New()
AddHandler Objeto.UmEvento, AddressOf TratadorEvento
End Sub
Sub TratadorEvento(ByVal Parametro As Interger)
Handles Objeto.UmEvento
…
End Sub
End Class
Eventos e Delegates
Declaração explícita de delegates
Utiliza-se a palavra-chave Delegate
Declara-se a assinatura do delegate
Invocar o delegate
Delegate Sub MeuDelegate(ByVal UmValor As
Integer)
Sub Procedimento(ByVal UmDelegate As
MeuDelegate)
UmDelegate.Invoke()
End Sub
… Call Procedimento(AddressOf FazAlgo)
Serialização de objetos
Toda a entrada e saída no .NET Framework
envolve o uso de streams (fluxos)
Serialização é o processo de converter o
estado de um objeto em uma forma que
pode ser armazenada ou transmitida
O .NET Framework suporta duas tecnologias
de serialização: binária e XML (SOAP).
Serialização de objetos
A maneira mais fácil de tornar uma classe
serializável é marcá-la com o atributo
Serializable
Dois tipos de serializadores:
BinaryFormatter
SoapFormatter
Métodos associados:
Serialize
Deserialiaze
Serialização XML
É realizada pela classe XMLSerializer
Itens que podem ser serializados: Atributos públicos
Propriedades de leitura e escrita
Classes que implementam as interfaces ICollection ou IEnumerable
Objetos DataSet, XmlElement, XmlNode
Usualmente utilizado com classes fortemente tipadas em relação a um XSD (XML Schema Definition) A ferramenta xsd.exe gera schemas a partir de arquivos
dll ou exe.