Exercício 03: Funções
Exercício: Funções
Seção intitulada “Exercício: Funções”Código 01
Seção intitulada “Código 01”Reescreva o código abaixo removendo o uso desnecessário de switch/case:
public class Pedido { private double valorTotal; private String tipoCliente; // Pode ser "COMUM", "VIP" ou "FUNCIONARIO"
public Pedido(double valorTotal, String tipoCliente) { this.valorTotal = valorTotal; this.tipoCliente = tipoCliente; }
// Método com uso desnecessário de switch public double calcularDesconto() { double desconto = 0.0; switch (tipoCliente) { case "COMUM": desconto = 0.05; // 5% de desconto break; case "VIP": desconto = 0.10; // 10% de desconto break; case "FUNCIONARIO": desconto = 0.20; // 20% de desconto break; default: desconto = 0.0; // Sem desconto break; } return valorTotal * (1 - desconto); }
// Método para exibir o resumo do pedido public void exibirResumo() { System.out.println("Tipo de Cliente: " + tipoCliente); System.out.println("Valor Original: R$" + valorTotal); System.out.println("Valor com Desconto: R$" + calcularDesconto()); }
public static void main(String[] args) { Pedido pedido1 = new Pedido(100.0, "VIP"); pedido1.exibirResumo(); }}Código 02
Seção intitulada “Código 02”Reescreva o código abaixo removendo as assinaturas de métodos com um número excessivo de parâmetros:
public class GerenciadorPartida {
public void registrarPartida(String timeCasa, String timeVisitante, int golsCasa, int golsVisitante, int posseBolaCasa, int posseBolaVisitante, int chutesCasa, int chutesVisitante, int faltasCasa, int faltasVisitante, int cartoesAmarelosCasa, int cartoesAmarelosVisitante, int cartoesVermelhosCasa, int cartoesVermelhosVisitante) { System.out.println("Partida Registrada:"); System.out.println(timeCasa + " " + golsCasa + " x " + golsVisitante + " " + timeVisitante); System.out.println("Posse de Bola: " + posseBolaCasa + "% - " + posseBolaVisitante + "%"); System.out.println("Chutes: " + chutesCasa + " - " + chutesVisitante); System.out.println("Faltas: " + faltasCasa + " - " + faltasVisitante); System.out.println("Cartões Amarelos: " + cartoesAmarelosCasa + " - " + cartoesAmarelosVisitante); System.out.println("Cartões Vermelhos: " + cartoesVermelhosCasa + " - " + cartoesVermelhosVisitante); }
public void gerarRelatorio(String timeCasa, String timeVisitante, int golsCasa, int golsVisitante, int posseBolaCasa, int posseBolaVisitante, int chutesCasa, int chutesVisitante, int faltasCasa, int faltasVisitante, int cartoesAmarelosCasa, int cartoesAmarelosVisitante, int cartoesVermelhosCasa, int cartoesVermelhosVisitante) { String vencedor = golsCasa > golsVisitante ? timeCasa : (golsCasa < golsVisitante ? timeVisitante : "Empate"); System.out.println("=== Relatório da Partida ==="); System.out.println("Vencedor: " + vencedor); System.out.println("Posse de Bola: " + posseBolaCasa + "% - " + posseBolaVisitante + "%"); System.out.println("Total de Chutes: " + (chutesCasa + chutesVisitante)); System.out.println("Total de Faltas: " + (faltasCasa + faltasVisitante)); System.out.println("Total de Cartões: " + ((cartoesAmarelosCasa + cartoesAmarelosVisitante) + (cartoesVermelhosCasa + cartoesVermelhosVisitante))); }
public static void main(String[] args) { GerenciadorPartida gerenciador = new GerenciadorPartida();
gerenciador.registrarPartida("Time A", "Time B", 2, 1, 55, 45, 10, 8, 15, 12, 3, 2, 1, 0); gerenciador.gerarRelatorio("Time A", "Time B", 2, 1, 55, 45, 10, 8, 15, 12, 3, 2, 1, 0); }}Código 03
Seção intitulada “Código 03”Reescreva o código abaixo sem utilizar parâmetros booleanos nas funções:
public class FilmeService {
public void listarFilmes(boolean apenasDisponiveis) { if (apenasDisponiveis) { System.out.println("Listando apenas filmes disponíveis para locação..."); } else { System.out.println("Listando todos os filmes do catálogo..."); } }
public void atualizarStatusFilme(String titulo, boolean disponivel) { if (disponivel) { System.out.println("O filme \"" + titulo + "\" agora está disponível para locação."); } else { System.out.println("O filme \"" + titulo + "\" foi marcado como indisponível."); } }
public static void main(String[] args) { FilmeService service = new FilmeService();
service.listarFilmes(true); service.listarFilmes(false);
service.atualizarStatusFilme("Inception", true); service.atualizarStatusFilme("Matrix", false); }}Código 04
Seção intitulada “Código 04”Reescreva o código abaixo resolvendo um problema de imulatibilidade que causa um problema com o preço final do produto quando usado mais de uma vez:
class Produto { String nome; double preco;
Produto(String nome, double preco) { this.nome = nome; this.preco = preco; }
void aplicarDesconto(double desconto) { this.preco -= desconto; }}
class CarrinhoDeCompras { Produto produto;
CarrinhoDeCompras(Produto produto) { this.produto = produto; }
void adicionarProdutoAoCarrinho(Produto novoProduto) { this.produto = novoProduto; }
void finalizarCompra() { produto.aplicarDesconto(10.0); }
void mostrarDetalhes() { System.out.println("Produto: " + produto.nome); System.out.println("Preço: " + produto.preco); }}
public class Main { public static void main(String[] args) { Produto produto1 = new Produto("Laptop", 1500.00); CarrinhoDeCompras carrinho = new CarrinhoDeCompras(produto1);
Produto produto2 = new Produto("Smartphone", 1200.00); carrinho.adicionarProdutoAoCarrinho(produto2);
carrinho.finalizarCompra(); carrinho.mostrarDetalhes(); }}Código 05
Seção intitulada “Código 05”Reescreva o código abaixo de forma a métodos com funcionamento muito parecido.
public class Jogo { private int vidaJogador; private int vidaInimigo;
public Jogo(int vidaJogador, int vidaInimigo) { this.vidaJogador = vidaJogador; this.vidaInimigo = vidaInimigo; }
public void atacarJogador(int dano) { vidaJogador -= dano; if (vidaJogador <= 0) { System.out.println("Jogador perdeu!"); } else { System.out.println("Vida do Jogador: " + vidaJogador); } }
public void atacarInimigo(int dano) { vidaInimigo -= dano; if (vidaInimigo <= 0) { System.out.println("Inimigo perdeu!"); } else { System.out.println("Vida do Inimigo: " + vidaInimigo); } }
public int getVidaJogador() { return vidaJogador; }
public int getVidaInimigo() { return vidaInimigo; }}