Programação Orientada por Objectos 2007/08
Laboratório 3
MEEC / MEBiome
1. Considere o seguinte programa em Java.
public class Hello {
public static void main(String[] args) { System.out.println("Hello World!"); }
}
Comece por abrir o editor de texto do gnome instalado no laboratório e copia para lá o código em cima. Grave o ficheiro com o nome “Hello.java” na sua directoria raiz.
Abra a linha de comandos do gnome e compile o programa fazendo: javac Hello.java
Note que foi criado o ficheiro “hello.class” correspondente a classe Hello definida no ficheiro “hello.java”. Será criado um ficheiro “.class” para cada classe existente no ficheiro de fonte, mas note que um ficheiro “.java” apenas pode conter uma única classe publica, devendo cada uma destas ser definida no seu próprio ficheiro.
Para correr o programa faça. java Hello
A Java virtual machine carregará a classe Hello definida na linha de comandos do ficheiro “hello.class” e chamará o método main da classe, resultando no aparecimento da mensagem no ecrã.
Crie agora o ficheiro “Echo.java” com a class:
public Class Echo {
public static void main(String[] args) {
for(inti=0; i<args.length; i++) System.out.print(args[i]+ “”); System.out.println();
} }
Grave o ficheiro e faça. javac Echo.java java Echo estou aqui
2. Abra agora o ambiente de desenvolvimento Eclipse e crie um projecto.
Comece por criar um novo projecto. Faça File→New→Java Project. Defina o nome do projecto como “Account” e faça Finish. Deverá surgir no Package Explorer um o novo projecto “Account”. Faça duplo click para expandir o ramo o ver o conteúdo do projecto.
Crie agora uma nova package igualmente como o nome “Account”. Para tal seleccione o projecto “Account” no package Explorer e pressiono o “new Java package icon” na toolbar. De o nome ao pacote se faça Finish. Um novo icon representando o pacote aparecerá no explorador.
3. Crie uma classe.
Agora crie uma nova classe mais uma vez com o nome “Account”. Para tal seleccione o pacote criado e pressione o icon “new Java class” da toolbar. De nome a class e pressione finish. Verifique que foi criado o ficheiro “Account.java” e aberto no editor com a class respectiva.
Faça copy past do código que se segue de forma a definir a class Accout. Para conseguir
uma correcta formatação faça Source→Format.
Verifique que no package explorer for recriada a estrutura da class com os métodos e atributos lá indicados.{
protected double balance;
// Constructor to initialize balance
public Account( double amount ) {
balance = amount; }
// Overloaded constructor for empty balance
public Account() {
balance = 0.0; }
public void deposit( double amount ) {
balance += amount; }
public double withdraw( double amount ) {
// See if amount can be withdrawn
if (balance >= amount) { balance -= amount; return amount; } else
// Withdrawal not allowed
return 0.0; }
public double getbalance() {
return balance; }
}
Experimente a navegar no código pressionando nos diferentes atributos e métodos que surgem no package explorer.
Abra a outline view fazendo Window→Show View→Outline.
A outline view permite-lhe navegar rapidamente no ficheiro corrente e preserva a ordem dos atributos e métodos definida no ficheiro. Pode filtrar o conteúdo de forma a mostrar apenas vários tipos de métodos os de atributos pressionando os botões em cima. Pode ainda chamar a outline view pressionando Ctr+O e utiliza-la para navegar rapidamente no ficheiro.
Rapidamente surgiram apenas os métodos que começam por “dep”. Pressione “Enter” e será enviado para o método deposit.
4. Crie um novo método.
Coloque-se no fim do código da classe e escreva:
public void interest(double rate){
pressione em Enter e verifique que “}” é adicionado automaticamente no fim do método.
Agora escreva, “this.”. Repare que mal pressione a ponto surge uma janela com o conjunto de opções possíveis para completar a expressão. Este sistema chama-se “content assist” e também pode ser activado pressionando Ctr+Space para completar qualquer expressão. Escreva “ba” de forma a escolher o atributo balance e pressione Enter. Termine o método escrevendo:
this.balance += this.balance*rate;
Note que a medida que vai escrevendo o código por vezes o editor sublinha a vermelho certas passagens. Isto acontece porque o por defeito o seu código é recompilado imediatamente depois de qualquer alteração e o sublinhado indica que a versão actual ainda não está correcta sintaxicamente. O sublinhado a vermelho deve desaparecer depois de completar a instrução. 5. Crie a classe de teste
Adicione mais uma classe ao seu código pressionando e escolhendo agora para a classe o nome
AccountDemo. Seleccione o no botão
“public static void main(String args[])” de
forma a classe ser criada com um método main. Verifique que surge uma nova class no
package explorer. Faça copy past do código em baixo de forma a definir o método main. Se
necessário faça Source→Format.
package Account;
public class AccountDemo { /**
* @param args */
public static void main(String[] args) {
// Create an empty account
Account my_account = new Account();
// Deposit money
// Print current balance
System.out.println("Current balance " + my_account.getbalance());
// Withdraw money
my_account.withdraw(80.00);
// Print remaining balance
System.out.println("Remaining balance " + my_account.getbalance()); }
}
6. Correr o seu programa
Seleccione a class AccountDemo no package explorer (esta é a única que possui um
método main). Pressione o botão Run
, na toolbar. Escolha Java Application de entre as
opções que lhe são apresentadas. Verifique o programa corre e que o resultado á
apresentada na janela de consola em baixo:
Current balance 250.0 Remaining balance 170.0
7. Encontrar erros no código
Remova o “;” da linha da classe que acabou de criar. my_account.withdraw(80.00);
verifique que o fim da linha aparece sublinhada a vermelho indicando um erro e que na scroll bar lateral aparece uma zona a vermelho , indicando o local do erro. Grave o ficheiro e verifique que surge o símbolo no lado esquerdo indicando um erro. Além disso surgem cruzes a vermelho nas classes com erro no package explorer.
Faça Windows→Show View→Problems para surgir uma janela com uma lista de erros no projecto. Basta fazer duplo click no erro para se deslocar para a linha com problemas. Volte a colocar o ponto e virgula e grave o ficheiro.
Agora apague o “w” do withdraw de forma a alterar a linha para, my_account.withdra(80.00);
repare que agora surge na lado direito o icon indicando que há uma sugestão de correcção. Coloque-se na linha com o erro e pressione Ctr+1 um click no icon para ver uma lista de sugestões de correcção. Escolha “change to withdraw” e o erro desaparece.
8. Renomear elementos Java
Seleccione a class Account no package explorer e click com o botão direito e escolha
refactor→rename. Escolha para o novo nome MyAccount e click finish. Verifique que
alterações foram feitas por todo o código nomeadamente na classe AccountDemo que
utilizava esta classe. Faça novamente refactor→rename e altere o nome da classe
novamente para Account.
Na package view experimente a arrastar um método da classe Account para a classe
AccountDemo. Verifique que as respectivas alterações são efectuadas no código. Volte a
arrastar o método para a class Account para eliminar os erros de compilação.
9. Hierarquia de classes
Crie uma nova classe com o nome InterestBearingAccount na campo Superlclass click em Browse e escreva Account. Complete a classe com o código em baixo.
class InterestBearingAccount extends Account {
// Default interest rate of 7.95 percent (const)
private static double default_interest = 7.95; // Current interest rate
private double interest_rate;
// Overloaded constructor accepting balance and an interest rate
{
balance = amount;
interest_rate = interest; }
// Overloaded constructor accepting balance with a default interest rate
public InterestBearingAccount( double amount ) {
balance = amount;
interest_rate = default_interest; }
// Overloaded constructor with empty balance and a default interest rate public InterestBearingAccount() { balance = 0.0; interest_rate = default_interest; }
public void add_monthly_interest() {
// Add interest to our account
balance = balance +
(balance * interest_rate / 100) / 12; }
}
No package explorer click com o botão direito sobre InterestBearingAccount e escolha Open Type Hierarchy. Observe do hierarquia de classes. Pode utilizar os botões em cima para ver super classes e interfaces, ou subclasses.
10. Debug
Vá para o método Account.deposit(double). Faça duplo click na barra a cinzento do lado
esquerdo da linha
balance += amount;
O icon aparece nesse ponto indicando que foi colocado um ponto de paragem. Agora
escolha a class AccountDemo e pressione o botão de debug da toolbar
. Aceite a
mudança de perspectiva para o modo de debug. Pode mudar entre a perspective entre debug
e de Java clickando nos botões
no canto superior direito.
A Janela de Debug mostra o stack actual de chamadas a funções e o editor indica qual que o
programa se encontra parado no ponto de paragem colocado. Pode utilizar os botões em
cima para percorrer o código linha a linha com entrada ou não em funções ou para
continuar a execução no botão de play.
Coloque o rato sobre a variável balance. Se aguardar um pouco deverá aparecer uma janela
indicando o valor actual da variável. Pode ainda clickar com o botão direito e escolher
inspect para verificar rapidamente o valor, ou Watch para adicionar ao conjunto de
variáveis que estão constantemente apresentadas na janela Expressions. A janela variables
mostra as variáveis locais do método.
Pressione terminate para sair do modo de debug.
11. eUML2
Considere o tutorial de eUML2 que se encontra em:
http://www.soyatec.com/euml2/com.soyatec.uml.doc/gettingStarted/index.html Siga-o passo a passo de forma a aprender a:
• criar diagrama de classes; • inserir classes e interfaces; • inserir atributos;
• inserir métodos; • inserir associações;