Escolar Documentos
Profissional Documentos
Cultura Documentos
Verso: 0.2
De forma similar, outros mtodos podem ser definidos pelo usurio para executar blocos de cdigo repetidos vrias vezes. Por exemplo, uma funo fatorial (recursiva) pode ser implementada em um mtodo como segue:
[1] [2] [3] [4] [5] [6]
public static long fatorial(long n) { return n>1?n*fatorial(n - 1):1; } [1] Mtodos pblicos podem ser acessados por outras classes. Em POO, mtodos tambm podem ser privados e protegidos, por enquanto utilizaremos apenas mtodos pblicos. [2] Lembre-se tambm que mtodos declarados como estticos apenas podem acessar mtodos e variveis de classe estticas (no instanciadas em objetos, ou nicas da classe). [3] O tipo da varivel retornada pelo mtodo deve ser declarado ou identificado por void (vazio) no caso do mtodo no retornar nada. [4] A nomenclatura segue as mesmas regras de variveis, como estudado (http://drop.io/Processamento/asset/00-introd-prog-java-com-netbeans-pdf ). [5] Definimos os parmetros de entrada do mtodo declarando as variveis locais que recebero os valores, separadas por vrgula, (existiro somente no escopo do mtodo). [6] Caso o mtodo no tenha sido declarado como void (vazio), o mtodo dever incluir um comando return, que finaliza a execuo do mtodo e retorna ao ponto de chamada o valor indicado. Mtodos podem ser copiados e reutilizados em novos projetos. Mtodos declarados pblicos podem ser acessados externamente por qualquer classe, simplificando o cdigo principal, o que particularmente til em projetos com cdigos extensos. Para utilizar uma classe externa, basta import-la no incio da classe, caso no esteja no mesmo projeto. Quando utilizamos o mtodo Math.pow(2,6) para efetuar a operao 26, estamos chamando o mtodo pow (exponenciao) da classe padro Math, que oferece funes (ex. sin(), cos(), random(), etc.) e constantes (Math.PI e Math.E ) matemticas. Classes padro do Java como System (chamadas do sistema), Math , String, Integer, Double, etc. so automaticamente includas. As demais devem ser manualmente especificadas, como java.util.Scanner e javax.swing.JOptionPane.
* Sobrecarregar mtodos significa criar vrios mtodos com mesmo nome, porem que operam com tipos de variveis diferentes, aceitem parmetros adicionais ou de tipos diferentes.
public class Main { /** Variveis de classe ou "variveis Globais" o modificador final indica uma constante */ final static double Poupanca = 1.0055; // + 0,55% ao mes na media final static double CDB = 1.0075; // + 0,75% ao mes final static double LTN = 1.01; // + 1% ao mes final static double Multimercado = 1.014; // + 1,4% ao mes final static double taxaAnual = 0.01; // - 1% ao ano public static void main(String[] args) { double inicial = ler("Qual o valor investido? ", 1000f); double complemento = ler("Qual o complemento mensal? ", 0f); double objetivo = ler("Qual o seu objetivo? ", 1000000f); String frase = String.format( "O tempo para um investimento de R$ %,.2f com aplicaes "+ "mensais de R$ %,.2f\n atingir R$ %,.2f :\n\n", inicial, complemento, objetivo); int meses = 0; double saldo = inicial; double juros = Poupanca; while (saldo < objetivo) { meses++; saldo = saldo * juros + complemento; } frase += String.format("%d meses (%d anos) na poupanca\n", meses, meses / 12); meses = 0; saldo = inicial; juros = CDB; while (saldo < objetivo) { meses++; saldo = saldo * juros + complemento; } frase += String.format( "%d meses (%d anos) no CDB\n", meses, meses / 12); meses = 0; saldo = inicial; juros = LTN; while (saldo < objetivo) { meses++; saldo = saldo * juros + complemento; } frase += String.format( "%d meses (%d anos) em Letras do Tesouro Nacional\n", meses, meses / 12); meses = 0; saldo = inicial; juros = Multimercado; while (saldo < objetivo) { meses++; saldo = saldo * juros + complemento; if (meses % 12 == 0) saldo -= saldo * taxaAnual; } frase += String.format( "%d meses (%d anos) em Fundos Multimercado\n", meses, meses / 12); JOptionPane.showMessageDialog(null, frase); }
b) Modularize o cdigo de forma que o novo mtodo main contenha apenas um comando, como segue: public static void main(String[] args) { JOptionPane.showMessageDialog(null, frase(), "Planejamento financeiro", JOptionPane.CLOSED_OPTION); } public static String frase() { double i = ler("Qual o valor investido? ", 1000f); double c = ler("Qual o complemento mensal? ", 0f); double o = ler("Qual o objetivo? ", 1000000f); return String.format("O tempo para um investimento de R$ %,.2f\n" + "com aplicacoes mensais de R$ %,.2f atingir R$ %,.2f " + "seria:\n\n" + tempo("na Poupanca", .55, 0, i,c,o) + tempo("no CDB", .75, 0, i,c,o) + tempo("em Letras do Tesouro Nacional", 1.1, 0,i,c,o) + tempo("em Fundos Multimercado", 1.5, 1, i,c,o),i,c,o); } public static String tempo(String s, double juros, double taxa, double saldo, double complemento, double objetivo) {...
a) Note que houve um erro ao utilizar valores de ponto flutuante. Isso ocorre porque o Java considera valores de dupla preciso como padro. Uma soluo acrescentar um f no final do nmero, indicando que este do tipo float. b) Modifique a classe Cubo para que opere com double. c) Crie um mtodo para testar a isometria do cubo, retornando true se as laterais do cubo forem iguais. d) Crie um mtodo que retorne a rea de superfcie do cubo.
3. Exerccios para Casa 3.1. Construa uma subclasse que receba um valor raio, que pode ser passado por byte, int, long,
float ou double. Crie mtodos distintos para retornar (em double): a) o permetro da circunferncia; b) a rea do circulo; c) o volume da esfera;
3.3. Crie uma classe Temperatura que receba uma temperatura em graus Celsius, Fahrenheit e Kelvin atravs dos mtodos celsius(t), kelvin(t) e fahrenheit(t) (sobrecarregados) em qualquer formato (byte, int, long, float ou double) realizando as converses necessrias. Um mtodo
toString() deve retornar uma String no seguinte formato: "%f C = %f F = % K".