1
resposta

[Projeto] ControleDoNivelDeBateria

package br.com.nadson.desafiosc8.modelo;

public class Bateria {

    private final int capacidade = 100;
    private int nivelCarga;

    public Bateria() {
        this.nivelCarga = 0;
    }

    public void carregar(int quantidade) {
        if (quantidade < 0) {
            throw new IllegalArgumentException("Quantidade de carga inválida: " + quantidade);
        }
        setNivelDeCarga(nivelCarga + quantidade);
    }

    public void usar(int quantidade) {
        if (quantidade < 0) {
            throw new IllegalArgumentException("Quantidade de uso inválida: " + quantidade);
        }
        setNivelDeCarga(nivelCarga - quantidade);
    }

    public void setNivelDeCarga(int valor) {
        if (valor < 0) {
            System.out.println("Valor inválido (" + valor + "). Nível de carga não pode ser negativo. Ajustado para 0.");
            this.nivelCarga = 0;
        } else if (valor > capacidade) {
            System.out.println("Valor inválido (" + valor + "). Nível de carga não pode ultrapassar " + capacidade + ". Ajustado para 100.");
            this.nivelCarga = capacidade;
        } else {
            this.nivelCarga = valor;
        }
    }

    public NivelCarga mostrarNivelDeCarga() {
        if (nivelCarga <= 30) {
            return NivelCarga.BAIXO;
        } else if (nivelCarga <= 70) {
            return NivelCarga.MEDIO;
        } else {
            return NivelCarga.ALTO;
        }
    }

    @Override
    public String toString() {
        return "Bateria [capacidade=" + capacidade + "mAh, nivelCarga=" + nivelCarga + "mAh, nivel=" + mostrarNivelDeCarga() + "]";
    }

    public enum NivelCarga {
        BAIXO, MEDIO, ALTO
    }
}
package br.com.nadson.desafiosc8.principal;

import br.com.nadson.desafiosc8.modelo.Bateria;

public class ControleDoNivelDeBateria {
    public static void main(String[] args) {
        
    
        Bateria bateria1 = new Bateria();
        bateria1.setNivelDeCarga(50);
        bateria1.carregar(30);
        System.out.println("Bateria 1: " + bateria1.mostrarNivelDeCarga());
        System.out.println(bateria1);

        System.out.println("----------------------------");

        Bateria bateria2 = new Bateria();
        bateria2.setNivelDeCarga(80);
        bateria2.usar(40);
        System.out.println("Bateria 2: " + bateria2.mostrarNivelDeCarga());
System.out.println(bateria2);
        System.out.println("----------------------------");

        Bateria bateria3 = new Bateria();
        bateria3.setNivelDeCarga(200);   
        System.out.println("Bateria 3: " + bateria3.mostrarNivelDeCarga());
System.out.println(bateria3);
        System.out.println("----------------------------");

        Bateria bateria4 = new Bateria();
        bateria4.setNivelDeCarga(-20);   
        System.out.println("Bateria 4: " + bateria4.mostrarNivelDeCarga());
System.out.println(bateria4);
    
    }
}

1 resposta

Ei! Tudo bem, Nadson?

Seu projeto ficou muito bem estruturado, parabéns! O conceito de encapsulamento ficou bem aplicado, controlou bem os limites da carga da bateria e usou validações coerentes nos métodos carregar, usar e setNivelDeCarga. O uso do enum para representar o nível da bateria foi um ótimo acerto e deixou o código mais legível.

Excelente prática! Continue assim e qualquer dúvida, compartilhe no fórum.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!