1
resposta

[Projeto] SistemaDeNotificacao

package Notificacao;

public class Main {

    public static void main(String[] args) {

        Notificacao email = new Email("cliente@exemplo.com", "Promoção especial!",
                "Aproveite nossos descontos esta semana.");
        Notificacao sms = new Sms("(11) 98765-4321",
                "Sua fatura foi paga com sucesso.");
        Notificacao push = new Push("usuario_app",
                "Novidade!!", "Você tem uma nova mensagem não lida. ");


        email.enviar();
        sms.enviar();
        push.enviar();
    }
}
package Notificacao;

public abstract class Notificacao {

    String destinatario;
    String mensagem;

    public String getDestinatario() {
        return destinatario;
    }

    public String getMensagem() {
        return mensagem;
    }

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

    public abstract void enviar();
}
package Notificacao;


public class Email extends Notificacao{
    String corpo;

    public String getCorpo() {
        return corpo;
    }

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

    @Override
    public void enviar() {
        System.out.printf("\nEnviando Email para: %s\n", getDestinatario());
        System.out.printf("Assunto: %s\n", getMensagem());
        System.out.printf("Corpo: %s\n", getCorpo());
    }
}
package Notificacao;

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

    @Override
    public void enviar() {
        System.out.printf("\nEnviando SMS para: %s\n", getDestinatario());
        System.out.printf("Mensagem: %s\n", getMensagem());
    }
}
package Notificacao;

public class Push extends Notificacao{
    String titulo;

    public String getTitulo() {
        return titulo;
    }

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

    @Override
    public void enviar() {
        System.out.printf("\nEnviando Push para: %s\n", getDestinatario());
        System.out.printf("Título: %s\n", getTitulo());
        System.out.printf("Conteúdo: %s\n", getMensagem());
    }
}
1 resposta

Olá, João! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o abstract para estruturar uma hierarquia de classes com Java, utilizou muito bem a herança para especializar os diferentes tipos de notificações e ainda compreendeu a importância da polimorfismo para permitir que cada classe implemente o método enviar() de forma específica.

Uma dica interessante para o futuro é aplicar interfaces quando quiser definir contratos que diferentes classes possam implementar. Assim:

package Notificacao;

public interface Enviavel {
    void enviar();
}

public class Email implements Enviavel {
    private String destinatario;
    private String assunto;
    private String corpo;

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

    @Override
    public void enviar() {
        System.out.printf("\nEnviando Email para: %s\n", destinatario);
        System.out.printf("Assunto: %s\n", assunto);
        System.out.printf("Corpo: %s\n", corpo);
    }
}

Isso faz com que diferentes tipos de notificações possam seguir o mesmo contrato sem depender de uma classe abstrata.

Conteúdos relacionados

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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