1
resposta

Desafio: hora da prática

Vamos explorar a implementação prática dos conceitos solicitados:

1. Classe Carro e ModeloCarro

// Classe base
public class Carro {
    private String modelo;
    private double[] precos = new double[3];

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

    public void setPrecos(double ano1, double ano2, double ano3) {
        precos[0] = ano1;
        precos[1] = ano2;
        precos[2] = ano3;
    }

    public void calcularExibirMenorMaiorPreco() {
        double menor = precos[0];
        double maior = precos[0];
        
        for (double preco : precos) {
            if (preco < menor) menor = preco;
            if (preco > maior) maior = preco;
        }
        
        System.out.println("Modelo: " + modelo);
        System.out.println("Menor preço: " + menor);
        System.out.println("Maior preço: " + maior);
    }
}

// Subclasse
public class ModeloCarro extends Carro {
    // Herda toda a funcionalidade da classe Carro
}

// Uso
public class Principal {
    public static void main(String[] args) {
        ModeloCarro fusca = new ModeloCarro();
        fusca.setModelo("Fusca");
        fusca.setPrecos(20000, 21000, 19000);
        fusca.calcularExibirMenorMaiorPreco();
    }
}

2. Classe Animal com Cachorro e Gato

// Classe base
public class Animal {
    public void emitirSom() {
        System.out.println("Som genérico");
    }
}

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

    public void abanarRabo() {
        System.out.println("Abanando o rabo!");
    }
}

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

    public void arranharMoveis() {
        System.out.println("Arranhando móveis!");
    }
}

// Uso
public class Principal {
    public static void main(String[] args) {
        Animal animal1 = new Cachorro();
        Animal animal2 = new Gato();
        
        animal1.emitirSom(); // Au Au!
        animal2.emitirSom(); // Miau!
        
        ((Cachorro) animal1).abanarRabo();
        ((Gato) animal2).arranharMoveis();
    }
}

3. Conta Bancária e Conta Corrente

// Classe base
public class ContaBancaria {
    protected double saldo;

    public void depositar(double valor) {
        if (valor > 0) saldo += valor;
    }

    public void sacar(double valor) {
        if (valor <= saldo) saldo -= valor;
    }

    public double consultarSaldo() {
        return saldo;
    }
}

// Subclasse
public class ContaCorrente extends ContaBancaria {
    public void cobrarTarifaMensal() {
        saldo -= 25.0; // Tarifa fixa
    }
}

// Uso
public class Principal {
    public static void main(String[] args) {
        ContaCorrente conta = new ContaCorrente();
        conta.depositar(1000);
        conta.cobrarTarifaMensal();
        System.out.println("Saldo: " + conta.consultarSaldo());
    }
}

4. Números Primos com Verificação e Geração

// Classe base
public class NumerosPrimos {
    public boolean verificarPrimalidade(int numero) {
        if (numero <= 1) return false;
        for (int i = 2; i <= Math.sqrt(numero); i++) {
            if (numero % i == 0) return false;
        }
        return true;
    }

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

// Subclasses
public class VerificadorPrimo extends NumerosPrimos {
    public void verificarSeEhPrimo(int numero) {
        if (verificarPrimalidade(numero)) {
            System.out.println(numero + " é primo!");
        } else {
            System.out.println(numero + " não é primo!");
        }
    }
}

public class GeradorPrimo extends NumerosPrimos {
    public int gerarProximoPrimo(int ultimoPrimoConhecido) {
        int proximo = ultimoPrimoConhecido + 1;
        while (!verificarPrimalidade(proximo)) proximo++;
        return proximo;
    }
}

// Uso
public class Principal {
    public static void main(String[] args) {
        VerificadorPrimo verificador = new VerificadorPrimo();
        verificador.verificarSeEhPrimo(17);
        
        GeradorPrimo gerador = new GeradorPrimo();
        System.out.println("Próximo primo: " + gerador.gerarProximoPrimo(17));
    }
}
1 resposta

Olá Kauã!

Parabéns pelo excelente trabalho! Colocar os conceitos em prática durante as atividades é uma maneira poderosa de fixar o que aprendemos. Se surgir qualquer dúvida ou se precisar de ajuda, estarei aqui para o que você precisar. Ficarei feliz em poder apoiar!

Desejo muito sucesso nos seus estudos!