Classes – Visual Basic
Curso Tecnológico de InformáticaLinguagens de Programação 12º anoProfessor: Paulo Valentim
POO
2
POO – Programação Orientada a Objectos
A POO foi criada com o intuito de resolver os
problemas da programação estruturada.
A grande vantagem disso é o reaproveitamento de
código, isso traz uma redução no tempo que uma
solução pode ser gerada.
3
Classes
• Em programação uma Classe representa umaentidade e como tal define o seu comportamento(Métodos) e as suas características (Propriedades).
• Aos acontecimentos que podem ocorrer para umadada entidade em determinada altura, chama-seEventos.
Ex:Entidade (Classe): PessoaCaracterísticas (Propriedades): Altura, peso, etcComportamento (Métodos): Andar, Correr, Comer, etcEventos: AoAcordar, AoDeitar, etc
4
O que é um Objecto?
Um objecto é um elemento computacional querepresenta alguma entidade.
Objectos similares são agrupados em classes.
Um programa orientado a objectos é composto por umconjunto de objectos que interagem através de “trocasde mensagens” entre eles. Na prática, essa troca demensagem traduz-se na chamada de métodos(funções) entre objectos.
5
O que é um Objecto?
Exemplo de um objecto:
Um Jaguar é um objecto. Ele tem como características a cor,peso, quantidade de portas, modelo, ano, etc. Também temacções como buzinar, acelerar, abrir os vidros, trocar demudanças, etc.
Programar Orientado a Objectos é fazer essa abstracção do mundoreal e transforma-la em código.
6
Classes e Objectos
Comparação entre Classes e Objectos
• Uma Classe consiste na definição de uma entidade,(com as suas propriedades, métodos e eventos)enquanto um objecto representa um "exemplar" deuma entidade.
Classe PessoaObjecto João
Exemplo?
7
Os 4 pilares da POO
1. Abstracção
Este é um dos conceitos básicos quando se fala de POO. Antes dedefinir uma classe é importante consumir algum tempo e pensar comofazê-la.
Por exemplo, quando se vai ao caixa Multibanco existem várias opções àdisposição. Se quiser tirar dinheiro basta escolher a opção “Levantar", eembora "por trás" isso desencadeie vários processos, estes não são visíveispara quem usa o caixa.
O que se ganha com isto? Uma Classe é definida uma vez, mas ésusceptível de ser utilizada N vezes por nós ou por terceiros. Com aabstracção vem uma maior facilidade de utilização da classe, diminuiçãoda probabilidade de enganos, aumento de rapidez do desenvolvimento emelhoria da legibilidade do código.
8
Os 4 pilares da POO
2. Encapsulamento
É o processo pelo qual se escondem os detalhes de implementação nasClasses. Ou seja consiste na aplicação do conceito de abstracçãodescrito atrás.
3. Herança
Consiste no estabelecimento de uma relação entre duas classes, naseguinte perspectiva: "A Classe Y é do género da Classe X". Porexemplo um Cliente é uma pessoa e um empregado também.
A ideia da herança é permitir que neste tipo de situações se possadefinir uma classe Base a partir da qual derivam outras classes. CadaClasse derivada possui (ou pode possuir) tudo o que está definidona sua classe Base e depois ser-lhe-ão acrescentadas mais coisasconforme for necessário.
O ponto forte da herança é a reutilização!! 9
Os 4 pilares da POO
4. Polimorfismo
Por vezes a mesma operação comporta-se de modo diferentequando aplicada a objectos baseados em classes diferentes.
Por exemplo imagine o método Caminhar. O objectivo é deslocar-sedo ponto A para o ponto B, mas um adulto caminha de uma maneirae um bebé de outra...
O polimorfismo vem permitir que estas situações possam serimplementadas.
10
Construtores
Um construtor é um método que permite criar umobjecto à custa de uma determinada classe que ocuparecursos em memória e é utilizado em Run-time.
Em VB .NET o construtor de uma classe apresenta-se naforma de um Sub com um nome específico: New.
Assim quando se faz:
Dim frm As New Form()frm.Show()frm.Text = "Form criado em Run Time"
Ao declarar uma variável frm ela será uma instância do tipoForm. E isto acontece com a invocação do New que consistenum Sub (definido na classe Form neste caso) dentro do qualdeve constar todas as instruções necessárias para ainicialização do objecto.
Para adicionar uma textbox ao novo form:Dim txt As New TextBox()frm.Controls.Add(txt)
11
ECB - 11 LP - Arrays - Paulo Valentim
Construtores
Exemplo da criação de uma text box numnovo form
Dim frm As New Form()Dim txt As New TextBox()frm.Controls.Add(txt)txt.Top = 25txt.Left = 100frm.Show()frm.Text = "Form criado em Run Time"
12
Construtores
Exemplo de um construtor de um objecto definido na classe
Public Sub New(ByVal a As Double, ByVal b As Double)Me.Altura = aMe.Base = b
End Sub
13
Propriedades
Uma propriedade é um membro que representa umacaracterística de uma classe (ou estrutura).
Por default, a propriedade é alvo de leituras e escritas,ou seja o programador pode averiguar o seu conteúdoe alterá-lo. No entanto é possível criar propriedadessó de leitura ou só de escrita.
14
Métodos
Quando um procedimento ou função é declarado noâmbito de uma classe é considerado um métododessa classe.
Exemplo
Public Function getArea() As Double
Return _altura * _base
End Function
15
Exemplo com classes - CRectangulo
Public Class cAreasPublic Class cRectangulo
Private _altura As DoublePrivate _base As Double
Public Sub New(ByVal a As Double, b As Double)Me.Altura = aMe.Base = b
End Sub
16
Exemplo com classes - CRectangulo
Public Property Altura() As DoubleGet
Return _alturaEnd GetSet(ByVal value As Double)
_altura = valueEnd Set
End PropertyPublic Property Base() As Double
GetReturn _base
End GetSet(ByVal value As Double)
_base = valueEnd Set
End Property
17
Exemplo com classes - CRectangulo
Public Function getArea() As DoubleReturn _altura * _base
End FunctionEnd Class
End Class ‘#
18
Exercício com classes
1. Elabore um projecto em VB de nome areas_classes.
2. Crie no form os seguintes objectos:3. Crie uma nova classe areas e no seu interior
escreva o código do diapositivo seguinte.4. Programe o botão para mostrar numa
MessageBox o valor a área de um rectângulo com 10 de base e 20 de altura.
5. Repita o passo anterior para o quadrado e para o triângulo criando mais dois botões com valores inseridos pelo utilizador.
6. Adicione à classe areas uma classe que permita calcular a área de um paralelepípedo.
7. Crie um botão para o paralelepípedo e programe-o de forma a que seja o utilizador a inserir os valores necessários.
8. Mostre numa Messagebox o valor da Base do Rectângulo.
O volume de uma paralelepípedo de comprimento T, largura L, e altura A é: V = T x L x A
19
ECB - 11 LP - Arrays - Paulo Valentim
Exercício com classes
9. Crie um novo método “desenharQuadrado” na classe Quadrado que deverá desenhar um botão no form actual com o valor do lado.
10. Programe o botão “Quadrado” desenhar o botão.
11. Crie duas novas propriedades na classe Quadrado (topo e esquerda).
12. Modifique o método desenharQuadrado para posicionar o quadrado de acordo com as novas propriedades.
20
ECB - 11 LP - Arrays - Paulo Valentim
Exemplo com classes - Exercício
Public Class areasPublic Class Rectangulo
Private _altura As DoublePrivate _base As DoublePublic Sub New(ByVal a As Double, ByVal b As Double)
Me.Altura = aMe.Base = b
End SubPublic Property Altura() As Double
GetReturn _altura
End GetSet(ByVal value As Double)
_altura = valueEnd Set
End PropertyPublic Property Base() As Double
GetReturn _base
End GetSet(ByVal value As Double)
_base = valueEnd Set
End PropertyPublic Function getArea() As Double
Return _altura * _baseEnd Function
End Class
Public Class QuadradoPrivate _lado As DoublePublic Sub New(ByVal lado As Double)
Me.Lado = ladoEnd SubPublic Property Lado() As Double
GetReturn _lado
End GetSet(ByVal value As Double)
_lado = valueEnd Set
End PropertyPublic Function getArea() As Double
Return _lado * _ladoEnd Function
End Class
Public Class TrianguloPrivate _altura As DoublePrivate _base As DoublePublic Sub New(ByVal b As Double, ByVal a As Double)
Me.Altura = aMe.Base = b
End SubPublic Property Altura() As Double
GetReturn _altura
End GetSet(ByVal value As Double)
_altura = valueEnd Set
End PropertyPublic Property Base() As Double
GetReturn _base
End GetSet(ByVal value As Double)
_base = valueEnd Set
End PropertyPublic Function getArea() As Double
Return (_base * _altura) / 2End Function
End ClassEnd Class
Elabore um projecto em VB, crie uma nova classe areas e no seu interior escreva o seguinte código.
21
Exercício com classes
Resolução dos passos 4 e 5:
Private Sub cmdRect_Click(….Dim r As New areas.Rectangulo(10, 20)MsgBox("Area do retangulo de base=10 e altura=20 : " & r.getArea())
End Sub
Private Sub cmdTri_Click(….Dim r As New areas.Triangulo(10, 20)MsgBox("Area do triangulo de base=10 e altura=20 : " & r.getArea())
End Sub
Private Sub cdmQua_Click(…Dim r As New areas.Quadrado(10)MsgBox("Area do quadrado de lado 10 : " & r.getArea())
End Sub
22
Exercício com classes
Resolução do passo 9:
Public sub desenharQuadrado()Dim bt As New Buttonbt.Width = _ladobt.Height = _ladobt.Left = 1bt.Top = 1Form1.Controls.Add(bt)
End Sub
23
Classes Abstractas - Herança
Uma classe é definida como abstrata através do uso do modificador MustInherit
Exemplo:Public MustInherit Class Forma
Para declarar um método como abstracto é necessário usar o modificadorMustOverride
Exemplo:Public MustOverride Function GetArea() As Double
Quando se define uma classe derivada de outra classe, a primeira linhade um construtor deve ser uma chamada para o construtor da classebase. MyBase chama o construtor da classe pai (a classe Forma, porexemplo).
Exemplo:MyBase.New(s)
24