Visual Basic #3 – Programação Orientada para Objectos
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.
- Desenha primeiro o ambiente (interface), determinando quais os objectos (botões de comando e outros) necessários e colocando-os numa base (forma);
- Em seguida, atribui as características (propriedades) que o leitor achar mais convenientes (tamanho, cor, etc.) a cada um desses objectos;
- 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:
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.
Este artigo tem mais de um ano
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
para quando uns tutoriais de php? 😀
http://www.tagravado.com
” php é a quinta feira “..
____________________________________
http://joaoreis.hostoi.com/
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 “
a mim também :S
Parabéns pela iniciativa
Agora já não dá erro. Experimentem. 😉
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
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)
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
Não o nome das minhas textbox’s é textBox e da função Text é text.
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
É 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…
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” 😉
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….
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.
Eu uso o Visual Basic 2008 Express e a função val funciona sem problemas.
Botão para apagar os resultados nas três caixas de texto.
Cumprimentos
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 = “”
Não se és da msm opiniao mas String.empty fica mais bonito no codigo.
Também serve 😉
Boas!
Obrigado pela resposta, a minha um pouco tardia.
Cumprimentos!
E Textbox1.Clear fica melhor ainda!! 🙂
Excelente post como sempre…
A aprender visual basic no pplware!
Cumpzz
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,
Estou com um problema:
no final de fazer o programa como é que posso guardá-lo em modo de aplicação?
ou seja, em .exe!
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.
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.
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)
Ficou um portugues muito estranho mas acho que da para perceber a ideia!!!
Exacto…ia perguntar o mesmo. Onde está neste artigo a POO?
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.
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!
“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.
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.
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.
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.
Qual é a forma de introduzir estes últimos caracteres a seguir ao sinal de =
Obrigado.
Estes: “”
São duas aspas 😉
No Vb.NET não deve ser usado o val() mas sim por exemplo o Double.Parse()
…é mais um post com boa qualidade explicativa!!!!
Continuação…!
🙂
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.
Existe uma coisa chamada Reflection, que pode permitir fazeres reverse engineering de um software.
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!
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?
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
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.