VB5/VB6 -
Pondo em prática a Programação orientada a objetos
Com a chegada da plataforma .NET , e , mais especificamente do VB .NET , ventos novos estão soprando. Agora o VB .NET tem todo o suporte de uma linguagem orientada a objetos. Você então deve ficar esperto e correr atrás do prejuízo se ainda não manja nada de conceitos sobre orientação a objetos. Se você quiser ser um bom programador na plataforma .NET vai ter que ter um base sólida em orientação a objeto.
Este artigo é para quem esta usando ainda o VB5 ou VB6 e precisa aprender a aplicar os conceitos da orientação a objetos na prática. Nada melhor do que começar com a linguagem que você domina. Embora o VB5 e VB6 não sejam realmente linguagens orientadas a objeto (falta a herança) podemos usá-las para assimilar os conceitos da orientação a objetos sem problemas. Com estes conceitos vai ficar mais fácil para você entender melhor a plataforma .NET.
Eu já abordei o assunto em alguns artigos , abaixo o artigo que fala sobre isto no VB6. Dê uma olhada para rever os conceitos básicos que eu não vou repetir aqui a fundo.
Neste artigo , após uma pincelada
em alguns conceitos básicos vou mostrar como aplicar estes conceitos em uma
aplicação prática que pode ser feita no VB5 ou VB6. Vamos lá...
![]()
Definição de um objeto
Mas afinal o que é um objeto ?
![]()
De forma genérica "um objeto é uma descrição de qualquer coisa que exista dentro do nosso ambiente de estudo". Quando nos restringimos ao mundo da programação um objeto pode ser definido como "uma entidade que possui a capacidade de reter o seu estado (informação) e o que oferece um certo número de operações (comportamento) para examinar ou afetar este estado"
Para a coisa ficar mais real para você que é um programador VB vamos levar estes conceitos ao mundo VB. Se você já desenvolveu qualquer aplicação VB provavelmente já trabalhou com formulários e controles . Pois bem , se já fez isto , já trabalhou com objetos. Se você considerar um formulário VB vai perceber que ele é um objeto. Quanto o formulário esta em execução no seu projeto VB ele esta apto a:
Salvar o seu estado ( Altura , Largura , titulo , etc...)
Oferecer operações ( Show , Hide , Unload , etc... )
Podemos dizer então que um objeto tem a capacidade de oferecer uma interface de programação ( API ). Para um objeto isto consiste em:
Propriedades - a capacidade de definir e/ou obter um valor do estado referenciado por um objeto.( Ex: form1.width )
Métodos - rotinas disponíveis que permitem o processamento no interior do objeto.(Ex: form1.show , form1.hide)
Definição de Classe
Uma classe é a descrição ou um modelo para um objeto. Para que um objeto exista deve existir uma classe com as definições pertinentes ao objeto. A classe 'gera' o objeto. (Pense na classe como um carimbo , e, em cada figura gerada pelo carimbo como um objeto da classe)
"Um objeto é então uma instância de uma classe , e , uma classe é um tipo a partir do qual podemos gerar muitas instâncias de objetos."
Vamos fazer uma analogia com o mundo real:
Quando você entra no seu carro e coloca o chave no contato para dar a partida e sair você não precisa saber nada sobre como o motor do carro vai funcionar . O automóvel fornece uma interface através da qual você interage com o motor e os demais itens. Você só precisa conhecer a interface : ligar a chave , pisar no freio, ligar as luzes , os faróis , etc.. Neste sentido o carro é um objeto que oferece propriedades (velocidade , nível de combustível, etc) e métodos (dar partida , frear, ligar , etc).
Podemos dizer então que uma classe para representar um objeto deve ter as seguintes características :
Fornecer uma interface bem definida com o usuário que permitam a realização de operações válidas com o objeto
Ser tão completa quanto possível sem precisar invocar rotinas externas para operar com o objeto
Ser robusta de forma rejeitar operações ilegais ou incorretas.
Colocando em prática
Vamos agora criar um projeto em VB com os conceitos acima descritos . Como você deve saber o VB permite que criemos módulos de classe em nosso projetos , mas apenas incluir um módulo de classe no projeto não tornará nossa aplicação orientada a objetos. Temos que modelar e ter um bom desenho do projeto. Com isto estou querendo dizer que você deve ter uma compreensão correta do problema e do projeto e para isto você deve entender o seguinte :
Quais são os objetos no sistema
Quais são os relacionamentos entre os objetos
Quais são as interações entre os objetos
Vamos então criar um projeto no VB que permita o cálculo de uma aplicação financeira onde iremos fornecer a taxa de juros , o período , a aplicação etc.. e iremos obter o resultado do investimento.
Estamos falando de uma aplicação financeira e para isto devemos ter uma conta bancária , quando pensamos em aplicações e conta bancária no vem a mente o seguinte :
Saldo
Taxa de investimento
Deposito
Saque
cálculo investimento
Agora temos que identificar as propriedades e métodos que devermos criar.
1- Inicie um novo projeto Standard EXE Visual Basic e chame-o de : AplicaçãoFinanceira.
2- Agora inclua um módulo de classe a partir do menu : Project | Add Class Module e chame-o de : cContaBancaria
3- Inclua a instrução Option Explicit no início do módulo de classe e defina as variáveis mdblSaldo e mdblTaxaInvestimento como abaixo:
|
Option Explicit |
4- Agora vamos definir a rotina - Class_Initialize - que será executada toda vez que o objeto da classe cContaBancaria for instanciado . Podemos dizer que esta rotina é o construtor da classe pois nela iremos atribuir valores iniciais para as variáveis e métodos da classe :
| Private Sub
Class_Initialize() ' ' O evento Initialize é a primeira rotina que será chamada ' quando você criar um objeto cContaBancaria ' equivale ao construtor no VB .NET , Java ' ' Ex. Set octaBco = New cContaBancaria mdblSaldo = 0 Me.TaxaInvestimento = 0 End Sub |
5- A rotina - Class_Terminate - esta definida abaixo
| Private Sub
Class_Terminate() ' a rotina Class_Terminate é chamada quando o objeto é destruído ou desalocado da memória End Sub |
6- Agora vamos criar a propriedade - Saldo - que permite obter o saldo da conta. Esta propriedade é somente leitura pois não temos uma propriedade Let que permita atribuir valores ao saldo.
| Public
Property Get Saldo() As Double ' retorna o saldo da conta Saldo = mdblSaldo End Property |
7- Abaixo a propriedade Get TaxaInvestimento que retorna à taxa
| Public
Property Get TaxaInvestimento() As Double ' Retorna a taxa de investimento TaxaInvestimento = mdblTaxaInvestimento End Property |
8 - A propriedade Let TaxaInvestimento permite atribuir um valor à taxa.
| Public
Property Let TaxaInvestimento(ByVal dblNovoTaxaInvestimento As Double) ' verifica se a taxa de investimento é válida If dblNovoTaxaInvestimento < 0 Then Err.Raise vbObjectError + 2001, "Conta Bancaria::TaxaInvestimento", "Definição de taxa inválida : " & dblNovoTaxaInvestimento End If ' Define a taxa mdblTaxaInvestimento = dblNovoTaxaInvestimento End Property |
Passemos agora aos métodos da classe. Iremos ter os seguintes métodos : Saque , Deposito , CalculoInvestimento e ProcessamentoMensal.
9- O método Saque permite realizar um saque na conta. O método faz um verificação para não permitir valores menores que zero e também verifica se a conta tem fundos.
| Public Sub
Saque(ByVal dblValor As Double) ' efetua o saque da conta ' faz primeiro a verificação If dblValor < 0 Then Err.Raise vbObjectError + 2002, "Conta Bancaria::Saque", "Valor de saque inválido : " & dblValor End If If (mdblSaldo - dblValor) < 0 Then Err.Raise vbObjectError + 2003, "Conta Bancaria::Saque", "Insuficiência de fundos" End If 'Calcula o saldo mdblSaldo = mdblSaldo - dblValor End Sub |
10- O método - Deposito - permite efetuar depósitos na conta não permitindo depósitos de valores negativos
| Public Sub
Deposito(ByVal dblValor As Double) ' efetua deposito na conta ' faz primeiro uma verificacao If dblValor <= 0 Then Err.Raise vbObjectError + 2002, "Conta Bancária::Depósito", "Valor de depósito inválido : " & dblValor End If mdblSaldo = mdblSaldo + dblValor End Sub |
11- O método - CalculoInvestimento - apenas calcula o valor do investimento usando a taxa de investimento mensal.
| Private Sub
CalculoInvestimento() ' esta rotina é privada para não permitir que programas externos ' atualizem o saldo . A atualização somente é possivel pela interface do programa ' Atualiza o saldo com a taxa mensal mdblSaldo = mdblSaldo + (mdblSaldo * (mdblTaxaInvestimento / 100)) End Sub |
12 - O método - ProcessamentoMensal - apenas invoca o método cálculo de investimento.
| Public Sub
ProcessamentoMensal() ' Remove o recebimento mensal do saldo ' da conta e então atualiza o saldo com a taxa de lucro CalculoInvestimento End Sub |
Com isto acabamos de concluir o código da classe cContaBancaria. Nele definimos as propriedades : Saldo , TaxaInvestimento e os métodos : Saque , Deposito , CalculoInvestimento e ProcessamentoMensal.
Testando a classe cContaBancaria
Vamos agora testar a classe criada. Para isto vamos incluir um formulário - frmContaBancaria - no projeto com o seguinte layout:
![]() |
- Controles
usados no formulário :
|
No evento Load do formulário temos o código que carrega a combobox - cboMesInicio - com os números de 1 a 12 referentes a cada mês do ano.
| Private Sub
Form_Load() Dim i As Integer For i = 1 To 12 cboMesInicio.ListIndex = 0 |
A seguir o código do evento Click do botão de comando - command1 - é que vai fazer todo o serviço.
| Private Sub
Command1_Click() Dim oContaBancaria As cContaBancaria Dim lmes As Long On Error GoTo vbErrorHandler Set oContaBancaria = New cContaBancaria txtSaldo.Text = "" oContaBancaria.TaxaInvestimento = CDbl(txtTaxa.Text) oContaBancaria.Deposito CDbl(txtAplicacao.Text) For lmes = (cboMesInicio.Text) To CInt(txtPeriodo.Text) oContaBancaria.Saque CDbl(txtSaque.Text) oContaBancaria.ProcessamentoMensal txtSaldo.Text = txtSaldo.Text & MonthName(lmes) & vbTab & " Saldo = " & Format(oContaBancaria.Saldo, "$#,##0.00;($#,##0.00)") & vbCrLf Next Exit Sub vbErrorHandler: MsgBox Err.Number & " - " & Err.Description, vbOKOnly, Err.Source End Sub |
Declaramos a variável - oContaBancaria - que irá fazer referência a classe cContaBancaria e a variável lmes que irá ser usada no laço for/next
A declaração - Set oContaBancaria = New cContaBancaria - cria uma instância do objeto oContaBancaria a partir da classe cContaBancaria
oContaBancaria.TaxaInvestimento = CDbl(txtTaxa.Text)
- atribui a taxa de investimento a propriedade -
TaxaInvestimento - informada no formulário
oContaBancaria.Deposito CDbl(txtAplicacao.Text) - atribui o valor da
aplicação via método - Deposito - informada no
formulário.
O laço for/next abaixo atribui o valor do saque via método Saque do objeto oContaBancaria e invoca o método ProcessamentoMensal que realiza o calculo do investimento.
| For lmes =
(cboMesInicio.Text) To CInt(txtPeriodo.Text) oContaBancaria.Saque CDbl(txtSaque.Text) oContaBancaria.ProcessamentoMensal txtSaldo.Text = txtSaldo.Text & MonthName(lmes) & vbTab & " Saldo = " & Format(oContaBancaria.Saldo, "$#,##0.00;($#,##0.00)") & vbCrLf Next |
A linha de código:
txtSaldo.Text = txtSaldo.Text & MonthName(lmes) & vbTab & " Saldo = " & Format(oContaBancaria.Saldo, "$#,##0.00;($#,##0.00)") & vbCrLf
exibe o valor do investimento calculado para cada mês.

Gostou !! acabamos de criar uma classe para calcular o valor de investimento mensal a uma taxa de juros num dado período. Instanciando o objeto oContaBancaria e através dele usamos as propriedades e métodos da classe em um formulário VB para obter o resultado.
Até o próximo artigo VB .NET
![]()
|
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#