Aula2

1,634 views

Published on

Curso de Programação OO com Java no IBTA

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,634
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Aula2

  1. 1. Programação Orientada a Objetos com Java Aula 2 professor: Fábio Kimura e-mail: fkimura@yahoo.com
  2. 2. <ul><li>Agenda </li></ul>• Padrão de Codificação Java • Variáveis em Java • Tipos Primitivos • Tipos de Referência • Expressões e Operadores • Exercícios • Trabalho valendo nota
  3. 3. <ul><li>Importância do Padrão de Codificação </li></ul>Por que usar um padrão de codificação? class input { class output {}public static void main(String call [ ]){;input. integer(call,input.class. getName (),0);}; static void integer(String []Number, String end ,int Null) {; char Void=58; for (String Virtual:Number)Virtual+= Null++; System. out. println(end+Void+Null);}}
  4. 4. <ul><li>Importância do Padrão de Codificação </li></ul><ul><li>Por que usar um padrão de codificação? </li></ul><ul><li>80% do custo total (lifetime cost) de um software vai para manutenção. </li></ul><ul><li>Raramente um software é mantido sempre pelo autor original. </li></ul><ul><li>Aumentam a legibilidade de um software, permitindo aos programadores entender códigos pré-escritos mais fácil e rapidamente. </li></ul><ul><li>Por que usar o Padrão de Codificação Java? </li></ul><ul><li>Definido pela Sun em 1996 e publicado em “The Java Language Specification”. </li></ul><ul><li>Utilizado desde então pela maioria das grandes empresas. </li></ul>
  5. 5. <ul><li>Importância de “Code Conventions” </li></ul>Exemplos da especificação “Java Code Conventions” • Nomes de classes devem ser substantivos, com cada nome começando com maiúscula e o resto em minúsculas Exemplos: MinhaClasse, Conta, ContaEspecial • Atributos e variáveis devem começar com minúsculas, com cada palavra interna iniciando com maiúscula. Exemplos: meuAtributo, minhaVariavel, cliente • Métodos devem ser verbos, com cada palavra interna começando com maiúscula. Exemplos: abrirConta, alterarNome, testar
  6. 6. <ul><li>Tarefa para casa </li></ul>Baixe ou leia a especificação “Java Code Conventions” do link abaixo: http://java.sun.com/docs/codeconv/ Leia (pelo menos) os capítulos 1-6, 8, 9 e 11.
  7. 7. <ul><li>Comentários de código </li></ul>O Compilador do JavaDoc, transforma os comentário do JAVADOC em Páginas HTML. <ul><li>Comentários de código </li></ul>
  8. 8. <ul><li>Comentário simples (uma linha) </li></ul><ul><ul><li>private int id; // identificador da Camisa </li></ul></ul><ul><li>Comentário para múltiplas linas </li></ul><ul><ul><li>/* Este comentário será finalizado apenas quando </li></ul></ul><ul><ul><li>encontrar o caracter correspondente, podendo se </li></ul></ul><ul><ul><li>estender por quantas linhas forem necessárias </li></ul></ul><ul><ul><li>*/ </li></ul></ul><ul><li>Comentário para documentação (javadoc) </li></ul><ul><ul><li>/** </li></ul></ul><ul><ul><li>Classe que representa uma Camisa </li></ul></ul><ul><ul><li>@author Fábio Kimura </li></ul></ul><ul><ul><li>@since 02/08/2008 </li></ul></ul><ul><ul><li>*/ </li></ul></ul><ul><ul><li>Mais informações sobre javadoc: </li></ul></ul><ul><li>http://java.sun.com/j2se/javadoc/writingdoccomments/index.html </li></ul><ul><li>Comentários em Java </li></ul>
  9. 9. <ul><li>Exemplo de classe Java </li></ul><ul><li>/** </li></ul><ul><li>* </li></ul><ul><li>* @author Fabio Kimura </li></ul><ul><li>* Classe de teste para exemplificar o uso de Javadoc </li></ul><ul><li>* </li></ul><ul><li>*/ </li></ul><ul><li>public class Camisa { </li></ul><ul><li>/** identificador da camisa */ </li></ul><ul><li>public int id = 0; </li></ul><ul><li>/** informações sobre a Camisa */ </li></ul><ul><li>public String descricao = “vazia”; </li></ul><ul><li>/** </li></ul><ul><li>* código da cor da camisa. </li></ul><ul><li>* Os códigos são: V=Vermelha, A=Azul, B=Branca, N=Não definida </li></ul><ul><li>*/ </li></ul><ul><li>public char codigoCor = ‘N’; </li></ul><ul><li>/** preço em reais */ </li></ul><ul><li>public double preco = 0.0; </li></ul><ul><li>/** quantidade de camisas no estoque */ </li></ul><ul><li>public int quantidadeEmEstoque = 0; </li></ul><ul><li>... </li></ul>
  10. 10. <ul><li>Exemplo de classe Java (continuação) </li></ul><ul><li>/** </li></ul><ul><li>* Mostra os dados da Camisa </li></ul><ul><li>*/ </li></ul><ul><li>public void mostrarDados() { </li></ul><ul><li>System.out.println(“Identificador: “ + id); </li></ul><ul><li>System.out.println(“Descrição:” + descricao); </li></ul><ul><li>System.out.println(“Código da cor: “ + codigoCor); </li></ul><ul><li>System.out.println(“Preço: “ + preco); </li></ul><ul><li>System.out.println(“Quantidade em estoque: “ + quantidadeEmEstoque); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  11. 11. <ul><li>JavaBeans são componentes reutilizáveis de software. </li></ul><ul><li>Para uma classe ser considerada JavaBean deve seguir diversas convenções, como possuir um construtor vazio e implementar a interface Serializable. </li></ul><ul><li>Algumas dessas convenções são aproveitadas em classes comuns (POJO) para encapsulamento, por exemplo (getters & setters). </li></ul><ul><li>Mais informações sobre JavaBeans: </li></ul><ul><li>http://java.sun.com/javase/technologies/desktop/javabeans/docs/spec.html </li></ul><ul><li>Padrão JavaBean </li></ul>
  12. 12. <ul><li>Encapsulamento </li></ul><ul><ul><li>Definição: “Disponibilizar uma interface pública para manipular os estados e executar as operações de um objeto.” </li></ul></ul><ul><li>Criando classes Java </li></ul>Aplicando Encapsulamento
  13. 13. <ul><li>Encapsulamento </li></ul>Vemos que todos os atributos estão marcados como public e não há métodos definidos para acessar os atributos e estados. public class Conta {   public int numero; public double saldo; public double juros; public java.util.Date vencimento; } Conta contaBanco = new Conta(); contaBanco.numero = 1; contaBanco.saldo = 100; contaBanco.juros = 0.089; <ul><li>Criando classes Java </li></ul>
  14. 14. <ul><li>Encapsulamento </li></ul>Neste módulo veremos private e public <ul><li>Criando classes Java </li></ul><ul><ul><li>A orientação a objetos possui um conjunto de modificadores de acesso a membros de classe que permite um controle apurado do acesso aos seus membros. </li></ul></ul>
  15. 15. <ul><li>Encapsulamento </li></ul>Aplicando o encapsulamento, temos: para cada atributo que pode ser consultado criamos um método getNomeAtributo() (tecnicamente chamando de accessor method);   para cada atributo que pode ser alterado, criamos um método setNomeAtributo() (tecnicamente chamando de mutator method );  para os métodos que executam operações ou funções dos objetos, damos um nome que corresponde aquela função ou operação, facilitando seu entendimento. (tecnicamente chamando de worker method );  <ul><li>Criando classes Java </li></ul>
  16. 16. <ul><li>Encapsulamento </li></ul>public class Conta {   .. private int numero; .. //accessor methods public int getNumero() { return juros; }   public void setNumero(int num) { numero = num; } .. } Conta contaBanco = new Conta(); ... contaBanco.setNumero(1); ... os atributos estão marcados como private e todos o métodos como public , esta é a forma de fornecer o encapsulamento em Java. <ul><li>Criando classes Java </li></ul>
  17. 17. <ul><li>Variáveis em Java </li></ul>Declarando variáveis em Java: • Sintaxe (atributo ou variável de instância): [ modificadores ] tipo identificador [= valor ]; Exemplo: private double preço = 0.0; • Sintaxe (variáveis locais): tipo identificador [= valor ]; Exemplo: int idade = 30; • Declarando e inicializando diversas variáveis em uma única linha de código: tipo identificador [= valor ] [ , identificador [= valor]]; Exemplos: double preço = 0.0, preçoTotal = 0.0; int a, b=1, c=2, d;
  18. 18. <ul><li>Variáveis em Java </li></ul><ul><li>Dentro de um bloco, podemos declarar e utilizar variáveis locais, e utilizar variáveis de instância. </li></ul><ul><li>public class Teste { </li></ul><ul><li>private int atributo; </li></ul><ul><li>public static void main(String[] args) { </li></ul><ul><li>// declaração </li></ul><ul><li>int idade; </li></ul><ul><li>// atribuição: </li></ul><ul><li>idade = 32; </li></ul><ul><li>atributo = 20; </li></ul><ul><li>System.out.println(idade); </li></ul><ul><li>// declaração com atribuição: </li></ul><ul><li>Pessoa pedro = new Pessoa(); </li></ul><ul><li>... </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  19. 19. <ul><li>Variáveis </li></ul><ul><li>Variáveis em Java podem ser de 2 tipos: </li></ul><ul><ul><li>Variável de Tipo Primitivo. </li></ul></ul><ul><ul><li>Variável de Referência. </li></ul></ul>
  20. 20. <ul><li>Tipos Primitivos </li></ul>O que são tipos primitivos? São tipos sem classe alguma.
  21. 21. <ul><li>Java </li></ul>Tipos primitivos não são referências para objetos. Tipos primitivos armazenam dados simples em memória: • Números inteiros: byte, short, int, long ; • Números ponto flutuante: float, double ; • Caractere: char ; • Booleano (Verdadeiro ou Falso): boolean ; Primitive tech support
  22. 22. <ul><li>Java </li></ul>* padrão para execução de cálculos pela JVM Mais informações em: http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html true ou false Dependente de JVM boolean - 64 bits IEEE 754 double* - 32 bits IEEE 754 float -2 63 até 2 63 - 1 64 bits long -2 31 até 2 31 - 1 32 bits int* 0 até 2 16 - 1 16 bits char -2 15 até 2 15 - 1 16 bits short -2 7 até 2 7 - 1 8 bits byte Range de Valores Precisão Tipo
  23. 23. <ul><li>Tipos Primitivos - Promotion </li></ul>O conteúdo de uma variável pode ser transferido para outra de um tipo diferente, desde que esse tipo tenha uma “capacidade” maior: short s = 10; int i = s; Isto é chamado de “Promoção” ou “Promotion”. E quando o tipo tem uma capacidade menor? s = i; Isso funciona?
  24. 24. <ul><li>Tipos Primitivos - Casting </li></ul>Se uma variável tiver capacidade maior que a outra, o conteúdo dela só poderá ser transferido se você “forçar” a transferência, pois “vazamentos” podem ocorrer. Isto é chamado de “casting” ou “moldagem”. long l = 10; int l = (int) l; O “casting” é necessário para informar ao compilador: “Eu sei que vazamentos podem ocorrer, mas acredite, eu sei o que estou fazendo!”.
  25. 25. <ul><li>Tipos Primitivos - Casting </li></ul>Quando é feito o “casting”, se o conteúdo que uma variável estiver recebendo for maior do que o tipo dela, a JVM irá “truncar” os bits: int i = 128; b = (byte) i; System. out .println(“b=“+b); Saída do programa: b=-128 O que aconteceu?
  26. 26. <ul><li>Tipos Primitivos - Casting </li></ul><ul><li>Cálculo em Java são feitos com int e double. Como assim? </li></ul><ul><li>byte a = 1; </li></ul><ul><li>byte b = 2; </li></ul><ul><li>byte c = a + b; </li></ul><ul><li>System. out .println(“c=“+c); </li></ul><ul><li>Saída do programa? </li></ul>Erro de compilação na linha 3! Por que? O resultado de a + b é um int e não um byte, portanto um “cast” é necessário. 3. byte b = (byte) a + b; Agora funciona? Por que? Erro de compilação na linha 3! Ainda! 3. byte b = (byte) (a + b); Agora sim!
  27. 27. <ul><li>Tipos Primitivos - Casting </li></ul><ul><li>Os cálculos envolvendo ponto flutuante são um pouco mais simples: </li></ul><ul><li>float f = 1; </li></ul><ul><li>float g = 3; </li></ul><ul><li>float h = f/g; </li></ul><ul><li>System. out .println(“h=“+h); </li></ul><ul><li>Saída do programa? </li></ul>h=0.33333334 <ul><li>float f = 1; </li></ul><ul><li>double d = 3; </li></ul><ul><li>float h = f + d; </li></ul><ul><li>System. out .println(“h=“+h); </li></ul><ul><li>Saída do programa? </li></ul>Erro na linha 3: f + d resulta em double.
  28. 28. <ul><li>Tipos Primitivos - Literais </li></ul><ul><li>Números são literais e também possuem tipo: </li></ul><ul><li>Sem ponto -> int </li></ul><ul><li>Com ponto -> double </li></ul><ul><li>int i = 128; 128 é um int. </li></ul><ul><li>byte a = 20; 20 é um int, mas o compilador sabe que 20 “cabe” em um byte. </li></ul><ul><li>byte b = 128; Erro de compilação! 128 não “cabe” em um byte sem “casting”. </li></ul><ul><li>byte c = (byte) 128; Ok! </li></ul><ul><li>double d = 1.99; 1.99 é um double. </li></ul><ul><li>float f = 1.99; Erro! 1.99 é um double e não “cabe” em um float sem “casting”. </li></ul>I´ll have a double java.
  29. 29. <ul><li>Tipos Primitivos - Literais </li></ul>float g = 1.99F; Ok! float h = 1.99f; Ok! double d1 = 1.99d; Redundante mas Ok! double d2 = 1.99D; Redundante mas Ok! long l1 = 10L; Redundante mas Ok. Todo int cabe em um long. long l2 = 10l; Redundante mas Ok! char c = ‘A’; char unicodeChar=‘u0065’; true e false não são palavras reservadas, mas sim literais do tipo boolean : boolean isCrazy = false; boolean isJavaCool = true; boolean isWrong = 0; // ERRO DE COMPILAÇÃO!!!!!
  30. 30. <ul><li>Tipos Primitivos – Literais - extras </li></ul>int six = 06; // igual a 6 em decimal int eight = 010; // igual a 8 em decimal int um = 0X0001; int dez = 0x000A; // igual a 10 em decimal int quinze = 0x000f; // igual a 15 em decimal int z = 0xDeadCafe; // mais uma exceção case-insensitive long l = 0x000FL;
  31. 31. <ul><li>Exercícios </li></ul><ul><li>Sem usar um compilador, qual a saída da linha 3? </li></ul><ul><li>short s = 2; </li></ul><ul><li>s = s + 3; </li></ul><ul><li>System.out.println(s); </li></ul><ul><li>Sem usar um compilador, qual a saída da linha 3? </li></ul><ul><li>int a = 1; </li></ul><ul><li>int b = a / 3; </li></ul><ul><li>System.out.println(b); </li></ul><ul><li>Sem usar um compilador, qual a saída da linha 3? </li></ul><ul><li>long a = 2; </li></ul><ul><li>int b = a - 1; </li></ul><ul><li>System.out.println(b); </li></ul>
  32. 32. <ul><li>Tipos primitivos – Casting e Promotion </li></ul><ul><li>Conversão dos tipos primitivos: </li></ul><ul><li>Casting = Mudança de tipo para um tipo de menor precisão </li></ul><ul><li>Promotion = Mudança de tipo para um tipo de maior precisão </li></ul>
  33. 33. <ul><li>Promoção </li></ul><ul><li>Promoção automática: </li></ul><ul><ul><li>Quando se associa um tipo menor a um tipo maior; </li></ul></ul><ul><ul><li>Quando se associa um tipo inteiro a um tipo de ponto flutuante; </li></ul></ul><ul><li>Exemplos: </li></ul><ul><li>long big = 6; </li></ul><ul><li>float float = big; </li></ul>
  34. 34. <ul><li>Tipos primitivos </li></ul>Tipos primitivos como atributos de objeto: <ul><li>public class Camisa { </li></ul><ul><li>public int id; </li></ul><ul><li>public String descricao; </li></ul><ul><li>public char codigoCor; </li></ul><ul><li>public double preco; </li></ul><ul><li>public int quantidadeEmEstoque; </li></ul><ul><li>public void mostrarDados() { </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>+ mostrarDados(): void + id: int + descricao: String + codigoCor:char + preço: double +quantidadeEmEstoque: int Camisa
  35. 35. <ul><li>Tipos de referência </li></ul><ul><li>São variáveis que armazenam referências a objetos . </li></ul><ul><li>Facilitam a navegação e troca de mensagens entre os objetos de um sistema. </li></ul><ul><li>Usamos os tipos de referência para podermos manipular facilmente os objetos em memória. </li></ul><ul><li>Camisa minhaCamisa = new Camisa(); </li></ul><ul><li>Operador new -> cria um novo objeto a partir de uma determinada classe. </li></ul>
  36. 36. <ul><li>Tipos de referência </li></ul>Tipos de referência como atributos de objeto: <ul><li>public class Conjunto { </li></ul><ul><li>public int id; </li></ul><ul><li>public double preco; </li></ul><ul><li>public Camisa camisa; </li></ul><ul><li>public Terno terno; </li></ul><ul><li>} </li></ul>Tipos Primitivos Tipos de Referência + id: int + preço: double + camisa: Camisa + terno: Terno Conjunto
  37. 37. <ul><li>Strings </li></ul>String são objetos ! public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; /** The offset is the first index of the storage that is used. */ private final int offset; /** The count is the number of characters in the String. */ private final int count;
  38. 38. <ul><li>Strings </li></ul>String possui literais ! String nome = “Fábio Kimura”; String greetings = “Hello World”; String possui operadores! String nome = “Fábio”; nome = nome + ‘ ‘; nome+= “Kimura”; System.out.println(“Olá, “ + nome);
  39. 39. <ul><li>Strings </li></ul>String é um objeto! String nula = null; String vazia = new String(); String greetings = new String(“Hello World”); System.out.println(greetings.substring(0,5)); System.out.println(“String é especial!”.substring(0,6));
  40. 40. <ul><li>Strings </li></ul>“ Fábio Kimura” “ Hello World” <ul><li>public static void main(String[] args { </li></ul><ul><li>String nome = “Fábio Kimura”; </li></ul><ul><li>System.out.println(“Hello World”); </li></ul><ul><li>System.out.println(“Olá, ” + nome); </li></ul><ul><li>} </li></ul>Java possui um pool de Strings para economia de memória “ Olá, ” Por isso se diz que em Java Strings são imutáveis .
  41. 41. <ul><li>Strings </li></ul>“ Fábio Kimura” “ Hello World” <ul><li>public static void main(String[] args { </li></ul><ul><li>String nome = “Fábio Kimura”; </li></ul><ul><li>nome.toUpperCase(); </li></ul><ul><li>System.out.println(nome); </li></ul><ul><li>} </li></ul>Strings são imutáveis: “ Olá, ”
  42. 42. Vimos que a classe String, que pertence às classes padrão do Java, possui dois métodos, substring() e toUpperCase(). Será que a classe String possui mais métodos? Como vamos saber o que fazem? http://java.sun.com/javase/6/docs/api/ Aqui vemos o javadoc da API do Java SE 6. Procure a classe String e veja que métodos mais ela possui. Crie classes para testar alguns outros métodos. Você pode gerar o javadoc do seu projeto, com o comando javadoc <ul><li>API JSE </li></ul>
  43. 43. <ul><li>Ocasionalmente precisamos que um tipo primitivo seja um objeto </li></ul><ul><li>Para facilitar, todo tipo primitivo em Java possui sua contraparte Objeto. </li></ul><ul><li>Essas classes são chamadas de Wrappers . </li></ul><ul><ul><li>Byte </li></ul></ul><ul><ul><li>Short </li></ul></ul><ul><ul><li>Character </li></ul></ul><ul><ul><li>Integer </li></ul></ul><ul><ul><li>Long </li></ul></ul><ul><ul><li>Float </li></ul></ul><ul><ul><li>Double </li></ul></ul><ul><ul><li>Boolean </li></ul></ul><ul><ul><li>Void </li></ul></ul><ul><ul><li>Wrappers são imutáveis assim como a classe String. </li></ul></ul><ul><li>Wrappers </li></ul>
  44. 44. <ul><li>Variável x Atributo de Classe </li></ul><ul><li>Variável: tipo declarado dentro de um bloco (dentro de um método por exemplo). Uma variável só existe dentro do bloco, ou seja, seu escopo se limita ao bloco. </li></ul><ul><li>Atributo de classe: tipo declarado dentro da classe . Um atributo pertencente a um objeto existe enquanto aquele objeto existir. </li></ul><ul><li>public class Teste { </li></ul><ul><li>int atributo = 0; </li></ul><ul><li>public void testar() { </li></ul><ul><li>atributo = 2; </li></ul><ul><li>int variavel = 32; </li></ul><ul><li>System.out.println(variavel); </li></ul><ul><li>} </li></ul><ul><li>// aqui a variável idade não existe mais </li></ul><ul><li>} </li></ul>
  45. 45. <ul><li>Notação ponto (.) </li></ul><ul><li>Utilizamos o operador ponto (.) para acessar atributos, métodos e outros membros de um objeto. </li></ul><ul><li>Camisa minhaCamisa = new Camisa(); </li></ul><ul><li>minhaCamisa.id=1; </li></ul><ul><li>minhaCamisa.preco=49.99; </li></ul><ul><li>minhaCamisa.mostrarDados(); </li></ul><ul><li>minhaCamisa -> referência para um objeto do tipo Camisa. </li></ul><ul><li>minhaCamisa.preco -> atributo double preco do objeto minhaCamisa. </li></ul><ul><li>minhaCamisa.mostrarDados(); -> Invocação do método mostrarDados() do objeto minhaCamisa. </li></ul>
  46. 46. <ul><li>Valores padrão </li></ul>Variáveis devem sempre ser inicializadas antes do seu uso: <ul><li>public static void main(String[] args { </li></ul><ul><li>int inteiro; </li></ul><ul><li>System.out.println(inteiro); // Erro de compilação! </li></ul><ul><li>} </li></ul><ul><li>public static void main(String[] args { </li></ul><ul><li>int inteiro; </li></ul><ul><li>inteiro = 2; </li></ul><ul><li>System.out.println(inteiro); // Ok! </li></ul><ul><li>} </li></ul>
  47. 47. <ul><li>Valores padrão </li></ul>Atributos são inicializados automaticamente: <ul><li>public class Camisa { </li></ul><ul><li>int id; </li></ul><ul><li>public void mostrarInformacao() { </li></ul><ul><li>System.out.println(id); </li></ul><ul><li>} </li></ul>
  48. 48. <ul><li>Endereçamento na JVM </li></ul>conjunto Memória “Heap” Conjunto conjunto; new Conjunto(); new Camisa(); conjunto.terno = new Terno(); conjunto.camisa = conjunto = conjunto.camisa = null; pilha
  49. 49. <ul><li>Dado que as linhas abaixo lêem dois inteiros digitados na linha de comando: </li></ul><ul><li>Scanner scanner = new Scanner(System.in); </li></ul><ul><li>int a = scanner.nextInt(); </li></ul><ul><li>int b = scanner.nextInt(); </li></ul><ul><li>Escreva um programa Soma.java que leia 3 inteiros da linha de comando e a seguir imprima o resultado da soma desses números. </li></ul><ul><li>Escreva outro programa DivisaoInteiro.java que leia 2 inteiros da linha de comando e a seguir imprima o resultado da divisão do primeiro pelo segundo. </li></ul><ul><li>Escreva outro programa DivisaoDouble.java que leia 2 doubles da linha de comando e a seguir imprima o resultado da divisão do primeiro pelo segundo. </li></ul><ul><li>Calcule a divisão de um número por zero, utilizando DivisãoInteiro.java e DivisãoDouble.java . Analise os resultados. </li></ul><ul><li>Você deve entregar: 3 códigos fonte (Soma, DivisaoInteiro e DivisaoDouble), e pelo menos um parágrafo descrevendo os resultados do exercício 4. </li></ul><ul><li>Identação, clareza e aderência ao Padrão de Codificação Java serão avaliadas. </li></ul><ul><li>Exercícios em casa (entregar até 16/08/2008) </li></ul>

×