1
resposta

Controle de Dispositivo

package Relatorio.ControleDeDispositivos;

public interface Controlavel {

    String ligado();

    String desligado();
}

package Relatorio.ControleDeDispositivos;

public class Luz implements Controlavel {

    private boolean ligado = false;

    @Override
    public String ligado() {
      if (!ligado) {
          ligado = true;
          return "Luz ligada";
      } else
          return "Luz já está ligada";
    }

    @Override
    public String desligado() {
        if (ligado) {
            ligado = false;
            return "Luz desligada";
        } else
            return "Luz já está desligada";
    }
}

package Relatorio.ControleDeDispositivos;

public class ArCondicionado implements Controlavel{

    private boolean ligado = false;

    @Override
    public String ligado() {
        if (!ligado) {
            ligado = true;
            return "Ar condicionado ligado";
        } else
            return "Ar condicionado já está ligado";
    }

    @Override
    public String desligado() {
        if (ligado) {
            ligado = false;
            return "Ar condicionado desligado";
        } else
            return "Ar condicionado já está desligado";
    }
}

package Relatorio.ControleDeDispositivos;

public class Principal {
    public static void main(String[] args) {

        Luz luz = new Luz();
        System.out.println(luz.ligado());
        System.out.println(luz.ligado());
        System.out.println(luz.desligado());
        System.out.println(luz.desligado());

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

        ArCondicionado ar = new ArCondicionado();
        System.out.println(ar.ligado());
        System.out.println(ar.ligado());
        System.out.println(ar.desligado());
        System.out.println(ar.desligado());
    }
}
1 resposta

Oi, Wanderson! Como vai?

Agradeço por compartilhar.

Gostei bastante de como você aplicou a interface Controlavel nas classes Luz e ArCondicionado, mantendo um comportamento consistente entre os dispositivos. O uso do atributo booleano para controlar o estado está bem organizado e facilita o entendimento do fluxo.

Você pode usar métodos com nomes mais descritivos como ligar() e desligar() ao invés de retornar String, separando ação de mensagem.


public void ligar() {
    ligado = true;
}

public boolean estaLigado() {
    return ligado;
}

Esse código separa responsabilidade: um método altera o estado e outro consulta, deixando o código mais flexível para evoluções futuras.

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