orientação a objetos utilizando visual basic - inf.pucrs.brdanielc/cursos/vb/visual basic .net...

117
Orientação a Objetos utilizando Visual Basic.Net Microsoft Innovation Center PUCRS

Upload: vuongkhanh

Post on 07-Jun-2019

220 views

Category:

Documents


0 download

TRANSCRIPT

Orientação a Objetos

utilizando Visual Basic.NetMicrosoft Innovation

Center PUCRS

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

A LINGUAGEM VB.NET

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

O Ambiente de Programação

Solution explorer

Editor de Código-Fonte

Menus e controles

Lista de erros

TIPOS DE DADOS

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

Sistemas de tipos

Dim i as Integer = 123

Dim s as String = "Hello world"

123i

s "Hello world"

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

COMANDOS, OPERAÇÕES E

COLEÇÕES

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

For Each

É utilizado para varrer arrays e coleções

For Each elemento In grupo

<instruções>

Next

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

CLASSES E OBJETOS

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â

Exemplos

Um programa e os objetos que o compõe ...

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.

Programa da Lâmpada

Lampada

acende

apaga

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 E POLIMORFISMO

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

Telefone

TelefoneFixo TelefoneMovel

TelefoneMovelPrePago TelefoneMovelPosPago

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

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

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

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

SERIALIZAÇÃO DE OBJETOS

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.