1
resposta

[Projeto] Faça como eu fiz: notificações de sistema

interface INotificacao
{
    void EnviarMensagem(string mensagem);
}

class EmailNotificacao : INotificacao
{
    public void EnviarMensagem(string mensagem)
    {
        Console.WriteLine($"Enviando E-MAIL: {mensagem}");
    }
}

class SmsNotificacao : INotificacao
{
    public void EnviarMensagem(string mensagem)
    {
        Console.WriteLine($"Enviando SMS: {mensagem}");
    }
}

class PushNotificacao : INotificacao
{
    public void EnviarMensagem(string mensagem)
    {
        Console.WriteLine($"Enviando PUSH: {mensagem}");
    }
}

List<INotificacao> notificacoes = new List<INotificacao>
{
    new EmailNotificacao(),
    new SmsNotificacao(),
    new PushNotificacao()
};

foreach (var notificacao in notificacoes)
{
    notificacao.EnviarMensagem("Sistema fora do ar!");
}
1 resposta

Oi, Eduardo! Como vai?

Agradeço por compartilhar.

Você aplicou muito bem o conceito de polimorfismo por subtipos, usando a interface INotificacao para permitir que EmailNotificacao, SmsNotificacao e PushNotificacao sejam tratados de forma padronizada no foreach.

Uma dica interessante para o futuro é usar um método separado para enviar todas as notificações, deixando o código mais organizado e fácil de reutilizar:


static void EnviarTodas(List<INotificacao> notificacoes, string mensagem)
{
    foreach (var notificacao in notificacoes)
    {
        notificacao.EnviarMensagem(mensagem);
    }
}

Esse código recebe uma lista de notificações e uma mensagem, depois chama o metodo EnviarMensagem em cada objeto da lista.

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