Pular para o conteúdo
Bruno Dórea
Todos os posts

4 mins de leitura


Sistema de Notificações

Desafios de Código Java Intermediários - S.O.L.I.D. - 2/5


Java AI Powered
Java AI Powered

Descrição

Desenvolva uma simulação de um sistema de notificações que utilize o Princípio de Segregação de Interface (ISP) em seu desenvolvimento, criando interfaces separadas para diferentes tipos de notificações, como EmailNotification e SMSNotification.

Entrada

O programa receberá dois parâmetros de entrada: o tipo de notificação (string) - email ou sms, e a mensagem (string) a ser enviada.

Saída

O programa deve imprimir uma confirmação da notificação enviada (string): {tipo} enviado: {mensagem}.

Observações

  • Aplique o Princípio de Segregação de Interface (ISP) criando interfaces específicas para cada tipo de notificação.
  • Considere a possibilidade de criar exceções ou tratamentos adequados para casos em que ocorram tipos de notificação inválidos.

Exemplos

EntradaSaída
email, Ola Mundo!Email enviado: Ola Mundo!
EntradaSaída
sms, Bem-vindo.SMS enviado: Bem-vindo.
EntradaSaída
fax, Rua DominickTipo de notificacao invalido.

Resolução

import java.util.Scanner;
 
interface Notificacao {
  void enviar(String mensagem);
}
 
class NotificacaoEmailImpl implements Notificacao {
  @Override
  public void enviar(String mensagem) {
    System.out.println("Email enviado: %s".formatted(mensagem));
  }
}
 
class NotificacaoSMSImpl implements Notificacao {
  @Override
  public void enviar(String mensagem) {
    System.out.println("SMS enviado: %s".formatted(mensagem));
  }
}
 
public class Principal {
  public static void main(String[] args) {
    try(Scanner scanner = new Scanner(System.in)) {
      String[] entradas = scanner.nextLine().split(", ");
 
      String tipoNotificacao = entradas[0];
      String mensagem = entradas[1];
 
      Notificacao notificacao;
      switch (tipoNotificacao) {
        case "email":
          notificacao = new NotificacaoEmailImpl();
          break;
        case "sms":
          notificacao = new NotificacaoSMSImpl();
          break;
        default:
          System.out.println("Tipo de notificacao invalido.");
          return;
      }
      notificacao.enviar(mensagem);
    }
  }
}

Para encontrar outras soluções, verifique aqui.

Caso encontre algum erro ou tenha sugestões, clique aqui e abra uma issue no Github.