Baixe o app para aproveitar ainda mais
Prévia do material em texto
Exercícios revisão POO I Crie um método estático que receba um verbo regular terminado em AR e mostre a conjugação no presente. Exemplo: Verbo Andar Eu ando Tu andas Ele anda Nós andamos Vós andais Eles andam public static void conjuga(String verbo){ if(verbo.endsWith("ar")){ String inicio = verbo.substring(0, verbo.length()-2); System.out.println("Eu " + inicio + "o"); System.out.println("Tu " + inicio + "as"); System.out.println("Ele " + inicio + "a"); System.out.println("Nós " + inicio + "amos"); System.out.println("Vós " + inicio + "ais"); System.out.println("Eles " + inicio + "am"); } } Escreva a classe ConversaoDeUnidadesDeTempo com métodos estáticos para conversão aproximada das unidades de velocidade segundo a lista abaixo. • 1 minuto = 60 segundos • 1 hora = 60 minutos • 1 dia = 24 horas • 1 semana = 7 dias • 1 mês = 30 dias public class ConversaoDeUnidadesDeTempo{ public static double min2sec(double min){ return min * 60; } public static double sec2min(double sec){ return sec / 60; } public static double ho2min(double ho){ return ho * 60; } public static double min2ho(double min){ return min / 60; } public static double dia2ho(double dia){ return dia * 24; } public static double ho2dia(double ho){ return ho / 24; } public static double sem2dia(double sem){ return sem * 7; } public static double dia2sem(double dia){ return dia / 7; } public static double mes2dia(double mes){ return mes * 30; } public static double dia2mes(double dia){ return dia / 30; } public static void main(String[] args){ System.out.println(dia2ho(2)); System.out.println(ho2dia(24)); } } Escreva uma classe chamada Aluno com os campos matricula (int) e nome String. Essa classe também deve ter um campo numMatricula declarado como static, e que incremente o valor desse campo cada vez que uma instância da classe for criada e seja atribuído ao campo matricula. public class Aluno { private int matricula; private String nome; private static int numMatricula=0; public int getMatricula() { return matricula; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public Aluno(String nome) { this(); this.nome = nome; } public Aluno(){ this.matricula = ++numMatricula; } @Override public String toString() { return "Aluno{" + "matricula=" + matricula + ", nome=" + nome + '}'; } } Escreva uma classe que contenha métodos estáticos para retornar o maior de dois, três, quatro e cinco valores inteiros. public class CalculaMaiores { public static int maior(int n1, int n2){ return (n1>n2)?n1:n2; } public static int maior(int n1, int n2, int n3){ return (maior(n1,n2)>n3)?maior(n1,n2):n3; } public static int maior(int n1, int n2, int n3, int n4){ return (maior(n1,n2,n3)>n4)?maior(n1,n2,n3):n4; } public static int maior(int n1, int n2, int n3, int n4, int n5){ return (maior(n1,n2,n3,n4)>n5)?maior(n1,n2,n3,n4):n5; } } Escreva um método estático que recebe como parâmetros uma List<Double> e um double e retorna a quantidade dos elementos dessa coleção que é maior que o número passado. public static int ex03(List<Double> l, double n){ int t = 0; for(int i=0; i<l.size(); i++) if(l.get(i)>n) t++; return t; } Crie uma classe Empregado com os atributos nome (String) e salario (Double). Implemente um construtor sobrecarregado que receba todos os parâmetros dessa classe. Os objetos dessa classe devem ser capazes de serem ordenados em um List através do valor de seu salário, para tanto essa classe deve implementar a interface Comparable<Object>. public class Empregado implements Comparable{ private Double Salario; private String nome; public Double getSalario() { return Salario; } public void setSalario(Double Salario) { this.Salario = Salario; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public Empregado(Double Salario, String nome) { this.Salario = Salario; this.nome = nome; } @Override public int compareTo(Object o) { if(o instanceof Empregado){ Empregado e = (Empregado) o; return this.Salario.compareTo(e.getSalario()); } return -1; } Observe o método a seguir public static void divide(int dividendo, int divisor) { System.out.println("Divisão = " + (dividendo / divisor)); } Implemente a exceção (classe) ExcecaoDivisaoPorZero. Esta exceção será lançada pelo método divide e é filha direta da classe Exception public class ExcecaoDivisaoPorZero extends Exception { public ExcecaoDivisaoPorZero(String message) { super(message); } } Altere o método divide para que o mesmo além de obrigar a utilização de controle de exceção também lance uma mensagem personalizada public static void divide(int dividendo, int divisor) throws ExcecaoDivisaoPorZero { if(divisor!=0) System.out.println("Divisão = " + (dividendo / divisor)); else throw new ExcecaoDivisaoPorZero("O divisor não pode ser zero"); } try{ divide(1,1); }catch(ExcecaoDivisaoPorZero e){ System.out.println(e.getMessage()); }catch(Exception e){ System.out.println(e.getMessage()); }finally{ System.out.println("finalizando"); } Escreva um método public static void trocaPalavras(List<String> lista, int n, String p) que recebe uma coleção de String e troca as palavras dessa lista com exatamente n caracteres, onde n é um inteiro, por outra palavra p. Esse método verifica se uma palavra da lista possui n caracteres de tamanho e a substitui pela palavra p passada como parâmetro. public static void trocaPalavras(List<String> l, int n, String p){ for(int i=0; i<l.size(); i++) if(l.get(i).length()==n) l.set(i, p); } Uma aplicação que usa o padrão MVC tem uma classe Controle. Essa classe tem um método public void criarCliente(String nome, int codigo). Esse método deve criar um novo cliente, mas antes verifica se o codigo passado como parâmetro é válido. Caso o método decida que o codigo é inválido, deve abortar a criação do novo cliente, e lançar uma exceção de nome CodigoInvalidoException. Caso seja válido deve checar em seguida se já existe um cliente com esse codigo em um List que armazena clientes. Se o codigo já constar nessa lista, deve lançar uma exceção de nome CodigoDuplicadoException. Caso nenhuma dessas situações ocorra, deve criar um novo cliente, e inserir esse cliente na lista. Sabendo que na classe Cliente existe um construtor public Cliente(String nome, int codigo) além de getters e setters para os seus atributos, e na classe Controle existe um List<Cliente> com o nome clientes que armazena clientes, faça: Escreva o método boolean checarCodigo(int codigo) que verifica se um código é válido ou não. Um código válido é um número maior que 999 e menor que 10000. Escreva o método boolean existeCodigo(int codigo) que verifica se existe um cliente armazenado na lista com o código passado como parâmetro. Escreva o método public void criarCliente(String nome, int codigo) com as verificações necessárias e o lançamento das exceções solicitadas public booleanchecarCodigo(int codigo){ if(codigo>999 && codigo<10000) return true; return false; } public boolean existeCodigo(int codigo){ for(int i=0; i<clientes.size(); i++) if(clientes.get(i).getCodigo()==codigo) return true; return false; } public void criarCliente(String nome, int codigo) throws CodigoInvalidoException, CodigoDuplicadoException{ if(!checarCodigo(codigo)) throw new CodigoInvalidoException(); if(existeCodigo(codigo)) throw new CodigoDuplicadoException(); this.clientes.add(new Cliente(nome, codigo)); }
Compartilhar