Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

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

Classe Program:

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

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

Interface INotificacao:

namespace Polimorfismo.NotificacoesDeSistema;

internal interface INotificacao
{
    public void EnviarMensagem(string mensagem);
}

Classe EmailNotificacao:

namespace Polimorfismo.NotificacoesDeSistema;

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

Classe SmsNotificacao:

namespace Polimorfismo.NotificacoesDeSistema;

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

Classe PushNotificacao:

namespace Polimorfismo.NotificacoesDeSistema;

internal class PushNotificacao : INotificacao
{
    public void EnviarMensagem(string mensagem)
    {
        Console.WriteLine($"Enviando PUSH: {mensagem}");
    }
}
1 resposta
solução!

Oi, Fabiano! Como vai?

Gostei da forma como você aplicou o polimorfismo de subtipos utilizando a interface INotificacao. Sua implementação ficou organizada e demonstra bem como diferentes classes podem responder ao mesmo método EnviarMensagem(), permitindo que o foreach trate todas as notificações de maneira uniforme. Isso mostra um bom entendimento do conceito de abstração e reutilização de código.

Uma dica interessante para o futuro é utilizar override ToString() para personalizar a exibição de objetos quando necessário. Veja este exemplo:


class Usuario
{
    public string Nome { get; set; }

    public override string ToString()
    {
        return Nome;
    }
}

Usuario usuario = new();
usuario.Nome = "Fabiano";

Console.WriteLine(usuario);

Neste exemplo, o método ToString() retorna o nome do usuário quando o objeto for exibido no console, tornando a saída mais amigável e personalizada.

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