Introdução ao BlueJ
Jobson Ronan, Pedro Leite, Leonardo Cole, Sylvia Campos, e Paulo Borba
Centro de Informática
Univesidade Federal de Pernambuco
Introdução

Por enquanto, assumiremos que cada arquivo deve conter apenas a definição de uma classe em Java. Assim, para definir uma nova classe, crie um novo arquivo e digite o código Java no mesmo. Por exemplo, veja a definição da classe Conta e tente entender o seu conteúdo.

Note que o texto que aparece entre "/*" e "*/" (pode ocupar várias linhas sem problemas), depois de "//" (até o final da linha),ou entre "/**" e "*/" são comentários, ou seja, informações que não são relevantes para o compilador nem para o computador, mas são relevantes para facilitar o entendimento e modificação do código por parte de um programador. O último tipo de comentário mencionado serve para geração automática de documentação com a ferramenta javadoc, como veremos mais adiante.

No código de Conta também é usado o modificador public que, ao contrário de private,  permite que uma declaração possa ser acessada de qualquer outra classe.

Cada arquivo deve ser salvo com o mesmo nome da classe definida, inclusive usando as mesmas letras maiúsculas e minúsculas utilizadas no nome. Por exemplo, se você declarou a classe Cliente, você tem que salvar o arquivo como "Cliente.java". Observe que a classe Conta foi criada no arquivo "Conta.java".  Salve este arquivo e os outros necessários para esta aula na sua área de trabalho. Analise estes arquivos.

Em Java você segue dois passos básicos para executar (rodar) um programa:

1° passo: Você necessita compilar o programa para transformar o código fonte (.java) em "bytecodes” (.class, código nativo da JVM, a máquina virtual Java), conforme ilustrado na figura abaixo. Os erros gerados pelo compilador são chamados de erros de compilação, ou erros em tempo de compilação.  

Introd1.jpg (7504 bytes)

2° passo: Depois de criado os “bytecodes”, você deve interpretá-los para que o  programa seja, de fato, executado, conforme ilustrado abaixo. Os erros gerados durante a interpretação são chamados de erros (em tempo) de execução

Introd2.jpg (9931 bytes)

Veja agora alguns comandos disponíveis no JDK (Java Development Kit), o kit básico com ferramentas para programação em Java:

  • javac - Comando usado para compilar um programa;

  • java - Comando usado para interpretar um programa;

  • javadoc – Comando usado para gerar a documentação de um programa (vários arquivos HTML que contêm as especificações sobre os atributos, construtores e métodos de uma classe), de forma similar à documentação da API de Java.

Porém não utilizaremos estes comandos diretamente em linha de comando (MS-DOS, UNIX, etc.), mas sim com a ajuda do BlueJ. Além do BlueJ  fornecer uma interface pare os comandos do JDK, ele nos possibilitará uma interação mais dinâmica com as classes e objetos criados.

 

1. Por que utilizar o BlueJ?

O BlueJ é um ambiente de desenvolvimento criado para auxiliar o ensino da linguagem Java e as técnicas de programação orientada à objetos. O BlueJ também fornece  ao usuário suporte a interação e experimentação, sendo capaz de ilustrar o comportamento dos objetos em memória durante a execução de um programa. Entre as características básicas do BlueJ estão:

Editor de Texto - possibilita escrever código com um salientador de sintaxe e capacidade para compilar o arquivo; 

Class Browser - possibilita visualizar uma representação gráfica das classes contidas em um projeto;

Console Terminal - possibilita a execução de métodos que escrevem strings na no tela, ou lêem do teclado;

Debugger - possibilita um monitoramento mais elegante do funcionamento de um programa, facilitando a detecção e remoção dos erros "lógicos";

Object Inspector -  possibilita ver interativamente o conteúdo dos atributos dos objetos.

Para iniciar a ferramenta clique em Start vá em  Programs->BlueJ e clique em BlueJ. A seguinte janela poderá aparecerá:

BlueJ

Clique então em Advanced para expandir a janela e depois em Browse for a specific Java version... Selecione o arquivo java.exe que se encontra no diretório /bin  do diretório onde onde se encontra um JDK instalado. Nos laboratórios do CIn pode haver JDKs nos seguintes diretórios, dependendo do laboratório e do próprio computador: em C:/JBuilder/jdk1.4 ou em P:/jdk1.4.0, e em alguns outros não muito comuns. Esoclha um deles e clique em Launch BlueJ.

 

2.Descrição do ambiente BlueJ

A janela principal do aplicativo consiste de menus, botões de atalho, o class browser e a bandeja de objetos. 


Indicador de Trabalho - indica quando a máquina virtual está executando;

Bancada de objetos - local onde ficam todos os objetos criados, sobre os quais podemos chamar métodos interativamente apenas com um clique de mouse.

 

3.Criando um Projeto

3.1 O que é um projeto?

Projeto é um conjunto de arquivos que se inter-relacionam formando um aplicativo, no caso teremos conjuntos de classes que se agrupam para a execução do programa final.

3.2. Criando e salvando projetos

Para criar um projeto você deve, no menu Project, selecionar a opção New Project... Então selecione o diretório onde o deseja salvar o projeto e escolha o nome do mesmo.

BlueJ

3.3.Criando e incluindo classes

Para criar uma nova classe basta clicar no botão New Class... Surgirá uma simples janela onde preencheremos as características desejadas.

Para incluir classes já existentes em algum lugar do computador você deve clicar no menu Edit -> Add Class from FIle... e escolher a classe a ser inserida.

4.Testando funções básicas da ferramenta

4.1. Depois de criado um projeto, adicione o arquivo "Conta.java", que você salvou no início do roteiro.

