24
Classes – Visual Basic Curso Tecnológico de Informática Linguagens de Programação 12º ano Professor: Paulo Valentim

classes

Embed Size (px)

DESCRIPTION

classes classes

Citation preview

Page 1: classes

Classes – Visual Basic

Curso Tecnológico de InformáticaLinguagens de Programação 12º anoProfessor: Paulo Valentim

Page 2: classes

POO

2

Page 3: classes

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

Page 4: classes

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

Page 5: classes

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

Page 6: classes

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

Page 7: classes

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

Page 8: classes

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

Page 9: classes

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

Page 10: classes

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

Page 11: classes

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

Page 12: classes

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

Page 13: classes

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

Page 14: classes

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

Page 15: classes

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

Page 16: classes

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

Page 17: classes

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

Page 18: classes

Exemplo com classes - CRectangulo

Public Function getArea() As DoubleReturn _altura * _base

End FunctionEnd Class

End Class ‘#

18

Page 19: classes

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

Page 20: classes

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

Page 21: classes

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

Page 22: classes

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

Page 23: classes

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

Page 24: classes

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