2
respostas

[Projeto] Desafio hora prática

1)

package br.com.alura.screenmatch.modelos;

public class Carro {
    
    private String modelo;
    private double precoAno1;
    private double precoAno2;
    private double precoAno3;

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

    public void definirPrecos(double precoAno1, double precoAno2, double precoAno3) {
        this.precoAno1 = precoAno1;
        this.precoAno2 = precoAno2;
        this.precoAno3 = precoAno3;
    }

    public void exibirInfo() {
        System.out.println("Modelo: " + modelo);
        System.out.println("Preço Ano 1: " + precoAno1);
        System.out.println("Preço Ano 2: " + precoAno2);
        System.out.println("Preço Ano 3: " + precoAno3);
        System.out.println("Menor Preço: " + calcularMenorPreco());
        System.out.println("Maior Preço: " + calcularMaiorPreco());
    }

    private double calcularMenorPreco() {
        double menorPreco = precoAno1;
        if (precoAno2 < menorPreco) {
            menorPreco = precoAno2;
        }
        if (precoAno3 < menorPreco) {
            menorPreco = precoAno3;
        }
        return menorPreco;
    }

    private double calcularMaiorPreco() {
        double maiorPreco = precoAno1;
        if (precoAno2 > maiorPreco) {
            maiorPreco = precoAno2;
        }
        if (precoAno3 > maiorPreco) {
            maiorPreco = precoAno3;
        }
        return maiorPreco;
    }
}
package br.com.alura.screenmatch.modelos;

public class ModeloCarro extends Carro{
    private String cor;

    public String getCor() {
        return cor;
    }

    public void setCor(String cor) {
        this.cor = cor;
    }

    @Override
    public void exibirInfo() {
        super.exibirInfo();
        System.out.println("Cor do veiculo: " + getCor());

    }
}
import br.com.alura.screenmatch.modelos.ModeloCarro;

public class Principal {
    public static void main(String[] args) {
        ModeloCarro meuCarro = new ModeloCarro();
        meuCarro.definirModelo("Sedan");
        meuCarro.setCor("vermelho");
        meuCarro.definirPrecos(30000, 32000, 35000);
        meuCarro.exibirInfo();
    }
}

2)

package br.com.alura.screenmatch.modelos;

public class Animal {

    public void emitirSom() {
        System.out.println("Som do animal");;
    }
}
package br.com.alura.screenmatch.modelos;

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

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

}
package br.com.alura.screenmatch.modelos;

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

    public void arranharMoveis() {
        System.out.println("Gato arranhando móveis");
    }
}
import br.com.alura.screenmatch.modelos.Cachorro;
import br.com.alura.screenmatch.modelos.Gato;

public class AnimalTeste {
    public static void main(String[] args) {
        Cachorro cachorro = new Cachorro();
        cachorro.emitirSom();
        cachorro.abanarRabo();

        Gato gato = new Gato();
        gato.emitirSom();
        gato.arranharMoveis();
    }
}
2 respostas

3)

package br.com.alura.screenmatch.modelos;

public class ContaBancaria {
    private double saldo = 0;

    public double getSaldo() {
        return saldo;
    }

    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }

    public void depositar(double valor) {
        this.saldo += valor;  // Soma o valor ao saldo atual
        System.out.println("Depósito de " + valor + " realizado. Saldo atual: " + getSaldo());
    }

    public void sacar(double valor) {
        if (valor <= saldo) {
            this.saldo -= valor;
            System.out.printf("Saque de " , valor , " realizado. Saldo atual: %2.f %n", getSaldo());
        } else {
            System.out.println("Saldo insuficiente para saque.");
        }

    }

    public void consultarSaldo() {
        System.out.printf("Saldo atual: %.2f %n" , getSaldo());
    }
}
package br.com.alura.screenmatch.modelos;

public class ContaCorrente extends ContaBancaria{
    private double tarifaMensal = 0.20;

