1
resposta

[Projeto] Sistema de notificação

package notificacao.de.sistema;

public abstract class Notificacao {
    protected String destinatario;
    protected String mensagem;

    public Notificacao(String destinatario, String mensagem) {
        this.destinatario = destinatario;
        this.mensagem = mensagem;
    }

    public abstract void enviar();

}

package notificacao.de.sistema;

public class Email extends Notificacao implements MensagemNotificacao{
    private String assunto;

    public Email(String destinatario, String mensagem, String assunto) {
        super(destinatario, mensagem);
        this.assunto = assunto;
    }

    public String mensagemNotificacao(){
        return """
                Enviando E-mail para: %s
                Assunto: %s
                Corpo: %s
                """.formatted(destinatario, assunto, mensagem);
    }

    @Override
    public void enviar() {
        System.out.println(mensagemNotificacao());
    }
}

package notificacao.de.sistema;

public class SMS extends Notificacao{
    public SMS(String destinatario, String mensagem) {
        super(destinatario, mensagem);
    }

    @Override
    public void enviar() {
        System.out.println("Enviando SMS para: " + destinatario +"\n" + "Mensagem: " + mensagem + "\n");
    }
}

package notificacao.de.sistema;

public class Push extends Notificacao implements MensagemNotificacao{
    private String titulo;

    public Push(String destinatario, String mensagem, String titulo) {
        super(destinatario, mensagem);
        this.titulo = titulo;
    }

    public String mensagemNotificacao(){
        return """
                Enviando Push para: %s
                Titulo: %s
                Conteúdo: %s
                """.formatted(destinatario, titulo, mensagem);
    }

    @Override
    public void enviar() {
        System.out.println(mensagemNotificacao());
    }
}

package notificacao.de.sistema;

public interface MensagemNotificacao {
    public String mensagemNotificacao();
}

package notificacao.de.sistema;

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

        Email email1 = new Email("cliente@exemplo.com", "Aproveite nossos descontos esta semana.", "Promoção especial!");
        SMS sms1 = new SMS("(99) 98888-8888", "Sua fatura foi paga com sucesso");
        Push push1 = new Push("usuario_app ", "Você tem uma nova mensagem não lida.", "Novidade!");

        email1.enviar();
        sms1.enviar();
        push1.enviar();
    }
}
1 resposta

Oi, Augusto! Como vai?

Agradeço por compartilhar.

Gostei da sua implementação do sistema de notificação, importante notar como você aplicou bem herança e polimorfismo ao usar a classe abstrata Notificacao e sobrescrever o método enviar() em cada tipo, deixando o código organizado e fácil de entender.

Continue explorando esse modelo, você está no caminho certo ao separar responsabilidades e usar interfaces quando faz sentido.

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