Visual Basic #3 – Programação Orientada para Objectos

46 Comentários

Por Juliano Almeida para o Pplware
Estou de volta com mais Visual Basic, esta semana irei falar da Programação Orientada para Objectos e no fim iremos usar os menus da semana anterior para fazermos uma calculadora muito simples.

Programação Orientada para Objectos

A programação orientada para objectos é a sucessora natural da programação estruturada que falamos na semana passada, continuando a utilizar módulos, mas de forma diferente. Em vez de dividir o problema em subproblemas, o programador identifica os objectos envolvidos no problema: objectos com características próprias (propriedades) e com capacidade de realizar certas funções (métodos).

Para cada objecto existe uma lista de eventos possíveis e é nesses eventos que se escrevem as instruções necessárias para a acção respectiva.

Isto pressupõe uma estratégia de programação diferente.

  1. Desenha primeiro o ambiente (interface), determinando quais os objectos (botões de comando e outros) necessários e colocando-os numa base (forma);
  2. Em seguida, atribui as características (propriedades) que o leitor achar mais convenientes (tamanho, cor, etc.) a cada um desses objectos;
  3. Por fim, insere instruções em código em cada um deles (ou em módulos independentes) para que, ao serem acedidos por uma acção do utilizador (por exemplo, um clique do rato) executem uma tarefa.

Percebe-se agora porque se chama programação orientada por objectos, todas as instruções são escritas e todas as acções são executadas em função de cada objecto.

Vejamos como funciona esta programação no nosso exemplo do café.

