You are on page 1of 32

The BlueJ Tutorial

Verso 1.4 para BlueJ Verso 1.2.x

Michael Klling Mrsk Insitute University of Southern Denmark

traduzido para o portugus por Joo Luiz Barbosa (jluiz_barbosa@yahoo.com.br) em outubro/2002 mestrando no CEFET (www.dppg.cefetmg.br) e professor na FUMEC (www.fumec.br) Copyright M. Klling

ndice
1 Prefcio 1.1 1.2 1.3 1.4 2 4

Sobre o BlueJ........................................................................................................4 Escopo e audincia..................................................................................................4 Copyright, licenciamento e distribuio......................................................................4 Feedback...............................................................................................................4 5

Instalao 2.1 2.2 2.3 2.4

Instalao no Windows............................................................................................5 Instalao no Macintosh ..........................................................................................6 Instalao no Linux/Unix e em outros sistemas............................................................6 Problemas na instalao...........................................................................................6 7

Comeando do incio editando / compilando / executando 3.1 3.2 3.3 3.4 3.5 3.6 3.7

Iniciando o BlueJ....................................................................................................7 Abrindo um projeto ................................................................................................8 Criando objetos......................................................................................................8 Execuo ............................................................................................................ 10 Editando uma classe.............................................................................................. 12 Compilao......................................................................................................... 12 Ajuda nos erros de compilao ................................................................................ 13 14

Fazendo um pouco mais... 4.1 4.2

Inspecionar.......................................................................................................... 14 Passando objetos como parmetros .......................................................................... 17 18

Criando um novo projeto 5.1 5.2 5.3 5.4

Criando o diretrio do projeto ................................................................................. 18 Criando as classes................................................................................................. 18 Criando as dependncias......................................................................................... 18 Removendo elementos........................................................................................... 19 20

Depurando 6.1 6.2 6.3 6.4

Marcando pontos de parada ..................................................................................... 20 Caminhando passo-a-passo no cdigo....................................................................... 22 Inspecionando as variveis...................................................................................... 22 Halt e terminate ................................................................................................... 23

Copyright M. Klling

ndice
7 8 Criando aplicaes stand-alone Creating applets 8.1 8.2 8.3 9 24 26

Running an applet................................................................................................ 26 Creating an applet ................................................................................................ 27 Testing the applet................................................................................................. 27 28

Other Operations 9.1 9.2 9.3 9.4 9.5 9.6

Opening non-BlueJ packages in BlueJ ...................................................................... 28 Adding existing classes to your project..................................................................... 28 Calling main and other static methods...................................................................... 28 Generating documentation...................................................................................... 29 Working with libraries .......................................................................................... 29 Creating objects from library classes........................................................................ 30 31

10

Just the summaries

Copyright M. Klling

1 Prefcio

