1
resposta

Controle de Dispositivos

Achei que a solução de exemplo dada repetia muito código nas classes Luz e Ar Condicionado e bolei uma solução para não ter que repetir tanto código:

public interface Controlavel {

    void ligar();
    void desligar();
}


// DispositivoBase.java (classe abstrata com a lógica comum)
public abstract class DispositivoBase implements Controlavel {
    private boolean ligado = false;

    // Para personalizar o nome que sai na mensagem
    protected abstract String nome();

    @Override
    public void ligar() {
        if (!ligado) {
            ligado = true;
            System.out.println(nome() + " ligado.");
        } else {
            System.out.println(nome() + " já está ligado.");
        }
    }

    @Override
    public void desligar() {
        if (ligado) {
            ligado = false;
            System.out.println(nome() + " desligado.");
        } else {
            System.out.println(nome() + " já está desligado.");
        }
    }

    // Se precisar expor o estado:
    public boolean isLigado() {
        return ligado;
    }
}

// ArCondicionado.java
public class ArCondicionado extends DispositivoBase {
    @Override
    protected String nome() {
        return "Ar-condicionado";
    }
}

// Luz.java
public class Luz extends DispositivoBase {
    @Override
    protected String nome() {
        return "Luz";
    }
}


//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
    public static void main(String[] args) {
        Luz luz = new Luz();
        ArCondicionado ar = new ArCondicionado();

        luz.ligar();
        luz.ligar();
        luz.desligar();

        ar.desligar();
    }
}
1 resposta

Oi, Joao! Como vai?

Agradeço por compartilhar.

Eu gostei da sua análise, principalmente quando você percebeu a repetição de código e propôs uma solução usando herança para centralizar o comportamento comum.

Continue explorando esse tipo de abstração, isso ajuda muito a deixar o código mais organizado e fácil de manter.

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