visual basic para pequenos genios-libre

113
Visual Basic para Pequenos Gênios

Upload: nevada611

Post on 04-Oct-2015

27 views

Category:

Documents


13 download

DESCRIPTION

vb

TRANSCRIPT

  • Visual Basic para

    Pequenos Gnios

  • Parte I Introduo Introduo

    Ns Podemos Nos Divertir Aqui?

    Acho que sei o que voc est pensando "Eu quero escrever um programa e quero escrev-lo agora! Codificao a parte legal; eu no quero ler metade do livro antes de poder escrever meu primeiro programa. Na verdade, essa frase j est ficando muito longa eu quero comear j!"

    Diabinho: Vai em frente. Mergulhe de cabea. Anjinho: No! No at voc ter lido o livro todo!

    Francamente, ainda no encontrei um programador que resistisse a partir diretamente para a ao afinal de contas, se voc comprasse uma bicicleta nova, conseguiria sentar-se e ler o manual primeiro? Provavelmente no. Voc subiria, daria uma voltinha, cairia de cara e s mais tarde descobriria que os freios desse modelo so diferentes da conveno comum.

    Ento, vamos fazer um acordo. Vamos mergulhar direto no primeiro captulo. Depois que voc tiver instalado o software, poder executar alguns programas de exemplo e, se estiver confiante, talvez at modific-los.

    Mas o cdigo parecer estranho e no far muito sentido voc estar andando s cegas e quando voc cometer um pequeno erro, no ter idia do que est errado e de como corrigir o problema. Simplesmente no funcionar e voc no saber por qu. nesse momento que voc sabe que hora de comear a estudar a teoria como um profissional. No se desestimule quando algo no der certo, nem desista. Quando essa hora chegar, leia o resto do livro, est bem?

    A Parte Realmente Importante

    Em programao, como em todas as outras profisses, as pessoas que tm mais sucesso so aquelas que amam o que fazem. Se voc gosta da sua programao, achar difcil se privar de aprender coisas novas. Sua necessidade de saber o levar adiante e estudar mais ser apenas algo que acontece ao longo do caminho.

    Ento, acima de tudo, divirta-se medida que voc domina o mundo da programao Visual Basic!

  • Software de Que Voc Precisar

    Para desenvolver programas em Visual Basic, ser necessrio:

    1. O Microsoft .NET Framework 3.5 (disponvel gratuitamente).

    2. Um ambiente de desenvolvimento do .NET. Recomendamos o Microsoft Visual Basic 2008 Express Edition, disponvel gratuitamente pela Microsoft em http://download.microsoft.com/download/d/c/3/dc3439e7-5533-4f4c-9ba0-8577685b6e7e/vbsetup.exe . O pacote de instalao do Visual Basic 2008 Express inclui o .NET Framework, ento voc no precisa se preocupar em instalar o item 1 acima separadamente.

    3. Por ltimo, voc precisa copiar os arquivos de exemplo do livro para uma unidade no seu prprio computador. Extraia o arquivo example.zip em qualquer pasta de sua escolha. Apenas lembre-se do local escolhido, pois mais tarde ser solicitado que voc abra os arquivos nesse local.

    Mais Sobre o Microsoft Visual Basic 2008 Express Edition

    possvel criar programas em Visual Basic usando nada alm de um simples editor de texto (como o Bloco de Notas) e algo chamado de "compilador do Visual Basic" includo com o .NET Framework. Para facilitar um pouco as coisas, contudo, e para garantir que voc possa continuar em frente aps ler este livro, sugerimos que voc use um ambiente de desenvolvimento como o do Visual Basic Express. Ele um ambiente leve para desenvolver aplicativos do Windows e aplicativos de console (linha de comando), usando o Visual Basic.

    importante que voc entenda que este livro no sobre ensin-lo sobre o produto de software Visual Basic Express Edition, e sim sobre a linguagem Visual Basic. O Visual Basic Express tambm possui muitos recursos sofisticados, como escrever cdigos do Visual Basic para voc, quando voc arrasta e solta um boto ou outro controle na pgina. Isso legal e voc pode us-lo vontade mas este livro tem o objetivo de ensin-lo sobre o Visual Basic desde o incio. Gostaramos que voc aprendesse a escrever cdigo do Visual Basic a mo primeiro para que voc realmente entenda o que est acontecendo.

    Se desejar saber mais sobre o ambiente de desenvolvimento do Visual Basic Express, v at o site http://msdn.microsoft.com/en-us/express/future/default .

    Escrevendo um Novo Programa Usando o Visual Basic Express

    Para iniciar o Visual Basic Express, clique em INICIAR -> Todos os Programas -> Microsoft Visual Basic 2008 Express Edition

    Para iniciar um novo projeto, simplesmente selecione Arquivo -> Novo Projeto e escolha um tipo de projeto. Comearemos com alguns aplicativos de console e passaremos mais tarde para aplicativos do Windows.

  • Por exemplo, tente criar um novo aplicativo de console e clicar em OK. Por padro, um arquivo Module1.vb criado. Renomeie o arquivo para Program.vb. Quando a janela de codificao de Program.vb for exibida, exclua todos os cdigos automaticamente inseridos e digite um programa simples como este. Voc pode copi-lo e col-lo se estiver com preguia. Ou seria esperteza?!

    Imports System Class PleaseSayYo Shared Sub Main() Console.WriteLine("Yo!") Console.ReadLine() End Sub End Class

    Certifique-se de digitar EXATAMENTE como acima (com a exceo de que a formatao pode ser ignorada).

    Em seguida, clique no boto Executar ou Reproduzir (ou pressione F5)

    Se o programa for executado com xito, ele ser exibido aps um momento, em uma janela acima da janela do Visual Basic Express.

  • Quando tiver terminado, pare o programa. Normalmente, isso feito clicando no X, no canto superior direito para fechar a janela.

    Se houver algum problema no cdigo do programa, voc ser alertado sobre esse fato. Por exemplo, voc observa que na linguagem de computador do Visual Basic, preciso digitar cada instruo em uma nova linha. Se voc tentar colocar mais de uma instruo em uma linha e clicar no boto de iniciar, ver a mensagem de erro abaixo.

    Na maioria dos casos, voc clicar em "No" (No) e ver alguns detalhes na janela "Error List" (Lista de Erros), incluindo uma indicao do nmero da linha em que o erro foi encontrado. Se voc clicar duas vezes na descrio do erro, ser levado para a linha onde o problema existe, para que voc tente corrigi-lo.

    s vezes, uma instruo muito longa. Mas o Visual Basic precisa que cada instruo esteja em uma linha separada. Nesse caso, voc pode usar o sublinhado "_" para dividir uma instruo. Por exemplo, se voc possui uma instruo longa como a exibida abaixo:

    MyButtonClickEventHandler(ByVal sender As Object, ByVal anEvtArgs As EventArgs)

    E deseja exibi-la em duas linhas separadas. Poder fazer da seguinte maneira:

    MyButtonClickEventHandler(ByVal sender As Object, _ ByVal anEvtArgs As EventArgs)

    Executando os Programas de Amostra do Livro

  • Vrios dos programas de exemplo deste livro precisam de arquivos de acompanhamento. Esses programas no sero executados corretamente se voc simplesmente colar o cdigo como mostrado acima.

    Aps ter copiado os arquivos de exemplo para alguma pasta do computador, voc dever execut-los:

    No Visual Basic Express, selecione Arquivo -> Abrir Projeto V at a pasta onde salvou seus arquivos de exemplo e selecione o projeto desejado, que sempre ter uma extenso .vbproj (projeto do Visual Basic). Clique no boto verde Executar.

    Padres de Formatao Usados Neste Livro

    Para que seja mais fcil acompanhar as amostras de cdigo do livro, adotamos certos hbitos:

    Considere este bloco de cdigo como exemplo:

    ' Mtodo principal Shared Sub Main() Application.Run(New MyButtonClass()) End Sub ' Mtodo manipulador de evento Sub MyButtonClickEventHandler(ByVal sender As Object, ByVal e As EventArgs) mrButton.Text = "You clicked me!" End Sub Amostras de cdigos so escritas usando uma fonte ligeiramente diferente no restante do texto (Consolas). Quaisquer palavras ou smbolos que sejam parte da linguagem do Visual Basic ou que estejam incorporados ao .NET Framework, como "Shared Sub", "ByVal", "As", etc, escrevemos na cor azul. Uma aspa simples ' indica comentrios para explicar o cdigo (na verdade, esse um recurso da linguagem do Visual Basic). Tudo o que houver no restante da linha ignorado pelo computador. Um exemplo acima "' Mtodo principal".

    A parte II do livro contm a maioria dos conceitos gerais e freqentemente resumimos os principais conceitos aqui. Esses resumos so chamados de "Blocos de Construo". Veja um exemplo parcial mostrando como um Bloco de Construo exibido.

    Bloco de Construo: Classes

    Todos os programas do Visual Basic so criados dentro de classes. A estrutura bsica de uma classe escrita para o computador como se segue:

    Class Animal End Class

    O Que Vem a Seguir?

    Voc provavelmente desejar brincar com o Visual Basic Express por um tempo possvel que voc queira explorar seus arquivos de ajuda e ver sobre o que eles falam. Se o Visual Basic for uma novidade para voc, no entanto, voc provavelmente descobrir em breve que possuir uma ferramenta de programao no suficiente voc precisa de mais do que uma simples ferramenta para se comunicar com o computador.

  • Ento, hora de enfrentar a prxima parte do livro: aprender a se comunicar com o computador usando a linguagem de programao do Visual Basic.

  • Parte II Aprendendo a se Comunicar O principal problema enfrentado quando escrevemos programas de computao o fato de que o computador no foi "educado" da mesma forma que ns. Se isso tivesse acontecido, teramos uma compreenso semelhante do mundo, e tambm falaramos a mesma lngua.

    Isso tornaria muito simples a comunicao e o entendimento mtuo. Poderamos simplesmente escrever "computador, por favor, desenhe a figura de um gato" e isso funcionaria.

    Diante disso, voc dir: "Ento, ensine os computadores a nos entenderem." S que os computadores, construdos de forma muito diferente do crebro humano, tm uma viso das coisas radicalmente diferente e no fcil ensinar-lhes a pensar como ns pensamos.

    Computador: Eu no tenho a menor idia do que voc acabou de dizer.

    A soluo encontrar um meio-termo:

    uma "viso de mundo" comum e uma "linguagem" comum que tanto os seres humanos quanto os computadores compreendam.

    Esta parte do livro destina-se a ensinar como comunicar-se com o computador. Voc precisa adaptar um pouco sua forma de pensar para ver as coisas do ponto de vista do computador. um verdadeiro exerccio de intercmbio, pois o computador aprender uma srie de coisas do seu "mundo" (como algumas palavras em ingls), mas voc tambm precisar aprender algumas coisas do "mundo" dele. Tente entender o que se passa na "mente" do computador e imagine como voc gostaria que um ser humano explicasse o que deseja.

    Uma Viso Compartilhada do Mundo: O Aliengena, o Elefante e o Coqueiro

    Os computadores no tm como saber o que se passa em nossas mentes, o que esperamos que eles faam ou como devem faz-lo. Podemos sonhar com o dia em que olharemos na direo deles, levantaremos a sobrancelha e eles compreendero; mas, de volta ao mundo real, ainda precisamos descrever com muita clareza o que queremos dizer, e at mesmo como o computador deve agir para nos ajudar. Em resumo, h uma grande lacuna de comunicao entre seres humanos e mquinas. Se queremos que elas nos ajudem, precisamos preencher essa lacuna.

  • Agora, esquea um pouco os computadores e, em vez disso, imagine que voc precisa desesperadamente conversar com uma criatura aliengena. Veja como se passa essa histria...

    Por uma tremenda falta de sorte, aconteceu algo de muito errado com o universo e, por um motivo misterioso, voc e um estranho aliengena acabaram presos em uma pequena ilha deserta no meio do oceano. Depois de desistir de se apresentar dizendo "Oi, meu nome Sally, qual o seu?", voc decide simplesmente cham-lo de "Algy".

    Voc sente fome e observa alguns cocos no alto de um coqueiro. Ento, percebe que precisar da ajuda de Algy para peg-los e isso no vai funcionar, a no ser que os dois aprendam a se entender.

    Voc comea desenhando um coqueiro na areia e, apontando para ele, fala claramente a palavra "co-co". Voc se impressiona quando Algy prontamente responde "co-co"! Voc desenha mais figuras e, a cada vez, Algy responde perfeitamente. Voc descobriu que a criatura tem uma aptido natural para linguagens. Antes do anoitecer, Algy j aprendeu seu idioma.

  • Exultante com esse progresso, voc olha nos olhos de Algy. "Algy, por favor, levante-me nos seus ombros para que eu pegue os cocos e possa com-los".

    Ele dirige a voc um olhar vazio. Ele dirige figura do coqueiro um olhar vazio. Olha de novo para voc. Olha de novo para a figura. No tem jeito, ele no entendeu. Batendo na prpria cabea, voc percebe a tolice do seu erro e aponta impetuosamente para a rvore real. Mas, ainda assim, Algy no entende. Na verdade, voc descobre que ele s bom com figuras. Aaaargh! Lentamente, voc comea a perceber que, embora ele seja capaz de usar seu idioma, no tem NENHUMA compreenso dos objetos reais sobre os quais voc est falando.

    De alguma forma, voc precisa fazer a traduo entre a "viso de mundo" dele e a sua. Sem problemas, voc pensa, "eu ensinei a ele um idioma e posso ensinar sobre os objetos do mundo real". Trs dias depois, os cocos continuam no mesmo lugar. As lies no vo bem e voc comea a perder o controle, assim como a conscincia.

    Voc no tem certeza se est sonhando, tendo alucinaes ou uma viso, mas surge uma apario vestida de branco, em meio a uma luz brilhante e enevoada. "Eis uma tima forma de ver o mundo ao seu redor", exclama uma voz. "Uma viso que tanto voc quanto Zniff12 podem entender." (Voc imagina que esse seja o nome verdadeiro de Algy.) Voc perde totalmente a noo do tempo enquanto imagens penetram magicamente em sua mente,

  • ensinando-lhe essa forma de descrever o mundo. Por fim, com a expresso tranqila, voc emerge desse estado atemporal.

    Saindo da viso, voc agarra Algy pelos ombros e diz: "J entendi, amigo, oua com ateno o que vou dizer." Algy franze a testa enquanto voc fala.

    o "O mundo que nos cerca tem diversas classes de coisas plantas, animais, seres humanos famintos, aliengenas etc."

    o "Agora, meu nico interesse conversar com voc sobre os objetos reais nesta ilha. Especialmente, caso voc ainda no tenha percebido, tenho grande interesse no coqueiro (que, por sinal, est na classe chamada "plantas"). Tambm tenho interesse naquele elefante ali. estranho, mas s reparei nele agora." (Voc aponta para cada um desses elementos enquanto fala.)

    o "O elefante est na classe chamada "animais" e tem algumas propriedades importantes para ns, Algy. Primeiro, todos os animais podem se mover. Segundo, o elefante um animal realmente pesado imagino que tenha umas duas toneladas e isso ser til. Terceiro, ele est mal-humorado, e isso tambm ser til.

    o "Certo, Algy, continue prestando ateno... No mundo que nos cerca, ocorrem eventos o tempo todo. Eu sinto fome isso um evento. Os cocos amadurecem isso um evento. s vezes, ns mesmos podemos disparar um evento, a fim de ocasionar alguma ao. Tenho uma tima idia: vamos disparar um evento de "perturbao do elefante" para que ele nos ajude na ao de "derrubar os cocos"."

    o "Vamos dividir o trabalho. Eu me encarrego de disparar o evento (vou perturbar o elefante para que ele olhe para voc) e voc faz com que ele derrube os cocos, certo?" Diante disso, Algy olha para voc envergonhado e admite: "Sally, eu ouo o que voc est pedindo, mas no sei como fazer isso." Voc responde, dando um tapinha nas costas dele: "Algy, no se preocupe. Nunca pedirei a voc que faa alguma coisa sem primeiro explicar o mtodo para fazer." Eis aqui as etapas a serem realizadas quando eu incomodar o elefante e disser a voc para "derrubar os cocos":

    Saia de trs desta rocha e fique de p junto rvore. O elefante atacar voc imediatamente. Precisamente quando ele alcanar a linha que desenhei na areia, corra para salvar sua vida (v para o lado, pois para a frente ou para trs no seria uma boa idia). Ele acertar a rvore e ficar atordoado por alguns instantes, mas a fora derrubar os cocos e poderemos recolh-los mais tarde. Por fim, volte ao ponto onde comeamos e informe como nos samos.

  • Algy faz uma longa pausa, aparentemente assimilando sua lio. Depois, inesperadamente surge com um aparelho avanado de comunicao. Ele fala no aparelho por alguns instantes, em uma voz que soa como um modem, depois o guarda novamente na bolsa. "O que foi tudo isso, Algy?", voc pergunta. Algy responde: "Deixe-me traduzir, Sally...

    o Existe uma classe de objetos chamada X-Zniffers. o Eu sou um objeto dessa classe, mas existem outros. o Todos os objetos nessa classe tm as propriedades: nome (o meu, por exemplo, Zniff12) formatoOrelha (que sempre parece ter o valor "tubo") gostaDeAssistirTv (que verdadeira na maioria dos casos, mas falsa em outros)

    A verdade que o meu pouso aqui no foi acidental. Voc est em um programa de TV muito popular chamado "Sobrevivente". Mas acabo de ligar para o meu produtor e de dizer a ele que no ganho o suficiente para isto. Ele vai executar o mtodo EnviarEmbarcaoResgate imediatamente."

    Certo, agora voc j percebeu que eu contei uma histria um tanto inverossmil. Mas o importante que voc e Algy desenvolveram uma forma comum de descrever o mundo os dois usam os mesmos termos e tm a mesma compreenso do que significam. Isso, alm do fato de compartilharem a mesma linguagem, permite que se comuniquem.

    Os Computadores So Como Aliengenas

    Imagine agora que, em vez de tentar explicar coisas ao aliengena, voc precise explic-las a um computador. Voc ter uma experincia parecida com a descrita anteriormente. E conseguir resolver o problema de forma semelhante chegando a um acordo quanto a uma forma comum de ver o mundo, que tanto seres humanos quanto mquinas entendam.

    Em primeiro lugar, deve ficar claro que a abordagem usando "classes, objetos, propriedades, eventos e mtodos" descrita na histria no uma verdade perfeita e inaltervel. apenas uma forma que escolhemos para explicar o mundo que nos cerca a uma criatura alheia a ele. O mais importante que vocs dois concordem em descrever o mundo da mesma maneira. Mas essa maneira de ver o mundo, que, por sinal, chamada de abordagem "orientada a objeto", tornou-se muito popular como uma forma de descrever as coisas para os computadores. E, na verdade, o Visual Basic insiste que voc use a abordagem orientada a objeto.

    Ento, aprender Visual Basic envolve o aprendizado de como descrever coisas usando classes, objetos, eventos, mtodos etc.

    Para que o computador o ajude a fazer coisas teis:

    Voc (o ser humano) aprende a linguagem Visual Basic e como descrever as coisas de forma orientada a objeto.

  • Voc instala o software do Visual Basic e alguns outros produtos de software relacionados agora o computador tambm entende a linguagem Visual Basic e como trabalhar com os elementos descritos de forma orientada a objeto.

    E a est. Voc e o computador compartilham uma viso de mundo, assim como uma linguagem, e em breve se comunicaro como velhos amigos.

    Um Resumo da Abordagem Orientada a Objeto

    Vamos explicar claramente o que queremos dizer com orientao a objeto, na viso de um programador.

    O mundo que nos cerca pode ser dividido em diversas classes de coisas, como "gatos", "casas" ou "rvores". Essas classes podem ser entendidas como categorias ou rtulos para agrupar elementos semelhantes. Precisamos de uma maneira de descrever essas classes para o computador, de forma que ele possa solucionar problemas relacionados a elas.

    Em cada classe de coisas h alguns objetos especficos nos quais estamos interessados. Por exemplo, na classe "gato", h o meu gato, Fluffy, que um objeto dessa classe. Da mesma forma, a casa rosa na esquina da minha rua um objeto da classe "casa", e o carvalho em frente janela do meu quarto um objeto da classe "rvore". Quando queremos que o computador trabalhe com um objeto especfico, precisamos escrever uma descrio para o computador que represente aquele objeto.

    Os objetos tm uma grande variedade de propriedades. As propriedades so os elementos que descrevem os objetos com mais clareza. Lembre-se das suas aulas de portugus: as propriedades so como os adjetivos na lngua portuguesa. Por exemplo, o meu gato Fluffy pode ser descrito com propriedades como tamanho, peso, cor etc.

    Os eventos so as coisas que acontecem com um objeto. No mundo real, ocorrem eventos ao nosso redor o tempo todo. Por exemplo, quando brinco com meu gato Fluffy, isso um evento que ocorre com Fluffy. Da mesma forma, o vento batendo nos galhos do carvalho em frente minha janela um evento que ocorre com a rvore. Geralmente, os eventos so aes que afetam o objeto especfico, mas sobre os quais o objeto no tem controle. No mundo do computador, os eventos so geralmente coisas como "um boto foi clicado" ou "o mouse foi movido".

    As aes so as coisas que um objeto faz. Por exemplo, meu gato Fluffy lambe o prprio plo isso uma ao. No mundo do computador, algumas vezes, quando ocorrem certos eventos interessantes, queremos disparar certas aes, como "quando este boto for clicado, desenhe a figura de um gato".

    Acredite se quiser, mas os computadores so realmente tolos. Um computador no tem idia de como desenhar um gato. Ento, precisamos escrever, de forma que o computador entenda, o mtodo para desenhar um gato. um conjunto de instrues passo a passo que dizem ao computador como fazer isso, como em uma receita.

    Nos prximos captulos, explicaremos em mais detalhes cada um desses aspectos da programao orientada a objeto. Tambm vamos mostrar como escrev-los na linguagem Visual Basic, para que o computador entenda o que estamos descrevendo.

    Classes

    Podemos optar por dividir o mundo que nos cerca em vrios grupos de coisas vamos cham-los de classes.

    Em um exemplo bvio, pense nas classes existentes na escola. As crianas de determinada idade podem ser agrupadas e colocadas em uma classe, ou talvez as crianas com uma habilidade especfica possam ser agrupadas em uma classe. Isso permite que todas sejam tratadas de forma semelhante. Elas aprendero o mesmo conjunto de coisas e sero testadas da mesma forma.

    Isso no significa que todos em uma classe so iguais apenas que tm algumas caractersticas em comum.

  • Em outro exemplo, poderamos agrupar todos os seres vivos em duas classes, chamadas "plantas" e "animais".

    Agora, vamos voltar a nos expressar de forma que o computador entenda o que estamos tentando dizer

    No Visual Basic, descrevemos assim uma classe para o computador:

    Class Animal End Class

    Apenas com esse pequeno trecho de cdigo, ele j sabe:

    que queremos falar sobre uma classe de coisas; que chamaremos essa classe de Animal; que tudo o que dissermos sobre essa classe ser escrito entre as instrues Class Animal End Class. Embora chamar sua classe de "Animal" certamente faa sentido em um programa que exibe figuras de animais ou armazena fatos sobre animais, tambm comum ter nomes de classes como "MyPhotoProgram" ou "MyGradeCalculator". Ento, procure perceber que as classes no trabalham necessariamente com elementos existentes no mundo real voc vai nomear sua classe de forma a descrever aquilo com que ela trabalha.

    Bloco de Construo: Classes

  • Todos os programas do Visual Basic so criados dentro de classes. A estrutura bsica de uma classe escrita para o computador da seguinte forma:

    Class Animal End Class

    A palavra "Class" conhecida pelo computador e deve ser escrita com "C" maisculo e as demais letras minsculas, mas o nome dado sua classe pode ser uma palavra escolhida por voc e pode ser escrito usando uma combinao de letras maisculas e minsculas. No pode conter elementos como espaos. Cada instruo do Visual Basic deve ser escrita em uma linha separada.

    Voc saber mais sobre o que acontece dentro da descrio da classe um pouco adiante. Primeiro, na prxima lio, vamos abordar os objetos.

    Objetos

    Em cada classe, h alguns objetos reais. Na classe de coisas chamada "Animal", por exemplo, h algumas criaturas especficas:

    o gato da sua tia, "Fiddlesticks"; uma vaca que voc viu no campo uma vez, mas no sabe qual o seu nome; um gorila chamado Jeremy; etc.

    Na lio anterior, voc aprendeu como comear a dizer ao computador coisas sobre a classe Animal em geral. Mas, em algum momento, voc provavelmente vai querer dizer a ele algo sobre um ou mais objetos especficos. Por exemplo, "h uma criatura especfica na classe de animais que chamo de FiddleSticks".

    Podemos expressar isso para o computador da seguinte forma:

    Dim fiddleSticks As Animal

    Isso to curto que voc precisa parar e pensar um pouco, para no perder a linha de raciocnio. O computador entende que isso significa: "Este ser humano quer falar sobre algo na classe Animal e quer cham-lo de "fiddleSticks". No tenho idia do que fiddleSticks significa, mas, se assim que o ser humano quer cham-lo, para mim est bem."

    No entanto, precisamos de mais uma instruo depois daquela:

    fiddleSticks = New Animal()

  • Pode parecer estranho que seja preciso fazer essas duas coisas. Mas, do ponto de vista do computador, faz sentido. Coloque-se "no lugar da mquina" e pense nisso da seguinte forma:

    A primeira instruo avisa ao computador que, em breve, vamos pedir a ele que trabalhe com um indivduo especfico na classe "Animal". O computador agora tem a chance de verificar se tem conhecimento da classe "Animal". Ele percorre todo o seu programa e verifica se voc descreveu em algum lugar uma classe chamada "Animal". Caso no a encontre, ele pode avis-lo, dizendo "ei, no poderei fazer isso". Se ele encontrar o que for necessrio, vai apenas prosseguir calmamente, lembrando-se do fato de que voc pedir a ele para fazer algo mais tarde com o Animal chamado fiddlesticks.

    Ento, em um momento posterior, acrescentamos a segunda instruo, que diz ao computador: "Ei, lembra-se do objeto fiddleSticks? Preciso que voc trabalhe com ele agora. Crie algum espao na sua mente para pensar nesse Animal." O computador imagina um novo objeto da classe "Animal" em sua mente e v que voc est falando sobre o mesmo (fiddlesticks) mencionado anteriormente. Como j leu a classe "Animal", ele j sabe de algumas caractersticas que devem ser verdadeiras sobre fiddleSticks e tem essas informaes prontas em sua mente, esperando que voc conte mais coisas ou faa perguntas sobre fiddlesticks.

    Vamos, agora, juntar as trs coisas e imaginar como o computador "pensa" nelas:

    Computador: Humm, voc disse que existem coisas no mundo que so similares o suficiente para serem agrupadas juntas dentro de uma classe chamada Animal

  • Computador: Voc disse que ns vamos trabalhar com um objeto do tipo Animal? Uuh... Espere um pouco... Yup, eu conheo sobre Animais. Me avise quando estiver pronto.

    Computador: Ok, eu lembro que voc disse que ns iramos falar sobre isto. Legal, eu estou imaginando um novo Animal na minha cabea. Ns vamos continuar chamando-o de Fiddlesticks pois assim voc e eu saberemos de que estamos falando do mesmo.

    Observe que, no primeiro bloco, descrevemos a classe de coisas em geral; j nos blocos 2 e 3, apontamos um objeto especfico na classe Animal.

    Bloco de Construo: Objetos

    Os objetos so elementos individuais especficos de uma classe. A classe apenas descreve "como so todos esses elementos" de forma geral. o plano bsico para criar um objeto.

    Class Animal End Class

    Se planejamos trabalhar com um objeto especfico, precisamos dizer ao computador (com antecedncia) a que classe ele pertence, para que o computador possa primeiro verificar se tem conhecimento dessa classe. Fazemos isso especificando a classe qual o objeto pertence e atribuindo ao objeto um nome nossa escolha.

    Nome do

    objeto

    Nome da

    classe

    Dim percyThePorcupine As Animal

    Isso se chama "declarar o objeto". Quando estivermos prontos para trabalhar efetivamente com o objeto, devemos pedir ao computador para "criar uma instncia" da classe. Ele, agora, utiliza seu conhecimento da classe para criar um objeto "real" com o qual pode trabalhar.

    percyThePorcupine = New Animal()

    Isso se chama "instanciar o objeto". Neste exemplo, "percyThePorcupine" agora uma instncia de "Animal". Outra forma de dizer isso que percyThePorcupine um "objeto" do tipo "Animal". De qualquer forma, agora sabemos claramente que estamos falando de um Animal especfico.

  • Agora, j sabemos como falar de um objeto especfico em uma classe. Mas, como a classe que definimos bastante simples (tudo bem, eu admito, est totalmente vazia), no h muitos elementos interessantes para se trabalhar. Ento, na prxima lio, vamos acrescentar algumas coisas nossa classe.

    Os Campos e Seus Tipos

    Se eu pedisse a voc para fazer uma lista com algumas propriedades dos animais, provavelmente voc apresentaria coisas assim:

    Tipo de animal Altura Comprimento Nmero de patas Cor Tem cauda um mamfero E, quando voc falar sobre um animal especfico, poder estud-lo e atribuir valores a cada uma de suas propriedades:

    Tipo de animal = "Gato" Altura = 50 cm ( um gato grande!) Comprimento = 80 cm Nmero de patas = 4 Cor = "Preto" Tem cauda = true um mamfero = true

    Tipo de animal = Gato Tem calda = verdadeiro

    Cor = preto No. de pernas = 4

    Altura = 50 Comprimento = 110

    No Visual Basic, essas propriedades so geralmente chamadas de campos (o termo "propriedades" usado para uma finalidade ligeiramente diferente, que no precisamos detalhar aqui).

  • Tipos

    Agora, vamos abordar algo com que no nos preocupamos muito no mundo real, mas que tem grande importncia para os computadores: embora todas as propriedades acima paream o mesmo tipo de coisa, na verdade existem diferentes tipos de campos. Vejamos alguns exemplos:

    Os valores acima para altura, largura e nmero de patas so nmeros geralmente elementos com os quais esperamos que o computador faa alguma operao matemtica. Esse o caso em muitas situaes.

    Macaco: 10 bananas / 2 pessoas = 5 para cada

    Nessa situao, voc poderia optar por usar trs campos com nomes como: "numberOfBananas", "numberOfPeople" e "numberEachOneGets". Como voc precisa calcular alguma coisa com uma diviso matemtica, deve torn-los tipos numricos.

    Macaco: Crocodilo! Eu disse C-R-O-C-O-D-I-L-O

    Contudo, importante observar que algumas cadeias de caracteres podem conter dgitos numricos tambm. Voc poderia, por exemplo, armazenar o seguinte em uma campo de cadeia de caracteres: "Este o 17o crocodilo que vejo hoje!", que contm letras do alfabeto, espaos, dgitos numricos e sinais de pontuao. Mas voc no pode realizar nenhuma operao matemtica com os nmeros contidos em uma cadeia de caracteres!

  • Um campo como Tem Cauda sempre ter como valor True ou False, assim como qualquer campo do tipo "sim ou no".

    Macaco filho: Papai, verdade que os macacos evoluram dos humanos? Macaco pai: Sim, meu filho. verdade.

    Os computadores trabalham com cada um desses diversos "tipos" de formas especiais, ento, quando definimos campos, espera-se que digamos qual o tipo de campo a ser usado. Em um programa, podemos dizer que nmero de patas deve ser tratado como uma cadeia de letras, porque no temos interesse em realizar nenhuma operao matemtica com essa propriedade; j em outra ocasio, podemos tratar esse campo como numrico, porque precisamos que o computador calcule quantas patas haver se houver 500 objetos do tipo animal.

    O Tipo String (Cadeia de Caracteres)

    A forma de dizer ao computador que voc quer que ele trate uma certa propriedade como uma cadeia de letras simples:

    Dim kindOfAnimal As String

    Nota do tradutor: por questes de compatibilidade com o documento original, alguns nomes de propriedades, classes, etc, continuaram em ingls (por exemplo, kindOfAnimal = tipoDoAnimal). Isto no impede de voc mais tarde alter-los para portugus.

    Ainda no colocamos nenhum valor nesse campo. Estamos apenas dizendo ao computador com que tipo de dados vamos trabalhar e atribuindo um nome ao campo. Ponha-se no lugar do computador e imagine como voc responderia se um ser humano escrevesse isso para voc.

  • Computador: Ah, uma propriedade string. Eu deixarei voc armazenar coisas como gato ou a rvore de seringueira nesta propriedade

    Tipos Numricos

    Para dizer ao computador que deve tratar um campo como um nmero, voc pode especificar um dos vrios tipos numricos conhecidos pelo Visual Basic. Um dos tipos numricos mais comuns Integer. Lembre-se das suas aulas de matemtica: Integer , na verdade, um nmero inteiro, e pode ser negativo, positivo ou zero.

    Uma forma simples de expressar para o computador o fato de que voc quer que um campo seja do tipo Integer a seguinte:

    Dim numberOfLegs As Integer

    E o nosso amigo digital pensar o seguinte...

    Computador: Eu deixarei voc colocar valores como 4, -24000 e 0 nesta propriedade. E devido a voc ter escolhido um tipo numrico, voc poder dividir coisas, multiplicar e muito mais

  • O Tipo Booleano

    Se voc sabe que alguma coisa ser sempre "true" (verdadeiro) ou "false" (falso) e nunca ter outro valor, til usar o tipo True/False do Visual Basic. Esse tipo tem um nome estranho, "booleano", em homenagem a um matemtico chamado George Bool, mas na verdade o mais simples de todos.

    Voc pode dizer ao computador para que ele trabalhe com um campo chamado "hasTail" como um tipo "True/False" da seguinte forma:

    Dim hasTail As Boolean

    E a mquina pensar...

    Computador: As nicas coisas que eu posso deixar voc colocar em uma propriedade booleana so os valores True (verdadeiro) e False (falso)

    Como Usar Campos

    Ento, os campos so as informaes que nos permitem descrever melhor os elementos em uma classe. E os campos so sempre de um tipo especfico.

    Adicionando Campos Classe

    Tudo o que dissemos anteriormente ao computador sobre "animais" em geral que os chamamos de "Animal". Prometemos que depois acrescentaramos mais informaes sobre os "animais" entre Class Animal End Class.

    Class Animal ... End Class

    Bem, agora estamos prontos para fazer isso. Vamos acrescentar alguns campos nossa definio da classe:

    Class Animal Dim kindOfAnimal As String Dim name As String Dim numberOfLegs As Integer Dim height As Integer Dim length As Integer Dim color As String Dim hasTail As Boolean Dim isMammal As Boolean Dim spellingCorrect As Boolean

  • End Class

    Para manter seu cdigo claro e legvel, comum o uso de recuos nos campos, conforme mostrado acima. Para fazer isso, pressione a tecla TAB no teclado. Voc tambm pode selecionar algumas linhas e aplicar um recuo a todas elas pressionando uma vez a tecla TAB.

    Usando Campos com Objetos Especficos

    Certo, ento j explicamos ao computador que TODOS os animais tm esses campos. Agora, vamos pedir-lhe que crie uma instncia representando um animal especfico (como fizemos no captulo anterior) e depois dizer ao computador algumas coisas sobre esse animal especfico, atribuindo valores a cada campo.

    Dim fiddlesticks As Animal fiddlesticks = New Animal() fiddlesticks.kindOfAnimal = "Cat" fiddlesticks.name = "Fiddlesticks The Cat" fiddlesticks.numberOfLegs = 4 fiddlesticks.height = 50 fiddlesticks.length = 80 fiddlesticks.color = "Black" fiddlesticks.hasTail = True fiddlesticks.isMammal = True

    Observe que, nos campos de cadeia de caracteres, sempre colocamos o valor entre aspas (""), mas no nos outros tipos.

    Neste ponto, convm lembrar a voc que o nome do objeto que escolhemos, "fiddlesticks", no tem valor sentimental para o computador. Ele trabalhar com esse objeto exatamente da mesma forma se substituirmos todos os nomes "fiddlesticks" pelo nome "X", ou por qualquer outro nome sua escolha:

    Dim X As Animal X = New Animal() X.kindOfAnimal = "Cat" X.height = 50 X.length = 80 X.color = "Black" X.hasTail = True X.isMammal = True

    Bloco de Construo: Campos

    Uma classe normalmente tem um ou mais campos, que nos permitem descrever os detalhes dos elementos contidos na classe.

    Class SchoolKid Dim firstName As String Dim lastname As String Dim age As Integer Dim isWideAwake As Boolean End Class

    Embora os campos possam ser escritos junto margem, uma prtica recomendada recu-los um espao de tabulao para a direita, pressionando a tecla TAB do teclado. Isso torna o cdigo mais fcil de ler. Esses campos so sempre de um tipo especfico. H muitos tipos de campos diferentes, mas eis alguns muito comuns:

    Tipo O que significa Exemplos de valores String Contm, principalmente, elementos como palavras

    e frases, que so formados pelo "encadeamento" de letras do alfabeto e alguns outros smbolos.

    "Sam" "Polvo com oito tentculos" "As meninas so espertas demais para cair do carrinho"

  • Inteiro uma espcie de nmero inteiro. 328 28000 -520

    Boolean Significa "verdadeiro ou falso". True False

    Quando voc define um campo em um programa, precisa inserir um tipo e um nome para o campo:

    Dim lastname As String

    O tipo deve ser digitado exatamente como o computador o conhece. O nome do campo uma palavra sua escolha, como "isWideAwake", e pode ser escrito com letras maisculas e minsculas. No so permitidos elementos como espaos. Quando voc trabalha com um objeto especfico, normalmente atribui valores aos campos, o que ajuda a descrever o objeto. Se temos, por exemplo, um objeto de nome schoolKid, podemos atribuir a seus campos os seguintes valores:

    SchoolKid.firstName = "Jiminy" SchoolKid.age = 13

    Separamos o nome do objeto e o nome do campo com um ponto ".". Ento, SchoolKid.firstName = "Jiminy" significa "coloque o valor "Jiminy" no campo firstName do objeto schoolKid".

    Campos Particulares, Protegidos e Pblicos

    Este tpico no ser to importante enquanto voc estiver aprendendo as noes bsicas do Visual Basic, mas voc poder se deparar mais tarde com as palavras "particular", "protegido" e "pblico" e se perguntar o que significam. Ento, vamos falar sobre elas.

    Class Animal Dim kindOfAnimal As String Dim name As String Dim numberOfLegs As Integer Dim height As Integer Dim length As Integer Dim color As String Dim hasTail As Boolean Dim isMammal As Boolean Dim spellingCorrect As Boolean End Class Class MyTestClass End Class

    possvel fazer com que elementos de uma classe, como MyTestClass acima, tratem de elementos de outra classe, como Animal.

    Quando os campos so declarados da forma mostrada acima, podemos decidir se queremos ou no permitir que outras classes tenham acesso a eles. Algumas vezes, realmente importante tornar os campos "particulares" porque, por exemplo, outra classe poderia colocar neles valores indesejveis e interromper o programa. Definir um campo em algum ponto no intervalo entre particular e pblico tem relao com o nvel de segurana necessrio nossa classe.

  • Dentro da casa = Privado Dentro do quintal = Protegido

    Calada = Pblico

    Observe os diferentes nveis de proteo das crianas na famlia retratada acima. Sally, o beb, mantida em um ambiente particular, Private ela no tem permisso para sair da casa e conta com o mais alto nvel de segurana. Somente as pessoas mais confiveis podem interagir com ela. Billy tem a liberdade de ir ao quintal, mas ainda est protegido, Protected. Tom, o mais velho, pode ir ao espao pblico, Public, e qualquer pessoa do lado de fora pode interagir com ele da forma que escolher.

    Podemos, ento, acrescentar uma palavra ao incio das declaraes de campos, da seguinte forma:

    Class Animal Public kindOfAnimal As String Public name As String Public numberOfLegs As Integer Public height As Integer Public length As Integer Public color As String Dim hasTail As Boolean Protected isMammal As Boolean Private spellingCorrect As Boolean End Class

    Voc deve estar imaginando o que acontece se deixarmos de fora essas palavras. A resposta que o computador trata silenciosamente esses campos como se voc tivesse escrito "Private" na frente deles, pois essa a configurao padro. Ento, o campo hasTail acima se tornar automaticamente Private.

    O que essas palavras significam?

    Private significa que "somente elementos desta classe podem acessar este campo". Public significa que "qualquer classe pode acessar este campo". Protected significa que "somente classes diretamente relacionadas podem acessar este campo". As duas classes a seguir ilustram como Public e Private funcionam na prtica. No vamos discutir mais o termo Protected, mas voc poder ler sobre isso na ajuda do Visual Basic Express, se tiver curiosidade.

  • Primeiro definimos, como fizemos antes, alguns campos particulares e pblicos na classe "Animal", e ento tentamos acess-la a partir da classe "Zoo".

    Class Animal Public kindOfAnimal As String Public name As String Public numberOfLegs As Integer Public height As Integer Public length As Integer Public color As String Dim hasTail As Boolean Protected isMammal As Boolean Private spellingCorrect As Boolean End Class Class Zoo Dim a As Animal = New Animal() ' A linha seguinte ser bem sucedida porque a classe "Zoo" est autorizada ' a usar campos pblicos na classe "Animal" a.kindOfAnimal = "Kangaroo" ' As linhas seguintes iro FALHAR porque a classe "Zoo" no est autorizada ' a usar campos privados ou protegidos a.isMammal = False ' Tenta acessar um mtodo protegido a.spellingCorrect = True ' Tenta acessar um mtodo privado End Class

    Mtodos

    Os programas seriam praticamente inteis se nos permitissem somente descrever objetos. Logicamente, tambm queremos que eles "faam coisas":

    escrever na tela; calcular a resposta para um problema; copiar dados de um site; clarear uma fotografia; e milhares de outras coisas. Agora, lembre-se de quando sua professora lhe ensinou a somar nmeros. O mais provvel que tenha ensinado primeiro COMO somar os nmeros provavelmente mostrando algumas etapas que voc deveria seguir. Em outras palavras, primeiro voc aprendeu o MTODO para resolver esse tipo de problema. Um mtodo um conjunto de instrues passo a passo explicando como fazer alguma coisa.

  • Professora: Mtodo para adicionar 2 nmeros: 1.Escreva o primeiro

    Quando voc tiver um mtodo para resolver os problemas de um tipo especfico, ser capaz de resolver qualquer problema daquele tipo seguindo as etapas do mtodo.

    Professora: Agora use o mtodo para adicionar os seguintes nmeros...

    Da mesma forma, se quisermos que o computador faa coisas, precisamos primeiro escrever o cdigo para dizer a ele como fazer ou seja, precisamos descrever o mtodo que ele deve usar para realizar essas coisas. Ele poder, ento, usar esse mtodo sempre que apresentarmos um problema do mesmo tipo.

    No Visual Basic, um mtodo um trecho de cdigo que descreve para o computador a forma de realizao de uma tarefa. Mais tarde, quando chamarmos esse mtodo, o computador percorrer o cdigo, fazendo exatamente o que escrevemos.

    Podemos descrever para o computador um mtodo simples da seguinte forma:

    Sub SayHello() End Sub

    Mas um mtodo fica sem sentido se no faz nada. Ento, vamos acrescentar mais cdigo ao mtodo, para que ele possa fazer alguma coisa.

    Sub SayHello() Console.WriteLine("Hello") End Sub

    Para maior clareza, voc deve recuar o cdigo de um mtodo um espao de tabulao para a direita, pressionando a tecla TAB.

    Se chamssemos esse mtodo agora, ele escreveria na tela a palavra "Hello". No um problema muito difcil, ento o mtodo bem simples.

    O Que Significa Sub?

  • Talvez voc esteja confuso com uma palavra estranha, "Sub", que aparece no exemplo acima, e esteja imaginando por que ela foi escrita. Ento, vamos examinar rapidamente essa palavra. Quando usamos Sub, isso significa que, quando a execuo do mtodo termina, ele retorna um valor "nada" ou seja, nada mesmo! Isso no significa que o mtodo no faz nada, mas sim que, depois de concluir o que precisa fazer, ele no retorna "nada". Isso se ajusta bem ao nosso mtodo SayHello acima porque, depois de escrever a palavra "hello", ele no precisa retornar nada. J fez tudo o que precisvamos que ele fizesse.

    Isso far mais sentido quando abordarmos alguns casos nos quais vamos querer que um mtodo retorne alguma coisa, um pouco mais adiante em nossa jornada.

    Chamando um Mtodo

    Ao escrever o cdigo acima, ensinamos ao computador COMO escrever "hello" na tela, mas ainda no lhe dissemos para fazer isso.

    como sua professora, quando mostrou como somar nmeros e fez com que voc anotasse o mtodo, mas no pediu que voc fizesse uma soma especfica.

    Para que o computador execute a ao, precisamos chamar o mtodo. Algumas vezes, isso feito simplesmente escrevendo o nome do mtodo seguido por parnteses, desta forma:

    SayHello()

    Quando o computador se depara com essa linha, ele no sabe como lidar com o comando, ento procura rapidamente um mtodo escrito por voc, chamado "SayHello". Ele o encontra e logo percorre cada linha do mtodo, fazendo exatamente o que voc escreveu.

    Depois volta e, cheio de orgulho, diz: "Veja s o que eu fiz!", e fica com todo o crdito.

    Bloco de Construo: Declarando e Chamando um Mtodo

    Geralmente, uma classe tem um ou mais mtodos. Eles fazem alguma coisa, ou seja, executam alguma ao. So chamados de mtodos porque, neles, ns descrevemos para o computador o mtodo para fazer alguma coisa: as instrues passo a passo explicando como fazer algo.

    Class Person ' Campos Public firstName As String Public lastName As String ' Um mtodo Public Sub ShowFullName() Console.WriteLine("Name is " & Me.firstName & " " & Me.lastName) End Sub End Class

    Um smbolo de E comercial, "&", uma forma de acrescentar cadeias de caracteres, uma no final da outra. Lembre-se tambm de que precisamos de aspas "" em torno de caracteres de texto, mas no de variveis. A aspa simples ' uma forma de dizer ao computador para ignorar tudo o que h na linha. usada para inserir no cdigo comentrios e observaes a serem lidos por seres humanos. A palavra "Me" se refere a "este objeto do qual estou falando". Ento, "Me.firstName" se refere ao campo firstName do objeto atual (que "Jiminy" no exemplo a seguir). Um mtodo posto em ao quando voc escreve o nome do mtodo, incluindo parnteses, em alguma parte do seu programa.

    Dim Jiminy As Person Jiminy = New Person() Jiminy.firstName = "Jiminy" Jiminy.lastName = "Cricket" Jiminy.ShowFullName()

  • Quando a linha ShowFullName encontrada, o computador volta e encontra o mtodo com o nome especificado, percorrendo passo a passo o cdigo escrito nele.

    Mais Informaes Sobre Mtodos

    No captulo anterior, apresentamos os mtodos, mas h muitas outras informaes sobre eles que no abordamos. Este captulo trata de alguns dos aspectos mais avanados dos mtodos. No incio, voc poder prosseguir sabendo apenas o bsico. Mas, em alguma etapa, precisar entender recursos como o envio de valores para um mtodo e a obteno de valores de um mtodo.

    Parmetros

    Vamos imaginar que voc tenha pressa em fazer com que o computador escreva o seguinte na tela:

    Hello Jo Hello Sam Hello You

    Eis aqui uma forma de fazer isso Poderamos escrever um mtodo separado para cada situao:

    Sub WriteHelloJo() Console.WriteLine("Hello Jo") End Sub Sub WriteHelloSam() Console.WriteLine("Hello Sam") End Sub Sub WriteHelloYou() Console.WriteLine("Hello You") End Sub

    E depois chamar os mtodos assim:

    WriteHelloJo() WriteHelloSam() WriteHelloYou()

    Mas isso parece um desperdcio de energia, afinal os trs mtodos so quase iguais. E se pudssemos usar um s mtodo WriteHello e, sempre que o chamssemos, informssemos a parte que deveria ser diferente?

    Isso pode ser feito escrevendo o mtodo da seguinte forma:

    Sub WriteHello(ByVal someName As String) Console.WriteLine("Hello " & someName) End Sub

    E chamando-o assim:

    WriteHello("Jo") WriteHello("Sam") WriteHello("You")

    Como voc pode ver, isso economiza espao e esforo. Tente sempre escrever o mnimo possvel de cdigo. Em geral, quanto menor o programa, mais inteligente o programador.

  • Quando escrevemos o mtodo desta nova forma, mais inteligente:

    Sub WriteHello(ByVal someName As String) Console.WriteLine("Hello " & someName) End Sub

    Na verdade, estamos dizendo: "Sempre que eu chamar este mtodo, transmitirei a ele uma cadeia de letras contendo um nome. Seja o que for que eu transmitir, quero que voc escreva depois da palavra Hello."

    O elemento entre parnteses (ByVal someName As String) chamado de parmetro. Ele permite que voc transmita um valor para o mtodo ao cham-lo.

    Afinal, quando sua professora lhe ensinou a somar, no ensinou todas as possibilidades existentes, mas sim um mtodo, e depois apresentou uma srie de problemas diferentes: "Some 2 e 5. Agora, some 7 e 3." como se ela tivesse apresentado a voc um mtodo chamado AddNumbers e transmitido diferentes parmetros para cada operao. Quaisquer que fossem os parmetros que ela transmitisse, voc conseguiria calcular a resposta, porque conhecia o mtodo.

    Para o computador, o nome que voc atribui a um parmetro no tem a menor importncia mas ele muito meticuloso quanto ao uso do mesmo nome em todo o mtodo. Isto, por exemplo, funcionar corretamente:

    Sub WriteHello(ByVal x As String) Console.WriteLine("Hello " & x) End Sub

    J isto, no:

    Sub WriteHello(ByVal someName As String) Console.WriteLine("Hello " & someBodysName) End Sub

    Consegue perceber o erro? "someName" e "someBodysName" so diferentes, o que confundir nosso amigo binrio e o deixar bastante irritado.

    Tambm permitido ter mais de um parmetro em um mtodo; voc s precisa separ-los com vrgulas:

    Sub WriteHello(ByVal firstName As String, ByVal lastName As String) Console.WriteLine("Hello " & firstName & " " & lastName) End Sub

    Mas, ento, voc precisar transmitir o nmero certo de valores quando chamar o mtodo:

    WriteHello("Jiminy", "Cricket")

  • Isso, logicamente, escrever na tela "Hello Jiminy Cricket".

    Enviando Tipos Errados de Parmetros

    Suponha que, na poca em que voc aprendeu a somar, a sua professora tivesse apresentado a voc o seguinte problema: "Some os nmeros 5 e flor."

    Como voc teria respondido? Provavelmente assim: "Flor no um nmero! No possvel somar essas duas coisas." isso mesmo.

    Da mesma forma, o computador se queixar se voc enviar um valor do tipo errado. Esse um erro comum de programao. Ento, se as coisas no esto funcionando como voc esperava, verifique se enviou valores de tipos correspondentes queles definidos no mtodo.

    Bloco de Construo: Parmetros

    Se quisermos transmitir valores especficos para um mtodo, devemos definir os parmetros no mtodo:

    Class Person ' Campos Dim firstName As String Dim lastName As String ' Mtodo Public Sub LuckyNumber(ByVal numberOfTeeth As Integer, ByVal age As Integer) Console.WriteLine("Lucky number is " & numberOfTeeth * age) End Sub End Class

    Depois, sempre que chamarmos o mtodo, devemos verificar se transmitimos valores do tipo certo nesses parmetros. No exemplo a seguir, transmitimos dois nmeros inteiros, pois os parmetros para o mtodo "LuckyNumber" foram definidos como nmeros inteiros.

    Dim jiminy As Person jiminy = New Person() jiminy.LuckyNumber(24, 14)

    Mtodos Que Retornam Valores

    Os mtodos que mostramos at aqui apenas escreviam algo na tela e, depois, simplesmente devolviam o controle linha que os chamou: "J fiz minha parte. Agora com voc." S que, algumas vezes, queremos que o mtodo retorne algum valor til linha de cdigo que o chamou.

    Eis aqui um exemplo. Vamos escrever um mtodo que pesquisa quantas patas tem um animal especfico e, depois, retorna esse nmero ao recurso que o chamou.

    Veja a seguir como poderamos escrever o mtodo. Lembre-se de que, nesta etapa, ensinamos ao computador COMO fazer alguma coisa. Primeiro, escreverei em portugus o que quero que o computador faa. Depois, escreverei a mesma coisa em Visual Basic:

    Se o animal sobre o qual estamos falando se chama "elephant", ento Number of Legs = 4. Caso contrrio, se o animal sobre o qual estamos falando se chama "turkey", ento Number of Legs = 2. Caso contrrio, se o animal sobre o qual estamos falando se chama "oyster", ento Number of Legs = 1. Caso contrrio, para animais com qualquer outro nome, Number of Legs = 0. Function NumberOfLegs(ByVal animalName As String) As Integer

  • If animalName = "elephant" Then ' Se o nome do animal for igual a "elefante" ' Envia de volta o valor 4 Return 4 ElseIf animalName = "turkey" Then ' Caso contrrio, se for igual a "peru" ' Envia de volta o valor 2 Return 2 ElseIf animalName = "oyster" Then ' Caso contrrio, se for igual a "ostra" ' Envia de volta o valor 1 Return 1 Else ' Caso contrrio (sob todas as outras condies) ' Envia de volta o valor 0 Return 0 End If End Function

    E, ento, chamamos o mtodo. Vamos cham-lo duas vezes:

    1. Dim i As Integer ' Cria uma varivel "i" do tipo Inteiro ' para armazenar o valor do Nmero de Pernas 2. i = NumberOfLegs("turkey") ' Agora i = 2 obtido do mtodo NumberOfLegs acima 3. Console.WriteLine("The turkey has " & i & " legs") 4. i = NumberOfLegs("monkey") ' Agora i = 0 obtido do mtodo NumberOfLegs acima 5. Console.WriteLine("The ape has " & i & " legs")

    A linha 3 escrever "The turkey has 2 legs" e a linha 5 escrever "The ape has 0 legs". Ento, o mtodo transmitir de volta um valor, e esse valor retornado poder ser inserido diretamente na linha de cdigo que chamou o mtodo.

    Por que definimos o mtodo assim?

    Function NumberOfLegs(ByVal animalName As String) As Integer ... End Function

    Em vez de defini-lo assim:

    Sub NumberOfLegs(ByVal animalName As String) ... End Sub

    Ou assim:

    Private Function NumberOfLegs(ByVal animalName As String) As String ... End Function

    Logicamente, fizemos isso porque queramos que o mtodo retornasse um nmero inteiro nesse caso, e no um valor "nada", nem uma cadeia de letras. E um tipo de dados para trabalhar com nmeros inteiros "Integer".

    Quando escrevemos um mtodo, sempre especificamos o tipo de dados a ser retornado por ele. Se no precisamos que ele retorne nada, usamos Sub para especificar que ele no retornar "nada".

    Sub JustWriteSomething(ByVal someThing As String) Console.WriteLine(someThing) End Sub

    Por fim, provavelmente voc j descobriu que a palavra "Return" a parte que efetivamente retorna um valor. Assim que o computador encontra a palavra "Return", ele sai do mtodo e retorna o que tiver sido solicitado.

    Bloco de Construo: Valores de Retorno

    Algumas vezes, queremos que um mtodo transmita de volta um valor. Nesse caso, em vez de tornar o mtodo um "Sub", o

  • que significa que "nada ser enviado de volta", usamos uma funo e definimos o tipo de dados especfico que o mtodo deve retornar.

    Class Person ' Campos Dim firstName As String Dim lastName As String ' Mtodo Function LuckyNumber(ByVal numberOfTeeth As Integer, ByVal age As Integer) As Integer Return (numberOfTeeth * age) End Function End Class

    O valor retornado estar disponvel automaticamente sempre que chamarmos o mtodo. Poderamos, por exemplo, usar o valor retornado de uma destas formas: Poderamos, primeiro, armazenar a resposta em uma varivel e, depois, usar o valor da varivel em uma instruo separada.

    Dim Susy As Person Susy = New Person() Dim num As Integer = Susy.LuckyNumber(24,14) Console.WriteLine("Susy's lucky number is " & num)

    Ou ento poderamos chamar o mtodo diretamente na nossa instruo WriteLine, da seguinte forma:

    Console.WriteLine("Susys lucky number is " & Susy.LuckyNumber(24, 14))

    Mtodos Pblicos, Particulares e Protegidos

    Assim como ocorre com os campos (consulte o captulo anterior), os mtodos podem ser chamados a partir de outras classes. Podemos querer permitir ou impedir isso.

    Por padro, todos os mtodos sero tratados como "Private", o que significa que s podem ser usados dentro da prpria classe. Se voc quiser permitir que outras classes tambm possam cham-los, deve adicionar uma palavra como "Public" no incio da declarao.

    Public Sub JustWriteSomething(ByVal someThing As String) Console.WriteLine(someThing) End Sub

  • Algumas reas no mundo real so "restritas", a no ser que voc tenha uma autorizao especial. Por exemplo, nos restaurantes, onde apenas os chefs, os garons e as garonetes podem entrar na cozinha, que uma rea "particular". J o salo de jantar uma rea "pblica", qual todos tm acesso. De forma semelhante, o cdigo pode ser restrito para outras classes.

    Em uma seo anterior, apresentamos um exemplo com campos Private e Public. Vamos ampliar o exemplo e incluir alguns mtodos Private e Public na classe "Animal", e ento tentar acess-la a partir da classe "Zoo".

    Class Animal Public kindOfAnimal As String Public name As String Public numberOfLegs As Integer Public height As Integer Public length As Integer Public color As String Dim hasTail As Boolean Protected isMammal As Boolean Private spellingCorrect As Boolean ' Mtodo pblico que recupera informao sobre a comida que o animal come Public Function GetFoodInfo() As String ' Imagine que aqui ns tivessemos algum cdigo que pesquisasse em um banco de dados ... End Function ' Mtodo privado para verificar se o tipo do animal foi escrito corretamente Private Sub CheckSpelling() ' Imagine que aqui ns tivessemos algum cdigo de verificao de escrita ... End Sub ' Mtodo protegido que decide se o tipo do animal vlido Protected Function IsValidAnimalType() As Boolean ' Imagine que aqui ns tivessemos algum cdigo que testasse se os tipos de animais so vlidos ... End Sub ... End Class Class Zoo Dim a As Animal = New Animal() a.name = "Kangaroo" Dim food As String Dim animalExists As Boolean ' A linha seguinte ser bem sucedida porque a classe "Zoo" est autorizada

  • ' a usar campos pblicos na classe "Animal" classfood = a.GetFoodInfo() ' Chama um mtodo pblico ' As linhas seguintes iro FALHAR porque a classe "Zoo" no est autorizada ' a usar campos privados ou protegidos a.CheckSpelling() ' Tenta acessar um mtodo privado animalExists = a.IsValidAnimalType() ' Tenta acessar um mtodo protegido End Class

    Mtodos de Construo

    Freqentemente, voc ver classes escritas de forma a incluir um tipo de mtodo especial, chamado de "construtor". O nome de um mtodo construtor sempre New e no h nenhum tipo de retorno includo.

    Ele chamado de mtodo construtor porque ajuda a "construir" ou criar o objeto pela primeira vez. uma prtica recomendada escrever um mtodo construtor nas suas classes.

    Class Person ' Campos Dim firstName As String Dim lastName As String ' Mtodo construtor para a classe Pessoa Public Sub New() firstName = "Johnny" lastName = "Rocket" End Sub End Class

    Um mtodo construtor tratado de forma especial ele executado automaticamente sempre que uma instncia da classe criada.

    Lembrete: Com "uma instncia da classe", queremos dizer um objeto especfico da classe. Por exemplo, na seo anterior sobre "objetos", destacamos "Jeremy the Gorilla" como um objeto especfico, ou instncia, da classe chamada Animal.

    Ento, se executssemos o cdigo a seguir...

    Dim p As Person = New Person() Console.WriteLine(p.lastName)

    Descobriramos que ele escreveria a palavra "Rocket". Ao criar um objeto "Person", executamos de forma automtica e invisvel o mtodo construtor "Person", que define lastName como "Rocket" neste caso.

    Eis um exemplo semelhante do mundo real. Quando uma "nova instncia de criana" nasce no hospital, algum automaticamente vem ao quarto e trata de alguns detalhes para garantir que essa nova instncia seja registrada adequadamente e esteja pronta, sob os aspectos legais, para participar do mundo, antes mesmo de sair do hospital.

  • Mdico: Parabns pelo beb! Agora precisamos registr-lo. Qual o nome dele?

    Essa ao se assemelha a um mtodo construtor sendo executado em uma classe: antes que a nova instncia da classe tenha permisso para fazer qualquer coisa, o mtodo construtor executado. Nesse mtodo construtor, voc pode incluir tudo o que julgar que precisa ser feito automaticamente, antes que o objeto seja considerado "pronto para o mundo".

    Construtores Com Parmetros

    Voc pode escrever um mtodo construtor incluindo parmetros. Eis um exemplo de classe com dois mtodos construtores diferentes:

    Class Person ' Campos Dim firstName As String Dim lastName As String ' Primeiro mtodo construtor Public Sub New() firstName = "Johnny" lastName = "Rocket" End Sub ' Segundo mtodo construtor Public Sub New(ByVal f As String, ByVal l As String) Me.firstName = f Me.lastName = l End Sub End Class

    E agora h duas formas diferentes para construir o objeto:

    Assim:

    Dim p As Person = New Person()

  • E o campo p.lastName receber automaticamente o valor "Rocket".

    Ou assim:

    Dim p As Person = New Person("Jiminy", "Cricket")

    E o campo p.lastName receber automaticamente o valor "Cricket".

    Lembre-se de que a palavra "Me" se refere a "este objeto que estamos criando". Ento, na verdade o cdigo est dizendo para "definir os campos firstname e lastname do novo objeto com os valores que forem transmitidos para o mtodo construtor".

    Eventos

    No mundo real, ocorrem eventos o tempo todo. H alguns que no podemos controlar, como o nascer e o pr-do-sol (tente e veja se voc consegue fazer o sol nascer e se pr), e h outros que podemos iniciar por opo, como a msica que vem dos alto-falantes de um aparelho de som.

    Os eventos no mundo computacional so, geralmente, destes tipos:

    um boto clicado; o tempo de um cronmetro se esgota; o mouse movido; uma tecla do teclado pressionada. Logicamente, se um boto clicado, queremos que o computador faa algo caso contrrio, por que nos daramos ao trabalho de criar o boto? Mas o computador espera que voc diga que esse clique importante para voc, e tambm que especifique o que ele deve fazer quando o boto for clicado.

    Vamos tomar como exemplo o clique no boto, pois provavelmente o evento mais comum, e explicar como lidar com ele. Vamos supor que voc tem, no seu programa, um objeto de boto chamado mrButton, com as palavras "Click me" escritas nele.

    Na verdade, que tal experimentar voc mesmo conforme prosseguimos com a explicao? Para comear:

    Abra o Visual VB.Net Express clicando em INICIAR -> Todos os Programas -> Microsoft Visual VB.Net 2008 Express Edition. Inicie um novo projeto de aplicativo do Windows: selecione File (Arquivo) -> New Project (Novo Projeto) e escolha o tipo de projeto "Windows application" (Aplicativo do Windows). O Visual VB.Net Express criar alguns arquivos com um pouco de cdigo estrutural. Na janela "Solution Explorer", do lado direito (onde todos os arquivos esto relacionados), exclua o arquivo chamado Form1.vb.

  • Agora, clique com o boto direito do mouse no nome do projeto, no "Solution Explorer", e selecione .Add (Adicionar) -> Add New Item (Adicionar Novo Item).

    Uma nova janela ser aberta, conforme mostrado abaixo. Escolha "Class" (Classe) e d a ela o nome de "Program.vb".

    Clique duas vezes no arquivo chamado Program.vb e exclua todo o cdigo estrutural inserido automaticamente. Para criar um programa com uma instncia de boto, digite o seguinte cdigo em Program.vb, exatamente como exibido aqui (exceto pela formatao de algumas palavras em itlico ou negrito, que voc pode ignorar).

    Imports System Imports System.Windows.Forms Class MyButtonClass

  • Inherits Form Private mrButton As Button ' Mtodo construtor Public Sub New() mrButton = New Button() mrButton.Text = "Click me" Me.Controls.Add(mrButton) End Sub ' Mtodo principal Shared Sub Main() Application.Run(New MyButtonClass()) End Sub End Class Execute o programa pressionando a tecla F5 do teclado, ou ento clicando no boto Run (Executar) verde. Se obtiver alguma mensagem de erro, procure atentamente erros de digitao. Se o programa for executado corretamente, voc ver um formulrio exibido com um boto chamado "Click me". Neste ponto, o boto no far nada se voc clicar nele. um pouco desanimador, eu sei, mas chegaremos l.

    O Evento de Clique no Boto

    Especificando o Que Fazer Quando Ocorre um Evento

    Se j sabemos o que deve ser feito quando o boto for clicado, devemos especificar o mtodo pelo qual a ao ser realizada. Esses tipos de mtodos que informam ao computador o que fazer quando um evento ocorre so chamados de mtodos manipuladores de eventos, pois "manipulam" um evento. Veja o exemplo do cdigo em negrito a seguir. Tudo o que ele faz, na verdade, alterar o que est escrito no boto, por isso um mtodo curto.

    Imports System Imports System.Windows.Forms Class MyButtonClass Inherits Form Private mrButton As Button ' Mtodo construtor Public Sub MyButtonClass () mrButton = New Button() mrButton.Text = "Click me" Me.Controls.Add(mrButton) End Sub ' Mtodo principal Shared Sub Main() Application.Run(New MyButtonClass()) End Sub ' Mtodo manipulador de evento Private Sub MyButtonClickEventHandler(ByVal sender As Object, ByVal e As EventArgs) mrButton.Text = "You clicked me!" End Sub End Class

    Seu programa ainda est em execuo?

    Interrompa-o (clicando no X no canto superior direito da janela onde o formulrio exibido). Acrescente ao seu programa o cdigo em negrito acima e pressione F5 para executar o programa atualizado. Experimente clicar agora no boto "Click me". Argh! Ainda no faz nada, no ? Se voc leu o captulo sobre mtodos, reconhecer a estrutura bsica do mtodo acima. A palavra "Sub" significa que o mtodo no retornar "nada" quando for concludo. A palavra "MyButtonClickEventHandler" o nome que escolhemos para o mtodo.

  • Ento, as coisas comeam a ficar um pouco complicadas. Provavelmente, voc percebe que h dois parmetros entre parnteses, mas so estranhos: (ByVal sender As Object, ByVal e As EventArgs). Lamento ter que dar a voc essa m notcia mas, com mtodos manipuladores de eventos, no podemos criar nossos prprios tipos de parmetros. Quando esse mtodo chamado, o prprio sistema transmite automaticamente determinados parmetros para ele, e no podemos fazer nada a respeito.

    Precisamos apenas colaborar e escrever sempre nosso manipulador de eventos com os tipos de parmetros esperados. No caso de um evento de "clique", e tambm de muitos outros eventos, os parmetros transmitidos so dos tipos "object" e "EventArgs". No exemplo acima, escolhemos os nomes de parmetros "sender" e "e", mas poderamos ter escolhido quaisquer nomes o computador exigente apenas em relao aos tipos de parmetros. O exemplo a seguir funcionaria exatamente da mesma forma que o mostrado acima. Se quiser, voc pode comprovar isso alterando os nomes dos parmetros no seu programa para "x" e "y".

    Private Sub MyButtonClickEventHandler(ByVal x As Object, ByVal y As EventArgs) mrButton.Text = "You clicked me!" End Sub

    O primeiro parmetro normalmente contm informaes sobre o que ocasionou o evento. O segundo parmetro tem relao com as informaes sobre o evento propriamente dito.

    Tambm vale a pena observar que, embora o sistema sempre transmita alguns valores nesses dois parmetros, geralmente voc no precisar us-los, pois eles so enviados para o mtodo manipulador de eventos "apenas por precauo".

    Vinculando o Mtodo Manipulador de Eventos ao Evento

    Est imaginando por que o boto no faz nada quando voc clica nele? O mtodo acima s ser chamado se ns vincularmos a ele o evento de "clique" do boto. Em alguma parte do programa, precisamos dizer: "Quando este boto for clicado, v para o manipulador de eventos."

    Na verdade, isso bvio: se voc tivesse vrios botes e vrios manipuladores de eventos, como o computador saberia qual mtodo executar para cada clique em um boto?

    O cdigo para vincular o evento de um objeto a um mtodo manipulador de eventos tambm um pouco estranho. Est destacado em negrito a seguir.

    Imports System Imports System.Windows.Forms Class MyButtonClass Inherits Form Private mrButton As Button ' Mtodo construtor Public Sub MyButtonClass() mrButton = New Button() mrButton.Text = "Click me" mrButton.Click += New System.EventHandler(MyButtonClickEventHandler) Me.Controls.Add(mrButton) End Sub ' Mtodo principal Shared Sub Main() Application.Run(New MyButtonClass()) End Sub ' Mtodo manipulador de evento Private Sub MyButtonClickEventHandler(ByVal sender As Object, ByVal e As EventArgs) mrButton.Text = "You clicked me!" End Sub End Class

    Voc poderia traduzir isso do mundo da computao para o nosso desta forma:

  • Acrescente ao evento de "clique" do boto um novo mtodo manipulador de eventos: aquele que escrevi, chamado MyButtonClickEventHandler.

    Ento, quando voc clicar no boto, a linha de cdigo acima far com que o programa seja direcionado ao seu mtodo manipulador de eventos. Quando o mtodo for executado, o texto escrito no boto ser alterado para "You clicked me!".

    Para experimentar, interrompa seu programa, acrescente o cdigo em negrito acima (verifique se est no lugar certo) e pressione F5 para execut-lo novamente. Clique no boto e o texto ser alterado. Consulte o Programa 5 na pasta de exemplos deste livro para ver um exemplo funcional do evento de clique em um boto.

    Eventos de Mouse

    Esta a estrutura bsica de um mtodo manipulador de eventos para manipular eventos de mouse. Neste caso, provvel

    que voc queira usar as informaes transmitidas no parmetro MouseEventArgs para descobrir, por exemplo, qual dos

    botes do mouse est sendo pressionado.

    Public Sub TheMouseIsDown(ByVal sender As Object, ByVal e As MouseEventArgs) If e.Button = MouseButtons.Left Then Me.Text = "Left mouse button just went down" End If End Sub

    E esta a forma como voc vincularia um evento a ele. Este exemplo diz ao computador que "se o boto do mouse for

    pressionado enquanto o programa executado, v para o mtodo chamado TheMouseIsDown", um tipo de mtodo que

    sabe como manipular eventos de mouse:

    Me.MouseDown += New MouseEventHandler(TheMouseIsDown)

    Voc pode fazer algo um pouco mais sofisticado. Quando o manipulador a seguir for disparado, o cdigo que escrevemos nele tornar toda a janela maior ou menor, dependendo de qual o boto clicado.

    Public Sub TheMouseWasClicked(ByVal sender As Object, ByVal e As MouseEventArgs) ' Se o boto esquerdo for clicado If e.Button = MouseButtons.Left Then ' Aumenta a largura da janela atual Me.Width = Me.Width + 100 Else If e.Button = MouseButtons.Right Then ' Diminui a largura da janela atual Me.Width = Me.Width - 100 End If End Sub

    E este manipulador de eventos de mouse detecta qualquer movimento do mouse, desenhando um crculo na sua posio atual:

    Public Sub TheMouseMoved(ByVal sender As Object, ByVal e As MouseEventArgs) ' Prepara a superfcie de desenho Dim g As System.Drawing.Graphics = Me.CreateGraphics() ' Usa uma caneta vermelha Dim redPen As System.Drawing.Pen = New System.Drawing.Pen(Color.Red, 3) ' Desenha um crculo (uma elipse com altura e largura iguais) ' nas coordenadas X e Y atuais do mouse g.DrawEllipse(redPen, e.X, e.Y, 40, 40) ' Limpa g.Dispose() End Sub

    Esta captura de tela mostra o que exibido quando o mouse movido:

  • Namespaces

    Os Namespaces e o Servio dos Correios

    Deve haver centenas, ou talvez milhares de ruas no mundo chamadas "Main Street". Como uma carta enviada a algum na "Main Street" chega ao lugar certo? Logicamente, a resposta que h mais elementos no endereo. Em geral, acrescentamos pelo menos os nomes da cidade e do pas.

    Logicamente, se escrevermos:

    17 Main Street 82 Main Street No mostraremos a diferena entre as ruas e o carteiro ficar terrivelmente confuso.

    Em vez disso, poderamos escrever:

    17 Main Street. Londres. 82 Main Street. Nairbi.

  • J melhorou, mas, e se existissem duas cidades chamadas Londres? Seria melhor acrescentar tambm o nome do pas.

    17 Main Street. Londres. Reino Unido. 82 Main Street. Nairbi. Qunia. Tambm funcionaria escrever tudo na ordem inversa:

    Reino Unido. Londres. Main Street. 17. Qunia. Nairbi. Main Street. 82 Agora, a carta deve chegar ao seu destino sem problemas. No segundo caso, por exemplo, seguir por via area para o Qunia. Do aeroporto, ser enviada para a cidade de Nairbi. Ao chegar l, um carteiro a levar at a Main Street e encontrar o nmero 82.

    O formato [Qunia.Nairbi.MainStreet] pode ser considerado um tipo de "namespace" para o envio de cartas.

    Os Namespaces e o Cdigo de Programao

    E o que isso tem a ver com programao?

    Imagine que a Microsoft escreveu uma classe chamada "Point", usada para desenhar uma forma em um ponto especfico, mas voc tambm escreveu uma classe chamada "Point" digamos que ela carrega a figura de uma pessoa apontando.

    claro que as duas classes executam aes totalmente diferentes, mas faz sentido que as duas se chamem "Point". Como os programas sabero qual das duas utilizar?

    Logicamente, faria sentido diferenciar os nomes de alguma forma. O modo de fazer isso no .NET usando namespaces diferentes. Por exemplo:

    Microsoft.Drawing.Point Susy.PictureStuff.Point O nome das classes o mesmo ("Point"), mas o "namespace" antes do nome da classe estabelece claramente a distino entre elas. Se eu quisesse usar a classe Point da Susy, poderia criar um objeto Point usando o mtodo construtor da seguinte forma:

    Dim SusyPoint As Susy.PictureStuff.Point = New Susy.PictureStuff.Point()

    E, para usar a classe Point da Microsoft, eu escreveria:

    Dim MicrosoftPoint As Microsoft.Drawing.Point = New Microsoft.Drawing.Point()

    Embora meus dois objetos sejam do tipo de classe "Point", eles se comportaro de forma bastante diferente.

    Como Atribuir Sua Classe um Namespace

    muito fcil incluir sua classe em um namespace. Em vez de simplesmente escrever a classe assim:

    Class Animal ... End Class

    Encapsule-a em algo assim:

    Namespace Susy Class Animal ... End Class End Namespace

  • Ou assim, se preferir:

    Namespace Susy.FunStuff Class Animal ... End Class End Namespace

    Voc pode criar qualquer namespace que faa sentido. Basta separar as palavras com um ponto ".".

    No ltimo exemplo acima, a classe Animal aparece no namespace Susy.FunStuff.

    Voc descobrir tambm que todas as bibliotecas de cdigo da Microsoft, assim como as de outras organizaes, so colocadas em namespaces. Ento, para usar seu cdigo, necessrio entender como trabalhar com namespaces.

    Bloco de Construo: Namespaces

    Para fazer a distino entre as classes e agrupar logicamente classes semelhantes, uma prtica recomendvel sempre colocar uma classe em um namespace adequado.

    Namespace Charles.SchoolUtilities Class Animal End Class End Namespace

    Seria possvel criar uma instncia ou um objeto da classe acima usando o mtodo construtor de classes desta forma:

    Dim cat As Charles.SchoolUtilities.Animal = New Charles.SchoolUtilities.Animal()

    Ou, se fssemos usar em nosso programa vrios objetos do mesmo namespace e no quisssemos escrever "Charles.SchoolUtilities"vrias vezes, poderamos usar a palavra-chave "Imports" na parte superior do programa, indicando ao computador o uso desse namespace no programa dali em diante. Por exemplo:

    ' Diz ao computador que ns iremos usar classes deste namespace Imports Charles.SchoolUtilities ' Cria um objeto Animal a partir do namespace Charles.SchoolUtilities Dim cat As Animal = New Animal()

    Herana

    Este livro se destina a ensinar como comear a programar, portanto, no queremos confundi-lo com muitas informaes complicadas. Ento, no falaremos muito sobre herana.

    No entanto, voc pode, algumas vezes, ver classes declaradas assim:

    Class MyFancyClass Inherits Form ... End Class

    E no assim:

    Class MyFancyClass ... End Class

    Por isso, vamos explicar do que se trata a parte que vem depois da palavra "Inherits".

    Herana de Pessoas

  • comum as pessoas herdarem caractersticas de seus pais. Voc tem a cor de cabelo da sua me e o nariz do seu pai.

    Isso no significa que voc idntico sua me e ao seu pai em todos os aspectos, mas sim que certas caractersticas vieram "incorporadas" quando voc nasceu. Mas voc tambm tem vrias caractersticas e habilidades exclusivas, que so s suas e vo alm daquelas possudas pelos seus pais.

    Herana de Cdigo

    Quando escrevemos cdigo de programao, pode ser extremamente til ter acesso a algo assim poder herdar uma srie de habilidades de uma classe j existente, sua ou de outra pessoa.

    Eis um exemplo. Definimos duas classes, "Animal" e "Bird", mas a classe "Bird" herdeira da classe Animal.

    Class Animal Public kindOfAnimal As String Public name As String Public numberOfLegs As Integer Public height As Integer Public length As Integer Public color As String Dim hasTail As Boolean Protected isMammal As Boolean Private spellingCorrect As Boolean End Class Class Bird Inherits Animal ' A classe "Passro" herda a classe "Animal" Public featherColor As String ... End Class

    No mundo real, um pssaro um tipo de animal, mas tem algumas caractersticas que no se aplicam a todos os animais. Ento, faz sentido que a classe Bird tenha todas as caractersticas da classe Animal, e mais algumas extras. Neste caso, identificamos um campo especial somente para os pssaros: featherColor.

    Ento, quando escrevemos:

    Class Bird Inherits Animal ... End Class

    Na verdade, estamos dizendo: "Estou definindo uma nova classe chamada Bird, mas ela deve herdar tudo automaticamente da classe Animal." Geralmente dizemos que a classe Bird derivada da classe Animal.

    Quando criamos uma instncia de "Bird", podemos enderear diretamente os campos de Animal e Bird (se no forem particulares):

    Dim b As Bird = New Bird()

  • b.kindOfAnimal = "Tawny Eagle" b.isMammal = False b.featherColor = "Tawny"

    Para maior clareza, deixamos de lado os mtodos nas classes Animal e Bird acima, mas o mesmo se aplica aos mtodos. Uma classe derivada pode chamar qualquer mtodo na classe pai, desde que no tenha sido declarado como particular.

    Outro exemplo herdando algumas habilidades de janelas para o seu programa

    Suponha que voc queira escrever um programa executado em uma "janela" tpica. Ela deve ser dimensionvel, maximizvel, minimizvel, arrastvel etc. Faz sentido que a sua classe "herde" habilidades de uma classe que j trabalha com esse tipo de interface. A classe System.Windows.Forms.Form a opo mais comum.

    Ento, quando escrevemos:

    Class MyFancyClass Inherits Form ... End Class

    Na verdade, estamos dizendo: "Estou escrevendo minha prpria classe, mas ela deve herdar automaticamente todos os recursos da classe Form."

    Esse debate se torna mais prtico na parte III, o captulo sobre System.Windows.Forms.

    Quando Usar a Herana

    Voc no precisa herdar de uma classe para us-la! A herana mais bem aproveitada em casos onde a maior parte do que voc deseja realizar j feito por uma classe existente, e voc s precisa estend-la ou personaliz-la.

    Bloco de Construo: Herana

    possvel fazer com que uma classe herde as caractersticas e as habilidades de outra classe. No exemplo a seguir, a classe "Guitarist" herda trs campos da classe "Musician" e acrescenta dois campos prprios. A palavra "Inherits" informa ao computador para fazer com que a nova classe (Guitarist) herde da classe escrita direita da palavra Inherits.

    Public Class Musician Public name As String Public ageInYears As Integer Public canSing As Boolean End Class Public Class Guitarist Inherits Musician Public guitarType As String Public guitarBrand As String End Class Dim g As Guitarist = New Guitarist() g.name = "Jimbo van Helsdingen" g.ageInYears = 28g.canSing = False g.guitarType = "Acoustic" g.guitarBrand = "Gibson"

  • Parte III A Linguagem Visual Basic Quando algum aprende a ler e escrever em um novo idioma, geralmente esse aprendizado inclui pelo menos:

    Vocabulrio as palavras do idioma Gramtica como organizar as palavras corretamente, da forma aceita por todos. Isso inclui conhecimentos como

    estrutura adequada das frases e pontuao.

    Compreenso compreender o significado do que est escrito. Compreender significa entender.

    Os mesmos princpios bsicos se aplicam quando preciso aprender a ler e escrever uma linguagem de computao. H algumas palavras bsicas e outros elementos que so as peas usadas para compor seus programas. Voc combina essas peas de formas especficas, criando conjuntos semelhantes a frases, inclusive com marcas de pontuao. Tudo isso se destina a transmitir determinado significado ao computador.

    No vamos dividir nossas lies usando exatamente os mesmos cabealhos acima, mas voc ver esses aspectos surgirem nos captulos seguintes.

    Vocabulrio

    Assim como nos idiomas, o Visual Basic tem um determinado nmero de palavras que participam diretamente da linguagem, mas h palavras adicionais, exteriores linguagem, que podem ser includas nela legalmente.

    Em portugus, voc poderia escrever: "Um gorila chamado Juju vive na floresta de Uganda." A maioria dessas palavras faz parte do idioma portugus, e voc pode encontr-las no dicionrio. Mas as palavras "Juju" e "Uganda" no, pois so nomes prprios. Isso significa que a frase est incorreta? No, pois permitido usar palavras:

    da lista de todos os nomes de seres humanos e animais; da lista oficial de nomes de pases; ...e de muitas outras listas de palavras. Da mesma forma, mencionaremos palavras que participam diretamente da linguagem Visual Basic. Mas isso no significa que voc usar somente essas palavras em seus programas. Dependendo do que quiser expressar, provavelmente voc utilizar muitas palavras extras, emprestadas de outras listas, bibliotecas etc. A Microsoft, em particular, escreveu uma vasta

  • biblioteca de cdigo chamada biblioteca de classes .NET Framework, que voc com certeza utilizar nos seus programas em Visual Basic. Ela contm muitos nomes de classes, campos e mtodos que no so internos ao Visual Basic, mas que voc pode usar nos seus programas em Visual Basic.

    Voc mesmo definir novas classes, campos e mtodos, atribuindo-lhes nomes e esses nomes se tornaro palavras que voc poder usar legalmente nos programas em Visual Basic. como criar um novo nome, "PatasRajadas", para o seu animal de estimao. Ento, voc est autorizado a usar esse nome em frases em portugus.

    Eis aqui algumas palavras internas linguagem. Algumas delas, voc precisar conhecer para escrever programas bsicos. Todas so mencionadas neste livro.

    Class Do Else False For If Integer New Nothing Private Protected Public Return Shared String Me True Imports Loop While Essa no uma lista completa, mas no se preocupe: no h muitas palavras em Visual Basic alm dessa lista. As linguagens de computao tendem a ter muito menos palavras do que os idiomas.

    O que voc faz com as palavras que compem um idioma? Voc as combina em frases bem estruturadas, de acordo com certas regras. Isso se chama gramtica. Esse o assunto dos demais captulos desta seo.

    Algumas Regras Gerais de Gramtica

    Neste captulo, abordamos algumas informaes gerais sobre a gramtica no Visual Basic. Em termos tcnicos, isso geralmente chamado de sintaxe.

    Letras Maisculas e Minsculas

    A linguagem Visual Basic geralmente no diferencia maisculas de minsculas, embora transforme as palavras-chave de acordo com uma configurao padro de maisculas e minsculas (a primeira letra maiscula e as demais so minsculas, na maioria dos casos) e imponha o uso de maisculas e minsculas em nomes de variveis para se adequar forma adotada no nome fornecido durante a declarao.

    Palavras Internas

    As palavras-chave listadas no captulo anterior precisam ser sempre escritas exatamente como so mostradas aqui.

    Se voc escrever a palavra "IF" em vez de "if", ela simplesmente ser convertida para "If".

    Nomes Criados por Voc

  • E quanto s palavras criadas por voc? Imagine, por exemplo, que voc criou uma classe chamada "myClass", com um campo chamado "numberOfSpots".

    Class myClass Dim numberOfSpots As Integer End Class

    O uso de maisculas e minsculas importa? A resposta sim e no.

    Sim porque, sempre que voc mencionar esses nomes em um programa em Visual Basic, precisar escrev-los exatamente como foram originalmente definidos. O cdigo a seguir, por exemplo, funcionar, pois "x.NUMBEROFSPOTS" ser convertido automaticamente em "x.numberOfSpots".

    Class myClass ' Campo Dim numberOfSpots As Integer ' Mtodo Public Sub Main() Dim x As MyClass = New MyClass() x.NUMBEROFSPOTS = 365 End Sub End Class

    O cdigo acima ser convertido no cdigo mostrado a seguir:

    Class myClass ' Campo Dim numberOfSpots As Integer ' Mtodo Public Sub Main() Dim x As myClass = New myClass() x.numberOfSpots= 365 End Sub End Class

    No porque, se voc optar por escrever um nome de classe, campo, mtodo etc. com uma combinao de letras maisculas e minsculas, digamos, NuMbErOfSpOtS, no poder ter outro nome de classe, campo, mtodo etc. como numberofspots ou NUMBEROFSPOTS etc.

    Instrues

    Em portugus, temos perodos, declaraes, oraes, frases etc. Todas essas so diferentes formas de combinar palavras. Cada uma delas termina com uma marca de pontuao especfica. Um perodo termina com ponto (tambm chamado de ponto final). Uma orao pode terminar com ponto-e-vrgula (;).

    No Visual Basic, isso um pouco mais simples. Usamos basicamente instrues, que em geral terminam com uma nova linha.

  • Professor: Quero instrui-los sobre...

    Aqui, por exemplo, temos um trecho de cdigo com quatro instrues:

    Dim x As String x = "Nobody wins in war" Dim m As myClass = New myClass() m.numberOfSpots = 3

    No Visual Basic, preciso colocar cada instruo em uma nova linha para que o computador entenda cada uma delas.

    Posso apostar que muitos erros encontrados nos seus programas ocorrem porque voc se esqueceu de escrever instrues diferentes em linhas separadas. Mas, depois de se esquecer disso umas 5 mil vezes, voc provavelmente vai adquirir o hbito. Felizmente, o Visual Basic Express inteligente o bastante para perceber que voc deixou de lado detalhes como esse, usando uma linha ondulada ou outro mecanismo para mostrar como voc foi distrado.

    Blocos de Cdigo Agrupando Instrues Em portugus, usamos pargrafos para agrupar perodos diretamente relacionados.

    No VB.Net, usamos a palavra-chave "End" para encerrar um bloco que agrupa vrias instrues.

    Vejamos um exemplo. Suponha que te