Pular para conteúdo

Exemplo Biblioteca Digital

Problema de Modelagem

Você foi contratado para desenvolver um sistema para gerenciar uma biblioteca de livros digitais. O sistema permitirá que os usuários façam login, procurem livros, reservem livros, e baixem cópias para leitura offline. A biblioteca também oferece assinatura premium, onde os usuários podem acessar livros exclusivos e ganhar vantagens especiais, como reservas antecipadas e downloads ilimitados.


Caso de Uso

Título: Usuário Reserva um Livro

  1. Ator Principal: Usuário autenticado
  2. Atores Secundários: Sistema de pagamento (para verificação de status de assinatura)
  3. Pré-condições:
  4. O usuário deve estar autenticado.
  5. O livro desejado deve estar disponível para reserva.
  6. Fluxo Principal:
  7. O usuário navega na biblioteca e seleciona um livro disponível.
  8. O sistema verifica se o usuário é um assinante premium.
    • Se sim, permite a reserva imediata.
    • Se não, verifica se o número de reservas permitidas não foi excedido.
  9. O sistema realiza a reserva do livro e informa o prazo máximo para retirada.
  10. O sistema atualiza o status do livro como "Reservado" e o associa ao usuário.
  11. Fluxos Alternativos:
  12. Se o livro não estiver disponível para reserva, o sistema informa ao usuário que o livro está indisponível.
  13. Se o usuário excedeu o limite de reservas, o sistema informa que não é possível realizar mais reservas.
  14. Pós-condições:
  15. O livro é reservado com sucesso e o status é atualizado.
  16. O usuário é notificado do prazo para retirar o livro.

Pontos para Modelagem

A partir deste caso de uso, você pode definir os seguintes objetos e suas interações:

  1. Usuário:

  2. Atributos: nome, email, status de assinatura, número de reservas.

  3. Métodos: autenticar(), reservarLivro(), cancelarReserva().
  4. Livro:

  5. Atributos: título, autor, status (disponível, reservado, indisponível), prazo de retirada.

  6. Métodos: verificarDisponibilidade(), reservar(), liberarReserva().
  7. Biblioteca:

  8. Atributos: catálogo de livros, usuários cadastrados.

  9. Métodos: buscarLivro(), registrarReserva(), verificarLimiteReservas().
  10. Assinatura:

  11. Atributos: tipo (premium, básico), limite de reservas.

  12. Métodos: verificarBenefícios().

Esse cenário pode ser expandido com novos casos de uso, como o gerenciamento de downloads ou renovação de assinaturas.

@startuml
title "Caso de Uso - Usuário Reserva um Livro"

actor "Usuário autenticado" as Usuario
actor "Sistema de pagamento" as Pagamento

Usuario -> (Navegar na biblioteca)
Usuario -> (Selecionar um livro disponível)
Usuario --> (Reservar Livro)
Usuario --> (Verificar status de assinatura)

Pagamento <-- (Verificar status de assinatura) : Status da assinatura

(Reservar Livro) --> (Verificar limite de reservas)
(Verificar limite de reservas) --> Usuario : Limite excedido

(Verificar status de assinatura) --> (Reserva Imediata)
(Verificar limite de reservas) --> (Reserva Imediata)
(Reserva Imediata) --> (Atualizar Status do Livro)
(Atualizar Status do Livro) --> (Notificar Usuário)

(Selecionar um livro disponível) --> (Verificar Disponibilidade do Livro)
(Verificar Disponibilidade do Livro) --> Usuario : Livro indisponível
@enduml