Observe que apareceu uma representações para a classe adicionada. Para compilá-las basta clicar com o botão direito em cima delas e escolher a opção compile. 

4.2. Verifique os erros apresentados pelo compilador. Note que os mínimos detalhes são observados pelo compilador, assim temos que escrever o programa sintaticamente correto para ser aceito pelo compilador. Em casos de erros. o BlueJ destaca a linha onde encontrou o erro e explica a razão do mesmo (em Inglês). Na maioria das vezes, alguma descrição adicional pode ser vista clicando no botão '?' ao lado da descrição do erro. Todas as classes usadas pela classe conta devem ser compiladas antes da mesma, então atenção pois estas também deverão ser adicionadas ao projeto.

4.3. Corrija os erros apresentados modificando o arquivo "Conta.java" e compile de novo até não apresentar mais erros. Veja então que compilador gerou o arquivo "Conta.class" com os "bytecodes" correspondentes ao código Java. O compilador traduziu o programa de Java para a linguagem da JVM. Após a compilação, a representação da classe muda no BlueJ. Agora, ao clicar com o botão direito sobre a classe Conta veremos duas novas opções: o construtor da classe Conta e o método main, sobre o qual falaremos mais adiante.

4.3. Crie, um objeto da classe Conta clicando no construtor (botão direito -> new Conta(numero,saldo)). Ao fazer isso a seguinte janela aparecerá:

O Campo Name of Instance é equivalente ao nome da variável, pois caso queira referenciar este objeto, este nome será usado. Os outros campos são relativos aos argumentos do construtor. Strings devem ser inseridas entras aspas duplas(").

O novo objeto aparecerá na Bancada de Objetos:

Clicando com o botão direito nesta representação você terá acesso a todos os métodos públicos do objeto, podendo chamá-los com apenas um clique de mouse. Também é possível visualizar o valor de todos os atributos do objeto usando a opção inspect

4.4. Teste exaustivamente todos os métodos da classe. Por exemplo, passe parâmetros null, compare valores, crie objetos com diferentes nomes e passe valores de tipos diferentes para ver como o BlueJ vai se comportar.

 

5. O Método main

Para executar(interpretar) um programa em Java, utilizamos o método main de um classe. No BlueJ você pode facilmente simular a execução do programa clicando com o botão direito na representação de sua classe (não do objeto), escolhendo a opção void main(argv) e em seguida clicando em OK.

5.1. Leia antes o método main da classe Conta para entender qual vai ser o comportamento do programa durante a execução. Em particular, digite as informações solicitadas pelo programa, primeiro um double para o saldo e depois uma string (sem aspas) para o número. Observe que o BlueJ simula o  console do sistema(Ms-Dos ou Unix) com seu próprio terminal. Observe também que o terminal foi aberto por que o main da classe Conta chamava métodos da classe Console para escrever no console do sistema e ler informações do teclado.

5.2. Verifique se a saída gerada pelo programa na janela do Terminal é realmente o que você esperava que o programa gerasse. Execute de novo o programa, digitando novos valores e verifique de novo se a saída está de acordo com o esperado. Note que você não precisou compilar o programa novamente para executá-lo.

 

6. Depurando com o BlueJ

Quando um programa não está funcionando corretamente precisamos corrigi-lo. Nem sempre conseguimos identificar um erro olhando o código. Neste caso, precisamos acompanhar a execução do programa, verificando métodos e atributos para identificar a causa do problema. O BlueJ oferece um depurador(debugger) para auxiliar nesta tarefa. Com esse depurador podemos acompanhar passo a passo a execução do programa para ver se ele está funcionando da maneira esperada.

Para depurar um programa no BlueJ você deve seguir alguns passos:

        6.1.  Com um click do lado esquerdo do código você insere um Break-Point (um ponto onde a execução do programa para, e podemos ver os valores das variáveis, dos atributos e coisas do tipo);
        6.2. Chame o método que deseja depurar, pode ser o main;
        6.3. Repare que quando o programa chegar no Break-Point a execução irá parar;
        6.4. Caso a variável seja de um tipo referência, com exceção de String, seu valor será mostrado como <object reference>. Clicando duas vezes neste campo será chamado o object inpector para este objeto; 
        6.5. Step Into - Executa a linha atual e, caso seja a chamada de um método, continua a execução passo a passo dentro deste;
        6.6. Step - Executa a linha atual e passa para a próxima linha do código;
        6.7. Continue - Continua a executar o programa até o fim ou até encontrar outro Break-Point;
   
6.7. Termina - Termina a execução do programa;

Por exemplo, para depurar a nossa classe Conta, siga os seguintes passos:

  1. Clique no lado esquerdo do comando String u = conta1.getNumero(), observe que apareceu um placa Stop;
  2. Chame o método main;
  3. Observe que o programa executou até o Break-Point;
  4. Observe que as variáveis locais se encontram com seus valores no canto inferior direito da janela do depurador;
  5. Clique em Step Into e veja como o método é feito;
  6. Verifique se a variáveis estão com os valores corretos;
  7. Clique em Step para passar para a próxima linha, até o programa acabar.

7.Gerando a documentação

7.1. Para gerar a documentação HTML da classe Conta abra a classe no editor e altere a seleção de implementation para interface no canto superior direito.

Fazendo isso o BlueJ já criará e mostrará a documentação da classe Conta.

7.2. Verifique que a documentação foi criada no diretório doc do seu Projeto. Veja que foram criados vários arquivos HTML. Abra o arquivo "index.html" usando um browser qualquer.

 

Agora você já está hábil a resolver os exercícios propostos e mantê-los documentados para uma melhor compreensão do código.