Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio: hora da prática - Atividade 04

Program.cs

using Mensagem.Modelos;

Sms sms = new();
Email email = new();

Console.Clear();
Console.WriteLine("1. SMS");
Console.WriteLine("2. Email");
Console.Write("Escolha: ");
int escolha; int.TryParse(Console.ReadLine()!, out escolha);

switch(escolha) {
    case 1: sms.EnviarNotificacao(); break;
    case 2: email.EnviarNotificacao(); break;
}

Sms.cs

namespace Mensagem.Modelos;
internal class Sms : INotificavel {
    public void EnviarNotificacao() {
        Console.Clear();
        Console.WriteLine("Chegou uma mensagem no seu celular.");
        Console.ReadKey();
    }
}

Email.cs

namespace Mensagem.Modelos;
internal class Email : INotificavel {
    public void EnviarNotificacao() {
        Console.Clear();
        Console.WriteLine("Chegou uma mensagem no seu email.");
        Console.ReadKey();
    }
}

INotificavel.cs

namespace Mensagem.Modelos;
internal interface INotificavel {
    public void EnviarNotificacao();
}
1 resposta
solução!

Oi, Diego! Como vai?

Agradeço por compartilhar.

A sua implementação ficou bem organizada. A criação da interface INotificavel para padronizar o método EnviarNotificacao() mostra um bom uso de orientação a objetos, permitindo que Sms e Email tenham comportamentos diferentes mantendo a mesma estrutura. A separação em arquivos e namespaces também ajuda bastante na organização do projeto.

Uma dica interessante para o futuro é usar switch expression pra deixar a escolha de notificacao mais enxuta.


int escolha = int.Parse(Console.ReadLine());

INotificavel notificacao = escolha switch
{
    1 => new Sms(),
    2 => new Email(),
    _ => null
};

notificacao?.EnviarNotificacao();

Aqui, o switch retorna diretamente o objeto correspondente (Sms ou Email). Depois, o operador ?. chama o método EnviarNotificacao() apenas se existir um objeto valido.

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