1.1 Sobre o BlueJ Este tutorial uma introduo para o uso do ambiente de programao do BlueJ. BlueJ um ambiente de desenvolvimento java projetado especificamente para o ensino em um nvel introdutrio. BlueJ foi projetado e implementado pelas equipes das universidade Monash University, Melbourne, Australia e The University of Southern Denmark, Odense. Maiores informaes sobre BlueJ esto disponveis no site oficial (http://www.bluej.org).

1.2 Escopo e audincia Este tutorial visa s pessoas que querem familiarizar-se com as potencialidades do ambiente. Ele no explica decises de projetos usadas na construo do ambiente e nem nas questes associadas a pesquisa desenvolvidas para ele. Este tutorial no pretende ensinar Java. Os novatos na programao Java devem procurar estudar a linguagem atravs de livros introdutrios ou cursos da linguagem. Este no o manual de referncia detalhado do ambiente. Muitos detalhes so deixados de fora a nfase est em uma introduo breve e concisa e no na cobertura completa dos recursos. Cada seo comea com um sumrio. Isto permite que os usurios j familiarizados com ambientes de desenvolvimento decidir se querem ler ou saltar cada parte particular. A seo 10 repete apenas estes sumrios visando ser uma referncia rpida.

1.3 Copyright, licenciamento e distribuio O software BlueJ e este tutorial esto disponveis a qualquer um para qualquer tipo de uso. O software e sua documentao podem ser distribudos livremente. Nenhuma parte do BlueJ ou sua documentao pode ser vendida ou includa em pacotes que sejam vendidos sem a autorizao explicita dos autores. Os direitos de propriedade do software BlueJ so propriedades de M. Klling and J. Rosenberg.

1.4 Feedback muito bem vindo os comentrios, questes, correes, criticas e qualquer outro tipo de retorno a respeito do software BlueJ ou sobre este material. Por favor, envie suas observaes para Michael Klling (mik@mip.sdu.dk).

Copyright M. Klling

2 Instalao

O BlueJ distribudo em trs formatos diferentes: um para o Windows, um para o MacOS, e um para todos os sistemas restantes. A instalao fcil e completamente automtica. Pr-requisitos Para usar o BlueJ, voc deve ter o J2SE v1.3 (a.k.a. JDK 1.3) instalado ou providenciar a instalao dele no seu sistema operacional aps a instalao do BlueJ. Se voc no tiver o JDK instalado, voc pode fazer o download a partir do site da Sun no endereo http://java.sun.com/j2se /. o MacOS X j possui uma verso do JDK preinstalada voc no necessita instal-la novamente. Se voc encontrar, durante a visita aos sites de download, as verses JRE (ambiente run-time Java) e o SDK (kit de desenvolvimento Java), voc deve fazer o download do SDK. O JRE no suficiente para a atividade de desenvolvimento de software.

2.1 Instalao no Windows O programa de instalao para o Windows chamado de bluejsetup-xxx.exe, onde xxx o nmero da verso. Por exemplo, a verso 1.2.0 do BlueJ chamada de bluejsetup-120.exe. Voc pode ter este arquivo fazendo o download a partir do site do BlueJ (http://www.bluej.org). Para instalar, basta executar o programa. O programa instalador permite voc selecionar o diretrio para a instalao. Ele oferecer tambm a opo de criar um atalho no menu iniciar e no seu desktop. Aps o termino da instalao, voc poder encontrar o programa bluej.exe dentro do diretrio escolhido. Na primeira vez que o BlueJ for acionado, ele procurar o ambiente Java (JDK). Se ele encontrar mais de um ambiente Java (por exemplo, voc tem instalado o JDK 1.3.1. e o JDK 1.4), uma janela de dilogo aparecer para voc selecionar qual ambiente ser utilizado. Se ele no encontrar nenhum ambiente Java, ser solicitado a voc que localize o ambiente. Isto pode ocorrer se voc tiver o ambiente instalado e as entradas na registry no estiverem corretas ou estiverem ausentes. O programa de instalao tambm instala um programa chamado vmselect.exe. Usando este programa, voc poder mais tarde mudar a opo do ambiente Java que ser utilizado pelo BlueJ. Execute o vmselect para iniciar o BlueJ com uma verso diferente do ambiente java. A escolha do JDK armazenada para cada verso do BlueJ. Se voc tiver verses diferentes do BlueJ instaladas, voc pode usar uma verso do BlueJ com o JDK 1.3.1 e outra verso do BlueJ com a verso do JDK 1.4. Entretanto, mudar a verso do ambiente Java para um BlueJ alterar todas as verses das instalaes do BlueJ com a mesma verso para o mesmo usurio.

Copyright M. Klling

Installation 2.2 Instalao no Macintosh O BlueJ s pode ser executa no no MacOS X. O programa de instalao para o MacOS chamado BlueJ-xxx.sit, onde xxx o nmero da verso. Por exemplo, a verso 1.2.0 do BlueJ chamada de bluejsetup-120.exe. Voc pode ter este arquivo fazendo o download a partir do site do BlueJ (http://www.bluej.org). Para instalar, basta executar o programa. Este arquivo pode ser descompactado com o StuffIt Expander. Vrios browser descompactaro o arquivo. Se isto no ocorrer, de um duplo-click para descompact-lo. Aps descompact-lo, voc ter uma pasta chamada BlueJ-xxx. Movimente est pasta para a pasta de aplicaes (ou para onde voc quiser guardar). Nenhuma operao adicional necessria para finaliza a instalao.

2.3 Instalao no Linux/Unix e em outros sistemas O arquivo de distribuio do software um jar executvel. Ele chamado bluej-xxx.jar, onde xxx o nmero da verso. Por exemplo, a verso 1.2.0 do BlueJ chamada de bluejsetup-120.exe. Voc pode ter este arquivo fazendo o download a partir do site do BlueJ (http://www.bluej.org). Para instalar, basta executar o programa Execute o programa de instalao atravs do comando abaixo. NOTA: Para este exemplo, eu utilizei o arquivo bluej-120.jar voc deve utilizar o nome do arquivo que voc baixou do site (com o nmero correto de verso).
< jdk-path>/bin/java -jar bluej-120.jar <jdk-path> o diretrio onde o JDK est instalado.

Uma janela ser exibida, permitindo voc escolher o diretrio de instalao e a verso do JDK que ser utilizada pelo BlueJ. Importante: O caminho de diretrio do BlueJ (isto , nenhum dos diretrios pai) no podem conter espaos em seus nomes. Click em Install. Ao final, BlueJ estar instalado.

2.4 Problemas na instalao Se voc tiver algum tipo de problema durante a instalao, verifique na Frequently Asked Questions (FAQ) no web site do BlueJ (http://www.bluej.org/help/faq.html). Leia tambm a seo How To Ask For Help (http://www.bluej.org/help/ask-help.html).

Copyright M. Klling

3 Comeando do incio editando / compilando / executando

3.1 Iniciando o BlueJ No Windows e no MacOS, o programa BlueJ foi instalado. Execute-o. Em sistemas UNIX, o programa de instalao criou um script chamado bluej no diretrio escolhido. Atravs da interface grfica, acione o script com um duplo-click. Voc tambm pode acion-lo atravs da linha de comando. Neste caso pode ou no ser passado o nome do projeto como parmetros.
$ bluej

ou
$ bluej examples/people

Figura 1: A janela principal do BlueJ

Copyright M. Klling

Comeando do incio - editando / compilando / executando 3.2 Abrindo um projeto Sumrio: Para abrir um projeto, selecione Open no menu Project. Projetos usando o BlueJ, como os packages no Java, so diretrios que contem os arquivos que participam do projeto. Aps iniciar o BlueJ, utilize o menu Projet Open para selecionar e abrir um projeto. Alguns projetos de exemplo esto includos na distribuio padro do BlueJ dentro do diretrio examples. Para esta seo do tutorial, abra o projeto people. Voc pode encontr-lo dentro do diretrio examples que est dentro do diretrio home do BlueJ. Aps ter aberto o projeto, voc deve ver algo similar janela mostrada na figura 1. A janela pode no estar exatamente com na figura, dependendo do seu ambiente operacional, mas as diferenas devem ser mnimas.

3.3 Criando objetos Sumrio: Para criar um objeto de uma classe, selecione o construtor no menu popup da classe desejada. Uma das caractersticas fundamentais do BlueJ que voc no executa somente a aplicao inteira, mas voc pode tambm interagir diretamente com os objetos de qualquer classe e executar os mtodos pblicos destes objetos. Uma execuo do BlueJ feita geralmente criando um objeto e acionando um dos seus mtodos. Isto muito til durante o desenvolvimento de uma aplicao voc pode testar classes individualmente logo aps eles terem sido construdos. No h necessidade de escrever a aplicao completa para executar parte dela.
Nota: Os mtodos estticos podem ser executados diretamente sem criar a primeira instncia de um objeto. Um destes mtodos estticos pode ser o main, assim ns podemos fazer a mesma coisa que uma aplicao comum em Java iniciar uma aplicao a partir da execuo do mtodo esttico main. Ns voltaremos a este tpico mais tarde. Primeiro, faremos outras coisas mais interessantes que no podem ser feitas normalmente em outros ambientes Java.

Os quadrados que voc v na parte central da janela principal (nomeados Database, Person, Staff e Student) so os cones que representam as classes envolvidas nesta aplicao. Voc pode comear obtendo um menu com as operao aplicveis a uma classe atravs do click com o boto direito do mouse (Macintosh: ctrl-click1 ) (Figura 2). As operaes mostradas so as operaes de criao de objetos, uma para cada construtora da classe, seguidas de algumas operaes disponibilizadas pelo ambiente.

Sempre que mencionarmos o click com boto direito neste tutorial, usurios do Macintosh devem usar o ctrl-click.

Copyright M. Klling

Comeando do incio - editando / compilando / executando

Figura 2: Operaes da classe (menu popup)

Ns queremos criar um objeto Staff, para isto voc deve usar o click com o boto direito no cone Staff (que mostrar um menu como na Figura 2). O menu mostra dois construtores para criar o objeto Staff, um com parmetros e outro sem. Primeiro, selecione o construtor sem parmetros. Uma janela de dilogo, como na Figura 3, aparecer.

Figura 3: Criao de objetos sem o uso de parmetros

Este dilogo pede um nome para o objeto a ser criado. Ao mesmo tempo, um nome padro (staff_1) sugerido. Este nome padro bom para este exemplo, portanto apenas click no boto OK. Um objeto Staff ser criado.

Copyright M. Klling

Comeando do incio - editando / compilando / executando Uma vez que o objeto foi criado, ele ser colocado na bancada de objetos (Figura 4). Este todo o processo para criar um objeto : selecione um construtor no menu popup, executeo e voc ter o objeto criado e visvel na bancada de objetos.

Figura 4: Um objeto na bancada de objetos

Voc pode ter observado que a classe Person recebeu uma indicao de <<abstract>> ( uma classe abstrata). Voc observar (se tentar fazer isto) que voc no consegue criar objetos de classes abstratas (A especificao da linguagem Java define que isto no possvel).

3.4 Execuo Sumrio: Para executar um mtodo, selecione-o atravs do menu popup. Agora que voc criou um objeto, voc pode executar suas operaes pblicas (em Java chamamos operaes de mtodos). Click com o boto direito no objeto e um menu com as operaes disponveis aparecer (Figura 5). O menu mostra os mtodos disponveis para este objeto e duas operaes especiais fornecidas pelo ambiente (Inspect e Remove). Ns as discutiremos mais tarde. Por agora, vamos focar nos outros mtodos.

Figura 5: o menu de um objeto

Copyright M. Klling

10

Comeando do incio - editando / compilando / executando Voc pode ver que existem os mtodos getRoom e setRoom que atribuem e retornam o numero da sala do membro do staff. Tente chamar getRoom. Selecione-o simplesmente no menu do objeto e ele ser executado. Um dilogo aparecer mostrando a voc o resultado da chamada efetuada (Figura 6). Neste caso o nome ser (unknown room) por que ns no especificamos a sala para esta pessoa.

Figura 6: Mostra o resultado da funo

Os mtodos herdados de uma superclasse tambm esto disponveis no submenu. No alto do menu popup do objeto, existe dois submenu, um para os mtodos herdados da classe Object e outro para os mtodos herdados da classe Person (Figura 5). Voc pode chamar os mtodos da classe Person (como o getName) selecionando ele no submenu. Tente isto. Voc observar que a resposta igualmente vaga: (unknown name), porque ns no atribumos o nome ao objeto. Vamos especificar o nmero da sala. Isto mostrar como fazer uma chamada com parmetros (As chamadas de getRoom e getName tiveram valor de retorno, mas no tiveram parmetros). Acione a funo setRoom atravs da seleo no menu. Uma janela de dilogo aparecer para obter o valor do parmetro (Figura 7).

Figura 7: Chamada de funo com passagem de parmetro

No alto, o dilogo mostra a interface do mtodo que foi acionado (incluindo os comentrios e a assinatura). Abaixo disto est o campo para a entrada de dados onde voc pode entrar com o parmetro. A assinatura, no topo, nos informa que o parmetro esperado do tipo String. Entre com o valor da sala com uma String (incluindo as aspas) no campo de teste e acione o boto OK. Isto tudo desde que o mtodo no retorne nenhum valor, nenhum dialogo de resposta mostrado. Chame o mtodo getRoom novamente e verifique que a sala foi realmente alterada. Experimente criar novos objetos e chamar alguns de seus mtodos. Tente chamar o construtor com argumento e chame tambm outros mtodos at ficar familiarizado com estas operaes.

Copyright M. Klling

11

Comeando do incio - editando / compilando / executando 3.5 Editando uma classe Sumrio: Para editar o cdigo fonte de uma classe, de um duplo-click no cone da classe. At agora, ns utilizamos somente a interface do objeto. Agora veremos o que acontece dentro da classe. Voc pode ver a implementao da classe selecionando Open Editor selecionando no popup de operaes da classe. (Lembre-se: click com o boto direito no cone da classe mostra as operaes da classe). Um duplo-click no cone da classe um atalho para a funo de edio. O editor no ser descrito em detalhes neste tutorial, mas ele de fcil uso. Os detalhes do editor sero tratados em outro material. Agora abra a implementao da classe Staff. Encontre a implementao do mtodo getRoom. Ele retorna, como o prprio nome sugere, o nmero da sala da pessoa membro do staff. Vamos tentar mudar o mtodo. Adicione o prefixo room no retorno da funo (para que o mtodo retorne room M.3.18 ao invs de M.3.18). Ns podemos fazer isto mudando a linha
return room;

para
return "room " + room;

BlueJ possui suporte integral ao Java, portanto no existe nada de especial em como implementar suas classe.

3.6 Compilao Sumrio: Para compilar uma classe, click no boto Compile no editor de texto. Para compilar um projeto, click no boto Compile na janela de visualizao do projeto. Aps inserir o texto (antes que qualquer outra coisa), verifique a janela de projeto (a janela principal). Voc observar que o cone da classe Staff foi alterado: Ele est com uma lista agora. Esta lista no cone sinaliza que a classe ainda no foi compilada desde a ultima alterao. Retorne para o editor de cdigo fonte.
Nota: Voc pode querer saber porque os cones das classes no estavam com a lista quando o projeto foi aberto a primeira vez. Isto ocorreu porque as classes j tinham sido compiladas anteriormente. Normalmente os projetos distribudos com o BlueJ no so previamente compilados, portanto voc deve encontrar a partir de agora vrios cones de classes com listas.

Na toolbar, no topo do editor de cdigo fonte, existem alguns botes que corresponde as funes mais utilizadas. Uma delas o Compile. Esta funo permite compilar a classe diretamente. Click no boto Compile. Se voc no cometeu nenhum erro, uma mensagem ser mostrada na rea na parte de baixo da janela do editor informando que a classe foi compilada com sucesso. Se voc cometeu algum erro de sintaxe, a linha de erro ser destacada e uma mensagem com a descrio do erro ser mostrada na rea de informao. (Se a sua primeira compilao ocorreu com sucesso, tente introduzir algum erro de sintaxe agora como a ausncia de um ponto-e-vrgula e compile novamente para voc como os erros de sintaxe so indicados). Aps voc ter compilado a classe com sucesso, feche o editor.
Nota: No necessrio salvar explicitamente o cdigo fonte de sua classe. Os cdigos fontes so automaticamente salvos no momento mais apropriado (por exemplo,

Copyright M. Klling

12

Comeando do incio - editando / compilando / executando


quando o editor fechado ou quando uma classe compilada). Voc, se quiser, pode explicitamente salvar (existe esta funo no menu da janela do editor) seu cdigo, mas isto s necessrio se o seu ambiente estiver instvel e voc estiver preocupado com perder parte do trabalho.

A toolbar da janela do projeto tambm possui o boto Compile. Este boto aciona a compilao de todas as classes do projeto (na verdade, ele determina quais as classes precisam ser recompiladas e recompila-as na ordem correta). Tente fazer isto mudando duas ou mais classes (de modo a ver duas ou mais classes com as listas no diagrama de classes) e ento acione o boto Compile. Se algum erro for detectado em uma das classes compiladas, o editor ser aberto e a localizao do erro ser indicada. Voc pode observar que a bancada de objetos est vazia outra vez. Os objetos sero sempre removidos quando a sua classe for recompilada.

3.7 Ajuda nos erros de compilao Sumrio: Para obter ajuda com as mensagens de erro durante a compilao, click no sinal de interrogao que est prximo da mensagem de erro. Muito freqentemente, alunos iniciantes tm dificuldade de compreender as mensagens de erro de compilao. O BlueJ tentar prover alguma ajuda. Abra o editor novamente, introduza um erro no cdigo fonte e compile. Uma mensagem de erro dever aparecer na rea de informao. No lado direito da rea de informao aparecer uma exclamao, se voc clicar neste cone voc obter mais informaes sobre o tipo de erro descrito (Figura 8).

Figura 8: Um erro de compilao e o boto de H e l p

Neste estgio, os textos de ajuda ainda no esto disponveis para todas as mensagens de erro. Muitos deles ainda devem ser escritos. Apesar disto vale a pena tentar pois muitos j foram cadastrados. Os restantes sero disponibilizados nas verses futuras do BlueJ.

Copyright M. Klling

13

4 Fazendo um pouco mais...


Nesta seo, ns investigaremos mais algumas coisas que voc pode fazer com o ambiente. Coisas que no so essenciais, mas so comumente usadas.

4.1 Inspecionar Sumrio: inspecionar objetos permite um nvel de depurao atravs da verificao dos estados internos do objeto. Quando voc executou mtodos de um objeto, voc pode ter observado que a operao Inspect estava disponvel junto com os mtodos definidos pelo usurio(Figura 5). Esta operao permite verificar os estado das variveis de instncia (fields) de um objeto. Tente criar um objeto com alguns valores definidos pelo usurio (por exemplo, um objeto Staff com parmetros para o mtodo construtor). Selecione ento o Inspect no menu do objeto. Um dilogo mostra os campos do objeto, seus tipos e seus valores (Figura 9).

Figura 9: Dialogo de inspeo

Inspeo til por ser uma forma rpida de verificar se uma mutator operation (uma operao de mudana de estado do objeto) foi executada corretamente. Assim, a inspeo uma ferramenta de verificar e eliminar erros simples. No exemplo do objeto Staff, todos os atributos so de tipos simples (no so objetos e nem Strings). O valor destes tipos pode ser mostrado diretamente. Voc pode imediatamente ver se o construtor fez ou no as atribuies corretamente. Nos casos mais complexos, os valores dos campos podem ser referencias para objetos definidos pelo usurio. Para ver um exemplo, ns vamos usar um outro projeto. Abra o projeto chamado people2, que est includo na distribuio padro do BlueJ. O people2 pode ser visto na Figura 10. Como voc pode ver, este segundo exemplo possui uma

Copyright M. Klling

14

Fazendo um pouco mais... classe Address que no existia no projeto anterior. Um dos campos da classe Person um atributo do tipo Address.

Figura 10: A janela do projeto people2

Para o nosso prximo teste inspecionar o valor de um objeto que atributo de outro crie um objeto Staff e ento acione o mtodo setAddress deste objeto (voc encontrar o mtodo no menu popup do objeto Person). Entre com o endereo. Internamente o cdigo do objeto Staff cria um objeto da classe Address e armazena-o no atributo address. Agora, inspecione o objeto Staff. O resultado desta inspeo est na in Figura 11. Nos atributos do objeto Staff temos agora o address. Como voc pode ver, o valor dele mostrado como <object reference> pois ele um objeto complexo e definido pelo usurio e seu valor no pode ser mostrado diretamente na lista. Para examinar o endereo, selecione o campo address na lista e click o boto Inspect na janela de dilogo. (Voc tambm pode dar um duplo-click no campo address) Uma outra janela de inspeo ser aberta e ela dever mostrar em detalhes o objeto Address (Figura 12).

Copyright M. Klling

15

Fazendo um pouco mais...

Figura 11: Inspeo com referencia de objeto

Figura 12: Inspeo em objetos internos

Copyright M. Klling

16

Fazendo um pouco mais... Se o campo selecionado for pblico, em vez de clicar Inspect, voc tambm pode selecionar o campo address e clicar no boto Get. Est operao coloca o objeto na bancada de objetos. Estando l voc pode examin-lo e fazer chamadas aos mtodos dele.

4.2 Passando objetos como parmetros Sumrio: Um objeto pode ser passado como um parmetro para uma chamada de mtodo. Objetos podem ser passados como parmetros aos mtodos de outros objetos. Vamos tentar um exemplo disto. Crie um objeto da classe Database (Voc perceber que a classe tem somente um constructor e sem parmetros, ou seja s acionar o construtor). O objeto Database tem a habilidade de armazenar uma lista de pessoas. Ele possui operaes para adicionar objetos e para mostrar os objetos guardados por ele (Na verdade, chamar este objeto de Database um grande exagero !). Se voc no tiver objetos do tipo Staff e Student na sua bancada de objeto, crie tambm um de cada. Para prosseguir, voc precisa ter um objeto Database, um Staff e um Student na sua bancada de objetos ao mesmo tempo. Agora acione o mtodo addPerson do objeto Database. A assinatura informa que um parmetro do tipo Person esperado. (Lembre-se: A classe Person abstrata, ento no existe nenhum objeto que seja diretamente do tipo Person. Mas, por causa da herana, os objetos Student e Staff podem substituir o objeto Person. Desta forma, correto passar Student ou Staff onde Person esperado). Para passar um objeto, que voc possui na bancada de objeto, como parmetro na chamada de mtodo, voc pode entrar com o nome do objeto no campo para passagem de parmetro. Tambm possvel utilizar um atalho, atravs de um click no objeto na bancada de trabalho, para obter o nome do objeto em questo. Aps isto click no boto ok para processar a chamada do mtodo. Como ele no retorna valor, voc no percebera o resultado imediatamente. Voc deve acionar o mtodo listAll no objeto Database para verificar se a operao foi realmente efetuada. A operao listAll escreve as informaes sobre as pessoas na janela de sada padro. Voc ver esta janela aparecer automaticamente com o referido contedo. Tente isto novamente aps ter inserido mais algumas pessoas no database.

Copyright M. Klling

17

5 Criando um novo projeto


Este captulo leva voc a um rpido passeio na atividade de criar e configurar um novo projeto.

5.1 Criando o diretrio do projeto Sumrio: Para criar um projeto, selecione New... no menu Project. Para criar um novo projeto, selecione Project New... no menu do BlueJ. Um dilogo de seleo de arquivo ser aberto para voc especificar o nome e a localizao do novo projeto. Tente fazer isto. Voc pode escolher qualquer nome para o seu projeto. Aps voc clicar no boto OK, um novo diretrio ser criado com o nome que voc especificou e a janela principal mostrara o novo, e vazio, projeto.

5.2 Criando as classes Sumrio: Para criar uma nova classe, click no boto New Class e especifique o nome da classe. Voc pode criar suas classes clicando no boto New Class na barra de ferramentas. Voc dever preencher o campo com o nome da classe este nome deve ser um nome vlido para uma classe em Java. Durante a criao da classe, voc pode escolher entre quatro tipos de classes: abstrata, interface, applet ou padro. Esta escolha determina qual o template ser utilizado para criar sua classe. Voc pode alterar esta definio atravs da edio do cdigo fonte (por exemplo, adicionando a palavra abstract no seu cdigo fonte). Aps criar uma classe, ela passa a ser representada por um cone no diagrama. Se ela no for uma classe padro, o tipo (interface, abstract, ou applet) indicado no cone. Quando voc abre um editor para uma nova classe voc observar que um template com a sua classe foi criado este um bom inicio para comear o trabalho. O cdigo criado est sintaticamente correto. Ele pode ser compilado (apesar de no fazer nada). Tente criar algumas classes e compil-las.

5.3 Criando as dependncias Sumrio: Para criar uma seta de dependncia, click no boto com a seta e araste-a para o diagrama, ou simplesmente codifique o que ela representa no editor de cdigo. O diagrama de classes mostra as dependncias entre as classes na forma de setas. Relaes de herana (extends ou implements) so mostrados como setas (em triangulo); relaes do tipo uses so mostradas como setas simples. 18

Copyright M. Klling

Depurando Voc pode adicionar as dependncias de forma grfica (diretamente no diagrama) ou de forma textual no cdigo fonte. Se voc adicionar a seta no diagrama, o cdigo automaticamente atualizado; se voc adicionar a dependncia no cdigo, o diagrama tambm ser atualizado. Para adicionar uma seta no diagrama, click no boto apropriado (setas duplas para extends ou implements, seta simples para uses) e arraste a seta de uma classe para a outra classe. Adicionando uma seta de herana provoca a insero da definio de extends ou implements na definio do cdigo fonte da classe (dependendo de qual tipo o cdigo - classe ou interface). Adicionar uma seta do tipo uses no altera imediatamente o cdigo fonte (a menos que o alvo seja uma classe de um outro pacote. Neste caso gerado um comando importe, mas ns no veremos isto nos nossos exemplos). Ter uma seta do tipo uses no diagrama apontando para uma classe que no possui o cdigo fonte correspondente gerar uma mensagem de aviso indicando que a relao do tipo uses foi declarada mas nunca foi usada. Adicionar a seta no cdigo fonte muito simples: basta digitar o cdigo que voc normalmente escreveria. Assim que a classe for salva, o diagrama ser atualizado (lembrese sempre: fechando o editor sua classe ser salva).

5.4 Removendo elementos Sumrio: Para remover uma classe, selecione a funo remover no menu popup da prpria classe. Para remover uma seta, selecione remove no menu Edit e click na seta a ser removida.. Para remover uma classe do diagrama, selecione a classe e escolha Remove Class no menu Edit. Voc tambm pode selecionar Remove no menu popup da classe em questo. Para remover a seta, selecione Remove Arrow no menu a ento selecione a seta que voc deseja remover.

Copyright M. Klling

19

Depurando

6 Depurando
Esta seo introduz um dos aspectos mais importantes a funcionalidade de depurao no BlueJ. Nas conversas entre os professores de computao, ns sempre escutamos que usar os depuradores no primeiro ano de ensino da computao seria muito bom, mas normalmente no temos tempo suficiente introduzir o assunto. Os estudantes esforam-se com o editor, como a compilao e com a execuo; Normalmente no temos tempo para introduzir mais uma ferramenta e com complexidade. Por este motivo decidimos criar um depurador o mais simples possvel. A meta foi ter um depurador que pudesse ser explicado em cerca de 15 minuto, e que os estudantes pudessem utiliz-lo sem muitas outras instrues. Vamos ver se tivemos sucesso. Primeiramente, nos reduzimos as tradicionais funcionalidades dos depuradores em trs diferentes tarefas : Marcar pontos de parada no cdigo Caminhar passo-a-passo no cdigo Verificar os valores das variveis Desta forma, cada uma das trs tarefas so muito simples. Nos vamos testar cada uma delas. Para iniciar, abra o projeto debugdemo, ele est includo no diretrio examples da distribuio padro. Este projeto contem algumas classes com o propsito de demonstramos como a funcionalidade de depurao Este exemplo no faz muito sentido em nenhum outro contexto.

6.1 Marcando pontos de parada Sumrio: Para marcar um ponto de parada, click na rea de breakpoint, parte esquerda do editor de texto. Ter um ponto de parada marcado permite a voc interromper a execuo do programa em uma certa linha de cdigo. Quando a execuo interrompida, voc pode investigar o estado de seus objetos. Isto ajuda muito na compreenso do que est acontecendo no seu cdigo fonte. No editor de texto, no lado esquerdo do texto, existe a rea de marcao de breakpoint (Figura 13). Voc pode criar um breakpoint atravs de um simples click nela. Um pequeno sinal de stop aparecer indicando o breakpoint. Tente fazer isto agora. Abra a classe Demo, procure pelo mtodo loop, e marce um breakpoint em alguma linha dentro do loop for. O sinal deve aparecer no seu editor de cdigo.

Copyright M. Klling

20

Depurando

Figura 13: Um ponto de parada - breakpoint

Quando a linha de cdigo associada ao breakpoint for ser executada, a execuo ser paralisada. Vamos tentar isto agora. Crie um objeto da classe Demo e chame o mtodo loop com um parmetro, por exemplo 10. Quando a linha que contem o breakpoint estiver para ser executada, a janela do editor ser mostrada, mostrando a linha de cdigo corrente, e a janela do depurador tambm ser mostrada. Isto ser parecido com o que mostrado na Figura 14.

Figura 14: A janela do depurador

A linha em destaque no editor mostra qual linha ser executada a seguir (a execuo parada antes da linha ser executada).

Copyright M. Klling

21

Depurando 6.2 Caminhando passo-a-passo no cdigo Sumrio: Para um passo simples no seu cdigo, use os botes Step e Step Into no depurador. Neste momento nos temos o cdigo paralisado de sua execuo (que nos convence realmente que o mtodo foi executado at o ponto que tnhamos marcado), e ns podemos andar em passos-simples (single-step) pelo cdigo e ver o progresso da execuo do cdigo. Para isto, click repetidamente no boto Step na janela do depurador. Voc deve ver que a marca no editor est movimentando (a marca move atravs das linhas que vo sendo executadas). Toda vez que voc clica no boto Step, uma linha de cdigo executada e a execuo paralisada novamente. Perceba tambm que os valores das variveis mostradas na janela do depurador mudam (por exemplo, o valor da varivel sum). Assim, voc pode executar passo-a-passo o cdigo e ver o que acontece. Quando voc j estiver satisfeito, voc pode remover o breakpoint clicando no cone. Para continuar a execuo, click no boto Continue e a execuo continuar normalmente. Vamos tentar novamente com outro mtodo. Marque o breakpoint na linha abaixo da classe Demo, mtodo carTest()
places = myCar.seats();

Acione o mtodo. Quando o breakpoint for encontrado, voc estar no momento antes da chamada do mtodo seats() da classe Car. Com um click em Step, voc ter a linha executada sem entrar no detalhe do mtodo. Vamos tentar agora o Step Into. Se voc acionar o step into, voc entrar no detalhe da execuo do mtodo e poder executar linha a linha (diferente do passo-simples). Neste caso, voc ver a execuo do mtodo seats() de dentro da classe Car. Voc poder passear pelo mtodo at que voc encontre o comando end e retorne para o mtodo chamador. Perceba como a janela do depurador se altera. Step e Step Into comportam-se da mesma forma se a linha corrente no contem uma chamada de mtodo.

6.3 Inspecionando as variveis Sumrio: Inspecionar variveis facil Elas so automaticamente mostradas no depurador. Quando voc depura erros no seu cdigo, importante poder inspecionar o estado de seus objetos (variveis locais e variveis da instncia). Fazer isto trivial a maior parte disto voce j viu. Voc no necessita de comandos especiais para inspecionar as variveis; variveis estticas, variveis de instancia de um objeto corrente e variveis locais de um mtodo corrente so sempre automaticamente mostradas e atualizadas. Voc pode selecionar os mtodos na pilha de chamada de mtodos para ver as variveis de outros objetos ativos ou de outros mtodos. Tente, por exemplo, um ponto de parada no mtodo carTest() novamente. No lado esquerdo da janela do depurador, voc pode ver a pilha de chamada dos mtodos. Ela atualmente mostra :
Car.seats Demo.carTest

Copyright M. Klling

22

Depurando Isto indica que Car.seats foi chamado por Demo.carTest. Voce pode selecionar Demo.carTest na lista para inspecionar o cdigo e os valores atuais das variveis deste mtodo. Se voc passar pela linha que contem o comando new Car(...) voc pode observar que o valor da varivel local myCar foi mostrado como <object reference>. Todos os valores do tipo objeto (exceto as Strings) so mostrados desta forma. Voc pode inspecionar os valores das variveis deste objeto atravs de um duplo-click. Fazendo desta forma uma janela de inspeo idntica as j descritas anteriormente ser aberta (seo 4.1). No h nenhuma diferena entre a inspeo de objetos descritas aqui da inspeo dos objetos feitas na bancada de objetos.

6.4 Halt e terminate Sumrio: Halt e Terminate podem ser utilizados para parar uma execuo temporariamente ou permanentemente. s vezes um programa fica rodando por muito tempo, e voc gostaria de saber se a execuo est sendo feita corretamente. Talvez exista um lao infinito, ou somente demora por algum motivo. Bem, ns podemos verificar. Chame o mtodo longloop() da classe Demo. Ele ficar rodando. Agora nos queremos saber o que est acontecendo. Mostre a janela do depurador, se ela j no estiver disponvel (a propsito, selecionando o smbolo de turning, que mostra que o computador est processando, um atalho para a chamada do depurador.) Agora selecione o boto Halt. A execuo ser interrompida como se ns tivssemos marcado um ponto de parada. Voc pode agora passar os comandos, observar as variveis, e verificar se est tudo dentro do esperado e eventualmente continuar executando por mais algum tempo para completar a atividade. Voc pode simplesmente selecionar Continue e Halt varias vezes para ver quanto rpido est sendo o processamento. Se voc no quiser terminar esta execuo (por exemplo, voc descobriu que est no meio de um loop infinito) voc pode simplesmente selecionar Terminate para parar a execuo que est em andamento. O boto Terminate no deve ser usado com freqncia voc pode deixar o software em um estado no previsto e inconsistente, portanto recomendvel que seja usado somente como um mecanismo de emergncia.

Copyright M. Klling

23

7 Criando aplicaes stand-alone


Sumrio: Para criar aplicaes stand-alon, use o menu Project - Export... BlueJ pode criar arquivos executveis no formato jar. Os arquivos executveis jar podem ser executados atravs de um duplo click (por exemplo no Windows e no MacOS X), ou atravs da linha de comando java -jar <file-name>.jar (no prompt do Unix ou do DOS). Nos tentaremos fazer isto com o projeto hello. Abra-o (ele est no diretrio examples). Tenha certeza que o projeto foi compilado. Selecione o menu Project -> Export... Ser aberto uma janela que permite a voc especificar o formato de armazenamento (Figura 15). Escolha a opo jar file para criar um arquivo executvel do tipo jar. Para que o executvel seja efetivo, voc deve ter criado uma classe de inicio de execuo. Esta classe deve ter um mtodo vlido chamado main definido. (com a assinatura public static void main(String[] args)).

Figura 15: A janela de "Export"

Em nosso exemplo, escolher a classe principal fcil; h somente uma classe. Selecione Hello no menu popup. Se voc tiver outros projetos, selecione a classe que contm o mtodo main que voc deseja executar. Geralmente, voc no incluiria seus fontes em um arquivo executvel. Mas voc pode fazlo, se voc quiser distribuir os fontes tambm. Selecione o boto Continue. Em seguida voc ver a janela para escolha de arquivo que permite que voc especifique o nome do arquivo do tipo jar a ser criado. Digite hello e selecione o boto OK. A criao do arquivo executvel do tipo jar foi completada. Voc pode executar o arquivo jar somente se a aplicao utiliza uma interface grfica. Nosso exemplo usa a interface baseada em texto, portanto nos temos que aciona-lo em uma janela com prompt de comando. Agora tente executar o arquivo jar

Copyright M. Klling

24

Depurando Abra um terminal ou uma janela de prompt de comando. Ento v ao diretrio onde voc salvou o arquivo jar. (voc deve verificar se o diretrio contm o arquivo hello.jar). Supondo que o java foi instalado corretamente em seu sistema, voc deve ser capaz de realizar o seguinte comando :
java -jar hello.jar

para executar o arquivo.

Copyright M. Klling

25

8 Criando applets

8.1 Executando uma applet Sumrio: Para executar uma applet, selecione Run Applet no menu popup da classe. BlueJ permite criar e executar applets como as outras aplicaes. Ns inclumos um applet no diretrio de exemplos da distribuio do BlueJ. Primeiro, Nos tentaremos executar o applet. Abra o projeto appletdemo que est dentro do diretrio exemples. Voce ver que este projeto possue somente uma classe; ela chamada de CaseConverter. O cone que representa a classe foi marcado (com a tag <<applet>>) como sendo uma applet. Aps a compilao, selecione Run Appno menu popup da classe. Uma janela sera exibida e ele permique que voce efetue algumas escolhas (Figura 16).

Figura 16: A janela "Run Applet"

Voc ver que pode escolher entre rodar o applet em um browser ou em um visualizador de applets (ou simplesmente gerar uma pgina web sem execut-lo). Deixe as opes com os valores j selecionados e selecione o boto OK. Aps alguns segundos, o visualizador applet ser exibido e mostrar o applet case converter. O visualizador applet foi instalado junto com o seu JDK, portanto muito provvel que ele seja da mesma verso do seu compilador Java. Isto geralmente evita os problemas que a execuo em browsers. O seu browser pode possuir uma verso diferente de Java, e,

Copyright M. Klling

26

Creating Applets dependendo da verso que o seu browser estiver utilizando, pode causar problemas. Apesar disto, a maior parte dos browser deve funcionar corretamente. Nos sistemas Microsoft Windows e MacOS, o BlueJ usa o browser default. Nos sistemas Unix systems, o BlueJ possui em suas configuraes qual ser o browser a ser acionado.

8.2 Criando um applet Sumrio: Para criar um applet, selecione o boto New Class e escolha o tipo da classe como Applet. Aps ter visto como executar uma applet, ns vamos ver como criar uma. Crie uma nova classe do tipo Applet (voc pode selecionar o tipo na janela de criao da classe). Compile e depois execute-a. s isto ! Isto no foi difcil, no ? Applets (como as outras classes) so geradas com um corpo padro que contm um cdigo bsico e vlido. Para applets, este cdigo mostra um applet simples com duas linhas de texto. Voc pode abrir o editor de texto e editar a applet para inserir suas prprias linhas de cdigo. Voc ver que todos os mtodos mais comuns de uma applet j esto construdos, cada um com um comentrio que explica o propsito do mtodo. O cdigo exemplo de construo dos textos est no mtodo paint.

8.3 Testando um applet Em algumas situaes pode ser util criar um objeto applet na bancada de objetos (como as classes normais). Voc pode fazer isto o construtor mostrado no menu popup da classe applet. Da bancada de objetos voc no pode executar uma applet na sua forma completa, mas voc pode chamar alguns mtodos. Isto pode ser til para realizar testes unitrios nos mtodos que voc escreveu como sendo parte da implementao da sua applet.

Copyright M. Klling

27

9 Outras Operaes

9.1 Abrindo pacotes feitos em outro ambientes no BlueJ Sumrio: Pacotes feitos em outros ambientes podem ser abertos no BlueJ atraves do menu Project: Open Non BlueJ... BlueJ permite voc abrir pacotes j existentes e que foram criados fora do ambiente do BlueJ. Para fazer isto, selecione Project Open Non BlueJ... no menu. Selecione o diretrio que contm os arquivos com os cdigos fonte em java e selecione o boto Open in BlueJ. O BlueJ pedir uma confirmao que voc quer realmente abrir este diretrio.

9.2 Inserindo classes j existentes no seu projeto Sumrio: Classes podem ser copiadas para um projeto utilizando o comando Add Class do menu File... Em alguns casos, voce pode precisar usar uma classe que voce j possui em um projeto usando o BlueJ. Por exemplo, um professor pode fornecer uma classe Java aos estudantes para que eles usem em seus projetos. Voc pode incorporar facilmente uma classe existente em seu projeto atravs do menu Edit Add Class from File.... Isto selecionar o cdigo fonte indicado (com a terminao do nome de arquivo em .java) para ser importado. Quando uma classe importada para um projeto, uma cpia feita para o diretrio corrente do projeto. Este efeito exatamente igual a voc criar uma classe e reescrever as linhas de cdigo. Uma alternativa a este processo adicionar o cdigo fonte, via outra ferramenta de organizao de arquivo, da nova classe no diretrio do projeto. A prxima vez que voc abrir o projeto, a classe ser includa no diagrama do projeto.

9.3 Acionando o mtodo main e outros mtodos estticos Sumrio: Mtodos estticos podem ser acionados a partir do menu popup da classe. Abra o projeto hello a partir do diretrio examples. A nica classe no projeto (classe Hello) contm a definio do mtodo main. Click com o boto direito sobre a classe, e voc ver o menu popup inclue no s os mtodos construtores da classe, ele contm tambm o mtodo esttico main. Voc pode chamar main diretamente a partir deste menu popup (sem primeiro criar um objeto, exatamente como a definio de um mtodo esttico).

Copyright M. Klling

28

Other operations Todos os mtodos estticos podem ser acionados desta forma. O mtodo padro main espera receber um array com as Strings como sendo o argumento. Voc pode passar um array com String usando o padro de sintaxe Java para a declarao de array constantes. Por exemplo, voc poder passar
{"one", "two", "three"}

(incluindo as chaves) para o mtodo. Tente fazer isto!


Nota: No padro java, constantes no formato array constantes no podem ser usadas como parmetros para a chamada de mtodos. Eles podem somente ser utilizados como inicializadores. No BlueJ, para permitir a chamada interativa de mtodos do tpo main, ns permitiremos a passagem de constantes no formato array como parmetro.

9.4 Gerando a documentao Sumrio: Para gerar a documentao de um projeto, selecione Project Documentation no menu Tools. Voc pode gerar a documentao do seu projeto no formato padro javadoc a partir do BlueJ. Para fazer isto, selecione no Tools - Project Documentation menu. Esta funo gerar a documentao para todas as classes do projeto a partir dos cdigos fontes e abrir um browser para mostrar a documentao gerada. Voc pode tambm gerar e visualizar a documentao de uma nica classe diretamente a partir do editor de cdigo fonte do BlueJ. Para fazer isto, abra o editor de cdigo fonte e use o menu drop-down na barra de botes do editor. Altere a seleo de Implementation para Interface. Isto ir mostar a documentao no padro javadoc (interface da classe) no editor.

9.5 Trabalhando com bibliotecas Sumrio: As classes das API padro do java podem ter sua documentao visualizada atravs do Help - Java Standard Libraries. Frequentemente, quando voce est escrevendo um programa em java, voce precisa utilizar a documentao das bibliotecas padro do Java. Voc pode abrir um browser mostrando a documentao da API do JDK atravs do menu Help - Java Standard Classes (se voce estiver na internet). A documentao do JDK pode tambm ser instalada e usada localmente (offline). Os detalhes desta configurao esto explicados detalhadamente na seo de help no web site do BlueJ.

Copyright M. Klling

29

Other operations 9.6 Criando objetos a partir da biblioteca de classes Sumrio: Para criar objetos a partir de uma biblioteca de classes, utize o menu Tools Use Library Class. O BlueJ tambm oferece a funcionalidade de criar objetos de uma classe que no faz parte do seu projeto, mas que esteja definida em uma biblioteca. Voc pode, por exemplo, criar objetos de uma classe String ou ArrayList. Isto pode ser muito til para simulaes simples do uso destes objetos. Voc pode criar uma biblioteca atravs do menu Tools Use Library Class. Uma janela ser exibida para voc entrar o nome qualificado da classe, como java.lang.String. (Perceba que voce deve entrar com o nome complete, ou seja o nome da classe incluindo o nome dos pacotes que contm a classe.) O campo de entrada possui um combo-box associado para mostrar as classes utilizadas recentemente. Uma vez que o nome da classe foi entrado, basta precionar Enter para verificar todos os construtores e os mtodos estticos da classe entrada. Qualquer um destes mtodos, construtores ou mtodos estticos, podem ser invocados atravs da seleo deles na lista. Este acionamento preceder qualquer outra chamada de mtodo ou do construtor da classe.

Copyright M. Klling

30

10 Os sumrios
Iniciando o BlueJ
1. Para abrir um projeto, selecione Open no menu Project. 2. Para criar um objeto de uma classe, selecione o construtor no menu popup da classe desejada. 3. Para executar um mtodo, selecione-o atravs do menu popup. 4. Para editar o cdigo fonte de uma classe, de um duplo-click no cone da classe. 5. Para compilar uma classe, click no boto Compile no editor de texto. Para compilar um projeto, click no boto Compile na janela de visualizao do projeto. 6. Para obter ajuda com as mensagens de erro durante a compilao, click no sinal de interrogao que est prximo da mensagem de erro.

Fazendo um pouco mais


7. inspecionar objetos permite um nvel de depurao atravs da verificao dos estados internos do objeto. 8. Um objeto pode ser passado como um parmetro para uma chamada de mtodo.

Criando um novo projeto


9. Para criar um projeto, selecione New... no menu Project. 10. Para criar uma nova classe, click no boto New Class e especifique o nome da classe. 11. Para criar uma seta de dependncia, click no boto com a seta e araste-a para o diagrama, ou simplesmente codifique o que ela representa no editor de cdigo. 12. Para remover uma classe, selecione a funo remover no menu popup da prpria classe. 1 3 . Para remover uma seta, selecione remove no menu Edit e click na seta a ser removida.

Depurando
14. Para marcar um ponto de parada, click na rea de breakpoint parte esquerda editor de texto. 1 5 . Para um passo simples no seu cdigo, useos botes S t e p e Step I n t o depurador.Inspecting variables is easy they are automatically displayed in debugger. 16. Inspecionar variveis facil Elas so automaticamente mostradas no depurador. 17. Halt e Terminate podem ser utilizados para parar uma execuo temporariamente permanentemente. do no the

ou

Criando aplicaes stand-alone


18. Para criar aplicaes stand-alon, use Project - Export...

Criando applets
19. Para executar uma applet, selecione Run Applet no menu popup da classe. 20. Para criar um applet, selecione o boto New Class e escolha o tipo da classe como Applet .

Outras Operaes 31

Copyright M. Klling

Other operations
21. Pacotes feitos em outros ambientes podem ser abertos no BlueJ atraves do menu Project: Open Non BlueJ.... 22. Classes podem ser copiadas para um projeto utilizando o comando Add Class do menu File... 23. Mtodos estticos podem ser acionados a partir do menu popup da classe. 24. Para gerar a documentao de um projeto, selecione Project Documentation no menu Tools. 25. As classes das API padro do java podem ter sua documentao visualizada atravs do Help - Java Standard Libraries. 26. Para criar objetos a partir de uma biblioteca de classes, utize o menu Tools Use Library Class.

Copyright M. Klling

32