Laboratório 3 Programação Orientada por Objectos 2007/08 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. public class Account
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. Pressino Ctr+O e escreva dep.
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 my_account.deposit(250.00);
// 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 public InterestBearingAccount( double amount, double interest)
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 O icon balance += amount; 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; inserir implementação e herança.