    public void cobrarTarifaMensal() {
        double saldoAtual = getSaldo();
        saldoAtual -= tarifaMensal;
        setSaldo(saldoAtual);
        System.out.println("Tarifa mensal de " + tarifaMensal + " cobrada. Saldo atual: " + saldoAtual);
    }

    @Override
    public void depositar(double valor) {
        // Utiliza o método setSaldo para somar ao saldo da ContaBancaria
        double saldoAtual = getSaldo();  // Pega o saldo atual
        saldoAtual += valor;             // Soma o valor ao saldo
        setSaldo(saldoAtual);            // Atualiza o saldo usando o setSaldo
        System.out.println("Depósito de " + valor + " realizado. Saldo atual na conta-corrente: " + getSaldo());
    }

}
import br.com.alura.screenmatch.modelos.ContaBancaria;
import br.com.alura.screenmatch.modelos.ContaCorrente;

public class ContaBancariaTeste {
    public static void main(String[] args) {
        // Criando uma conta bancária com saldo inicial de 1000
        ContaBancaria conta = new ContaBancaria();
        conta.depositar(2000);
        conta.consultarSaldo();

        // Realizando operações na conta corrente
        ContaCorrente contaCorrente = new ContaCorrente();
        contaCorrente.depositar(300);
        contaCorrente.cobrarTarifaMensal();
        contaCorrente.consultarSaldo();
        contaCorrente.sacar(250);
        contaCorrente.consultarSaldo();
    }
}

4)

package br.com.alura.screenmatch.modelos;

public class GeradorPrimo extends NumerosPrimos {
    public int gerarProximoPrimo(int ultimoPrimoConhecido) {
        int proximoNumero = ultimoPrimoConhecido + 1;
        while (!verificarPrimalidade(proximoNumero)) {
            proximoNumero++;
        }
        return proximoNumero;
    }
}
package br.com.alura.screenmatch.modelos;

public class NumerosPrimos {

    public boolean verificarPrimalidade(int numero) {
        if (numero <= 1) {
            return false;
        }
        for (int i = 2; i * i <= numero; i++) {
            if (numero % i == 0) {
                return false;
            }
        }
        return true;
    }

    public void listarPrimos(int limiteSuperior) {
        System.out.println("Números primos até " + limiteSuperior + ": ");
        for (int i = 2; i <= limiteSuperior; i++) {
            if (verificarPrimalidade(i)) {
                System.out.print(i + " ");
            }
        }
        System.out.println();
    }
}
package br.com.alura.screenmatch.modelos;

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.");
        }
    }
}
import br.com.alura.screenmatch.modelos.GeradorPrimo;
import br.com.alura.screenmatch.modelos.NumerosPrimos;
import br.com.alura.screenmatch.modelos.VerificadorPrimo;

public class NumerosPrimosTeste {
    public static void main(String[] args) {
        VerificadorPrimo verificador = new VerificadorPrimo();
        verificador.verificarSeEhPrimo(29);

        GeradorPrimo gerador = new GeradorPrimo();
        int proximoPrimo = gerador.gerarProximoPrimo(29);
        System.out.println("O próximo primo após 29 é: " + proximoPrimo);

        NumerosPrimos numerosPrimos = new NumerosPrimos();
        numerosPrimos.listarPrimos(30);
    }
}

Oi Smalley,

Excelente trabalho com os exercícios de orientação a objetos! 👍

No primeiro exercício, você criou uma hierarquia de classes Carro e ModeloCarro, demonstrando herança e sobrescrita de método. 🚗

No segundo, você explorou polimorfismo com a classe Animal e suas subclasses Cachorro e Gato. 🐾

No terceiro, você implementou uma hierarquia de classes para ContaBancaria e ContaCorrente, com métodos de depósito, saque e tarifa. 💸

E no quarto, você trabalhou com números primos, criando classes para verificar, gerar e listar primos. 🧠

Todos os exercícios estão bem estruturados e seguem os princípios de orientação a objetos.

🤓 Para saber mais: Documentação oficial sobre herança em Java

Continue praticando e explorando os conceitos de OO! 💪