Em vez de dividirmos o problema em módulos, vamos determinar quais os objectos a utilizar. São 5: cafeteira, fogão, chávena, café e água. Escolhemos cada um segundo as características ou propriedades (cafeteira grande ou pequena, fogão eléctrico ou a gás, chávena de porcelana ou plásticos, verde ou amarela, etc. E escrevemos então as instruções necessárias para obter o resultado que pretendemos de cada um deles:

Objecto: Cafeteira – resultado pretendido: água quente

1 – Pegar na cafeteira;
2 – Encher a cafeteira com água;
3 – Colocar a cafeteira sobre uma boca de fogão.

Objectos: Fogão – resultado pretendido: aquecer

1 – Rodar o botão de controlo de uma boca;
2 – Acender a boca.

Objecto: Café – resultado pretendido: bebida

1 – Deitá-lo numa chávena com água quente;
2 – Mexer.

E assim por adiante, para todos os objectos. Não restam duvidas de que conseguiremos preparar o nosso café com muito maior liberdade de acção e de escolha, de forma personalizada. E sem necessidade de estar a programar antecipadamente toda a sequência de acções necessárias para o efeito.

Repare-se, por exemplo, no objecto fogão e no resultado que se espera obter – aquecer. Não só o objecto como o resultado são elementos que poderemos a partir do momento em que o escolhemos e aprendemos a trabalhar com ele, utilizar para o relacionar com um número variado de outros objectos (panela, frigideira, tacho), obtendo sempre o mesmo resultado, ainda que para produtos finais diferentes (sopa, batatas frita, pudim). E sem necessidade de estarmos a escrever novamente as instruções, cada vez que pretendemos utilizá-lo para o mesmo fim – aquecer.

Vamos agora para a parte prática.

Calculadora simples Visual Basic 6 e Visual Basic 2008

Independentemente dos comentários ao artigo anterior, continuarei a usar o Visual Basic 6 e o 2008 nos artigos.

Para a explicação desta aplicação, não será necessário explicar em separado, pois é muito parecido.

Abram a aplicação do artigo anterior (os menus) e depois de terem tudo pronto, alterem o nome da Caption da form para Calculadora (no visual Basic 2008 alteram o campo Text para Calculadora). Depois de executarem este passo, como temos o menu Sair, não será necessário aquela Cruz no canto superior direito da aplicação (barra de titulo), para tirar isso, alteramos a propriedade da form ControlBox para False (igual em Visual Basic 6 e Visual Basic 2008).

Como desactivamos a única maneira visível de fechar a nossa Calculadora, temos que fazer com que o menu “Ficheiro -> Sair” saia da aplicação, para isso duplo clique sobre Sair e o único código que metem é End (igual em vb6 e vb2008).

Quanto ao código das funções copiar, falaremos num artigo próximo.

A interface da nossa aplicação precisa de ter:

3 Caixas de texto;
4 Botões;
3 Label’s

Ficando parecido com isto:


(Visual Basic 6)


(Visual Basic 2008)

Depois de terem tudo desenhado, é necessário pensar no código para que os botões funcionem.

Botão “Mais” Visual Basic 6

Text3.text = val(text1.text) + val(text2.text)

Botão “Mais” Visual Basic 2008

Textbox3.text = val(textbox1.text) + val(textbox2.text)

Botão “Menos” Visual Basic 6

Text3.text = val(text1.text) – val(text2.text)

Botão “Menos” Visual Basic 2008

Textbox3.text = val(textbox1.text) – val(textbox2.text)

Botão “Vezes” Visual Basic 6

Text3.text = val(text1.text) * val(text2.text)

Botão “Vezes” Visual Basic 2008

Textbox3.text = val(textbox1.text) * val(textbox2.text)

Botão “Dividir” Visual Basic 6

Text3.text = val(text1.text) / val(text2.text)

Botão “Dividr” Visual Basic 2008

Textbox3.text = val(textbox1.text) / val(textbox2.text)

Para a próxima semana, Terça – Feira cá estarei com mais Visual Basic. Até, boa programação. Dúvidas e sugestões? Nos comentários ou então no nosso fórum.

Partilhar:
Tags:

Comentários

46

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Nuno Custódio
    Nuno Custódio

    Uma rotina de validação de introdução de números e outra que não permitisse a divisão por 0 não ficava aí nada mal ;D

  2. Avatar de tagravado.com
    1. Avatar de @JoTa

      ” php é a quinta feira “..

      ____________________________________

      http://joaoreis.hostoi.com/

  3. Avatar de terrible
    terrible

    Está a dar erro ao clicar no ícone “PDF” no final do artigo, para gravar o post como PDF.
    Ou só a mim acontece isso?

    Obtenho a seguinte mensagem:
    “TCPDF error: Unsupported image type: gif “

    1. Avatar de Alexandre
      Alexandre

      a mim também :S

      Parabéns pela iniciativa

    2. Avatar de Ana Narciso

      Agora já não dá erro. Experimentem. 😉

  4. Avatar de G Silva
    G Silva

    Não sei porquê mas o meu Visual basic 2008 não reconhece a expressão “val” e diz: “The name val does not exist in the current context”.
    E a formula está igual a que foi aqui apresentada. Algém me poderá explicar ou tentar explicar o que fiz de errado.

    Obrigado

    1. Avatar de Juliano Almeida
      Juliano Almeida

      G Silva, o nome das tuas textbox são os predefinidos pelo programa? Textbox1 – 1º Numero
      Textbox2 – 2º Numero
      Textbox3 – Resultado.

      textbox3.text = val(textbox1.text) + val(textbox2.text)

      1. Avatar de G Silva
        G Silva

        Não o nome das minhas textbox são textBox e a função Text é text tem umas alterações nas letras maiúsculas e minúsculas

      2. Avatar de G Silva
        G Silva

        Não o nome das minhas textbox’s é textBox e da função Text é text.

    2. Avatar de João Palma

      Boas…
      tive a analisar o código…
      e parceu-me que o “val” é uma função criada pelo o autor do artigo que permitia validar o texto que esta dentro da textbox!!

      na minha (Pequena e inocente)opinião acho que podes trocar o val por IsNumeric

      exemplo: IsNumeric(textbox1.text)

      Espero ter ajudado

      1. Avatar de Gabriel Silva
        Gabriel Silva

        É mesmo…
        Funciona!!!!!
        Obrigadão….

        E pelo que tive a ver na net… o isnumeric verifica se é numero ou seja era mesmo isto que faltava ao Juliano Almeida!!! Para a próxima o Juliano vai ter que começar a rever o que faz…

        1. Avatar de Juliano Almeida
          Juliano Almeida

          Isso um pouco mais avançado, como eu refiro no texto, esta é uma calculadora muito simples, mais tarde apresentarei uma com raiz quadrada, e com a inserção dos numeros por botão, uma calculadora mais parecida com a do Windows, mas podem usar o que quiser, e quanto mais discução sobre o assunto melhor, aprendemos uns com os outros e ficamos com varias maneiras de fazer o “mesmo” 😉

          1. Avatar de Gabriel Silva
            Gabriel Silva

            Não achei… Qual a diferença entre meter esse tal val (que não está a funcionar….) e o isnumeric está no nome…. não vejo dificuldade nenhuma….

    3. Avatar de Telmo
      Telmo

      Nada disso… A função val está apenas disponível no VB6 e não no VB.NET 2008.
      No VB.NET 2008 usem antes a função:

      CDouble:

      Botão “Mais” Visual Basic 2008

      Textbox3.text = CDouble(textbox1.text) + CDouble(textbox2.text)

      Esta função converte os valores para Double.

      No VB6 a função val permitia converter as strings em valores numéricos.

      1. Avatar de Juliano Almeida
        Juliano Almeida

        Eu uso o Visual Basic 2008 Express e a função val funciona sem problemas.

  5. Avatar de Pedro
    Pedro

    Botão para apagar os resultados nas três caixas de texto.
    Cumprimentos

    1. Avatar de Juliano Almeida
      Juliano Almeida

      Escapou-me, mas podem criar um botão, dão-lhe o nome Limpar por exemplo e o codigo é:

      textbox1.text = “”
      textbox2.text = “”
      textbox3.text = “”

      No visual basic 6 é:

      text1.text = “”
      text2.text = “”
      text3.text = “”

      1. Avatar de Shogun
        Shogun

        Não se és da msm opiniao mas String.empty fica mais bonito no codigo.

        1. Avatar de Juliano Almeida
          Juliano Almeida

          Também serve 😉

      2. Avatar de Pedro
        Pedro

        Boas!

        Obrigado pela resposta, a minha um pouco tardia.

        Cumprimentos!

      3. Avatar de Helder Pinto
        Helder Pinto

        E Textbox1.Clear fica melhor ainda!! 🙂

  6. Avatar de Diogo Guedezz
    Diogo Guedezz

    Excelente post como sempre…

    A aprender visual basic no pplware!

    Cumpzz

  7. Avatar de Manuel Andrade
    Manuel Andrade

    Boas.

    Estando quase a chegar ao final do meu curso de “Técnico de informatica” e tendo dado Visual Basic ao longo do curso…as suas revisões estão a ser de grande utilidade para mim.

    Muito Obrigado pela iniciativa

    Cumps,

  8. Avatar de codex
    codex

    Estou com um problema:
    no final de fazer o programa como é que posso guardá-lo em modo de aplicação?
    ou seja, em .exe!

    1. Avatar de Juliano Almeida
      Juliano Almeida

      No Visual Basic 6 basta ires a File – > Make exe

      No Visual Basic 2008 é um pouco mais complicado, pelo menos so conheço esta maneira.

      Gravas o projecto: File – > Save All, escolhes o sitio, depois vais a esse sitio, abres a pasta que o vb criou, e procura por uma pasta Bin, dentro dessa pasta tens uma que se chama debug e tens lá o teu exe.

      1. Avatar de Shogun
        Shogun

        Nas propriedades podes tb escolher para salvar como release, ou existe também a possibilidade de criar um novo projecto que é um setup da aplicacao.

  9. Avatar de Recebidos.net

    Acho que estás a confundir “programação orientada a objetos” ou OOP, não tens nenhum exemplo para o uso de tal no teu codigo.

    Não estarás a confundir objectos com controlos??

    controlos são botões, textboxes, etc..
    OOP é a utilização de classes por exemplo, o que simplifica a reutilização de código e a organização do mesmo.

    Pegando no exemplo da calculador terias algo do genero:
    supondo que tens uma classe calculadora com um metodo calcular que aceita 3 paramtros no contructor da classe valor 1, valor 2 e operação e nesse metodo tens a logica de calculo conforme a operação que passa como parametro.
    Sendo assim cada botão chamaria apenas o metodo passando como parametro a operação pretendida, tendo assim as vantagens de reduzir o tamanho do codigo, se houver um erro so pode estar num sitio e a leitura muito mais simplificada.

    sendo assim o codigo de cada botao seria:

    dim calc as new calculadora
    textbox3.text = calc.calcular(textbox1.text, textbox2.text, operacaoConformeBotaoClicado)

    1. Avatar de Recebidos.net

      Ficou um portugues muito estranho mas acho que da para perceber a ideia!!!

    2. Avatar de Ricardo
      Ricardo

      Exacto…ia perguntar o mesmo. Onde está neste artigo a POO?

    3. Avatar de Juliano Almeida
      Juliano Almeida

      Respondendo aos comments do Recebidos.net e do Ricardo, não sei se têm seguido os meus artigos, mas em cada artigo tenho sempre uma forma de programar explicada, primeiro falei um pouco da algoritimia, em seguida falei da programação estrutural e modular e neste ultimo artigo falo da Programação orientada a objectos e no proximo falarei sobre Proframação dirigida por enventos, e em nenhum dos artigos, as aplicações que apresento estão relacionadas com a programação que apresento antes, não sei se me estão a perceber, mas o que eu pretendo é que os leitores desenvolvam primeiro os metodos de programação e se comecem a familiarizar com o programa visual basic e o meu principal objectivo é que os leitores percebam a logica da programação, para que possam programar não só em Visual Basic como em outros programas.

      1. Avatar de Recebidos.net

        Eu tenho acompanhado os outros posts, tanto eu como o Ricardo só alertamos que o que mostras-te neste artigo não é POO!!

        http://pt.wikipedia.org/wiki/Oop

        Já agora um comment à rubrica devias ter começado pelo básico, vejo aqui pessoas que não sabem sequer fazer um build ao prjecto, sugiro que cries um post com as bases como por exemplo o que é o codigo fonte, o que é um form, o que é uma class, o que significa fazer debug, o que significa release, etc…

        já agora existem algumas “regras” nos nomes dos controlos para facilitar a leitura e o trabalho com projectos mais extenssos, por exemplo chamares ao botao somar cmdSomar.

        se quiseres ajuda… 😉

        Não leves a mal não queria de forma nenhuma desprezar o teu trabalho, antes pelo contrario creio ser um incentivo a que trabalhes melhor!

        1. Avatar de Shogun
          Shogun

          “já agora existem algumas “regras” nos nomes dos controlos para facilitar a leitura e o trabalho com projectos mais extenssos, por exemplo chamares ao botao somar cmdSomar.”

          A essas regras chama-se “best practices”, e existe documentação inclusivé de pessoal da Microsoft e que faz parte do desenvolvimento da Framework .Net.

          Não é boa prática usar os nomes que o Juliano usou, mas o nome que tu sugeriste também não é bom de acordo com as “best pratices”, o nome mais apropriado seria, commandButtonSomar, ou buttonSomar. cmd por exemplo é dubio imaginamos que eu uso esse tipo de notacao e que em alguma parte do codigo preciso de criar uma string que ira conter um comando sql, poderia querer usar cmdXpto, e dp teria um botao qualquer que seria cmdXpto, já não podia.

          A este nivel, penso que essa sugestão não é propriamente pertinente no entanto é sp bom relembrar o pessoal que existem algumas boas praticas no mundo da programação, não só para nos ajudarmos a nós mas também quem for ler o código a seguir.

          1. Avatar de Joel
            Joel

            Antes demais parabens e obrigado por mais um excelente post. Queria apenas dar uma sugestao que seria ensinar conceitos mais básicos de programação e ir avançando mais lentamente no grau de complexidade.

          2. Avatar de Juliano Almeida
            Juliano Almeida

            Por acaso quando me ensinaram programação tambem me deram essa dica, mesmo nos menus para por mnuFicheiro, mas cada um molda o que aprendeu da maneira que acha melhor, mas é um aspecto que vou passar a ter em conta.

    4. Avatar de softclean
      softclean

      Também notei essa confusão entre POO e os objectos gráficos, já tá tudo dito.

      Mas mais lá para a frente, mesmo depois da programação por eventos, era engraçado referir o POO, mesmo com o exemplo do café (o café podia ser um objecto criado pela cafeteira, que por sua vez era outro objecto!).

      Só um detalhe, parece-me que não fazes validação quanto à divisão por zero, mas pode ficar um pequeno exercício para quem está a aprender.

  10. Avatar de Lj
    Lj

    Qual é a forma de introduzir estes últimos caracteres a seguir ao sinal de =
    Obrigado.

    1. Avatar de Juliano Almeida
      Juliano Almeida

      Estes: “”

      São duas aspas 😉

  11. Avatar de Weasel

    No Vb.NET não deve ser usado o val() mas sim por exemplo o Double.Parse()

  12. Avatar de PedroC.
    PedroC.

    …é mais um post com boa qualidade explicativa!!!!

    Continuação…!

    🙂

  13. Avatar de André Sousa
    André Sousa

    Boas pessoal da programação, ora eu como estúpido neste campo queria pedir-vos uma ajuda/opinião. So conseguimos editar um software lançado se tivermos o seu source code certo?
    Eu tenho um player de Musica que é standalone (so precisa de um .dll para correr) e pode ter mais que uma instância. O que eu queria fazer era tipo um fundo onde enquadra-se duas instâncias do player e que ficasse em full screen ou seja por exemplo uma tela preta com dois quadrados onde abriam as duas instâncias do player. Será possível? Sei que me embrulhei um bocado na explicação mas se alguém puder ajudar ou então tiver sede de um desafio, que diga qualquer coisa.

    Abr.

    1. Avatar de Shogun
      Shogun

      Existe uma coisa chamada Reflection, que pode permitir fazeres reverse engineering de um software.

  14. Avatar de Contra o Contra
    Contra o Contra

    Boas!

    Continuo a assistir e a aprender!

    Gostava apenas de apontar sugestão para a orientação a tomar ou para uma divagação a fazer: hoje em dia é cada vez mais frequente as pessoas recolherem informações diárias da internet, acederem a e-mails, sites, etc. Era bom sabermos como automatizar essas pesquizas e penso que através desta ferramenta Visual Basic que tem mais de Essencial do que de Básica, podemos fazê-lo!

  15. Avatar de Joao c
    Joao c

    Boas!
    Tenho um programa de vj(videojockey) e gostava de fazer uma aplicação de texto que pudesse interagir com esse programa para mudar o texto em tempo real, é possivel fazer algo em visual basic para o tal feito?

  16. Avatar de Sérgio Santos
    Sérgio Santos

    boa tarde, estou a tentar fazer o jogo da memoria, so que nao sei como por a imagem visivel quando carrego no botão.. se puderem ajudar

    1. Avatar de Tiago
      Tiago

      basta clicares duas vezes no botao, selecionares o evento click e colocares lá:

      imagem.visible=true;

      para veres o evento click não te esqueças de mudar o evento do botao.