1
resposta

03.Reaproveitando características e comportamentos. Desafio: hora da prática

class Carro {
    private String modelo;
    private double[] precos = new double[3];

    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    public void setPreco(int ano, double preco) {
        if (ano >= 0 && ano < 3) precos[ano] = preco;
    }

    public double getMenorPreco() {
        double menor = precos[0];
        for (double p : precos) if (p < menor) menor = p;
        return menor;
    }

    public double getMaiorPreco() {
        double maior = precos[0];
        for (double p : precos) if (p > maior) maior = p;
        return maior;
    }

    public void exibirInfo() {
        System.out.println("Modelo: " + modelo);
        for (int i = 0; i < 3; i++) System.out.println("Ano " + (i + 1) + ": R$" + precos[i]);
        System.out.println("Menor: R$" + getMenorPreco() + ", Maior: R$" + getMaiorPreco());
    }
}

class ModeloCarro extends Carro {}
class Animal {
    public void emitirSom() {
        System.out.println("Animal fazendo som...");
    }
}

class Cachorro extends Animal {
    @Override
    public void emitirSom() {
        System.out.println("Au au!");
    }

    public void abanarRabo() {
        System.out.println("Cachorro abanando o rabo.");
    }
}

class Gato extends Animal {
    @Override
    public void emitirSom() {
        System.out.println("Miau!");
    }

    public void arranharMoveis() {
        System.out.println("Gato arranhando os móveis.");
    }
}
class ContaBancaria {
    protected double saldo;

    public void depositar(double v) {
        saldo += v;
    }

    public void sacar(double v) {
        if (v <= saldo) saldo -= v;
        else System.out.println("Saldo insuficiente!");
    }

    public void consultarSaldo() {
        System.out.println("Saldo: R$" + saldo);
    }
}

class ContaCorrente extends ContaBancaria {
    private double tarifa = 10.0;

    public void cobrarTarifaMensal() {
        if (saldo >= tarifa) {
            saldo -= tarifa;
            System.out.println("Tarifa mensal cobrada: R$" + tarifa);
        } else System.out.println("Saldo insuficiente para tarifa.");
    }
}
class ContaBancaria {
    protected double saldo;

    public void depositar(double v) {
        saldo += v;
    }

    public void sacar(double v) {
        if (v <= saldo) saldo -= v;
        else System.out.println("Saldo insuficiente!");
    }

    public void consultarSaldo() {
        System.out.println("Saldo: R$" + saldo);
    }
}

class ContaCorrente extends ContaBancaria {
    private double tarifa = 10.0;

    public void cobrarTarifaMensal() {
        if (saldo >= tarifa) {
            saldo -= tarifa;
            System.out.println("Tarifa mensal cobrada: R$" + tarifa);
        } else System.out.println("Saldo insuficiente para tarifa.");
    }
}
class NumerosPrimos {
    public boolean verificarPrimalidade(int n) {
        if (n <= 1) return false;
        for (int i = 2; i <= Math.sqrt(n); i++)
            if (n % i == 0) return false;
        return true;
    }

    public void listarPrimos(int limite) {
        System.out.print("Primos até " + limite + ": ");
        for (int i = 2; i <= limite; i++)
            if (verificarPrimalidade(i)) System.out.print(i + " ");
        System.out.println();
    }
}

class VerificadorPrimo extends NumerosPrimos {
    public void verificarSeEhPrimo(int n) {
        System.out.println(n + (verificarPrimalidade(n) ? " é primo." : " não é primo."));
    }
}

class GeradorPrimo extends NumerosPrimos {
    private int ultimo = 1;

    public int gerarProximoPrimo() {
        int num = ultimo + 1;
        while (!verificarPrimalidade(num)) num++;
        ultimo = num;
        return num;
    }
}
public class Main {
    public static void main(String[] args) {
        ModeloCarro carro = new ModeloCarro();
        carro.setModelo("Civic");
        carro.setPreco(0, 85000); carro.setPreco(1, 87000); carro.setPreco(2, 83000);
        carro.exibirInfo();

        Animal a1 = new Cachorro();
        a1.emitirSom(); ((Cachorro)a1).abanarRabo();
        Animal a2 = new Gato();
        a2.emitirSom(); ((Gato)a2).arranharMoveis();

        ContaCorrente cc = new ContaCorrente();
        cc.depositar(100); cc.consultarSaldo();
        cc.cobrarTarifaMensal(); cc.consultarSaldo();
        cc.sacar(50); cc.consultarSaldo();

        VerificadorPrimo vp = new VerificadorPrimo();
        vp.verificarSeEhPrimo(17); vp.verificarSeEhPrimo(20);

        GeradorPrimo gp = new GeradorPrimo();
        System.out.println("Próximos primos:");
        for (int i = 0; i < 5; i++) System.out.println(gp.gerarProximoPrimo());
    }
}
1 resposta

Oi, Gabrielly! Como vai?

Você trouxe um conjunto bem completo de classes, explorando herança, sobrescrita de métodos e até lógica com números primos. É ótimo ver esse tipo de prática reunindo diferentes conceitos de orientação a objetos de forma clara e funcional.

Bons estudos!