Diagramas de Estados - JnSGoncalves/Modelagem-de-Software GitHub Wiki


Diagrama de estados da Classe "Administrador"

stateDiagram-v2
    direction TB

    [*] --> SendoCriado : cadastrar(ID, login, senha)
    
    SendoCriado --> Registrado : [dados válidos] / salvar()
    SendoCriado --> [*] : [dados inválidos]

    state Registrado {
        [*] --> Deslogado
        
        Deslogado --> Autenticando : login(login, senha)
        
        state Autenticando {
            [*] --> Validando
            Validando --> Conectado : [sucesso]
            Validando --> Deslogado : [falha]
        }
        
        state Conectado {
            [*] --> AguardandoAcao
            
            AguardandoAcao --> GerenciandoCinema : cadastrarCinema()
            GerenciandoCinema --> AguardandoAcao
            
            AguardandoAcao --> GerenciandoSala : gerenciarSala()
            GerenciandoSala --> AguardandoAcao
            
            AguardandoAcao --> GerenciandoFilme : gerenciarFilme()
            GerenciandoFilme --> AguardandoAcao
            
            AguardandoAcao --> GerenciandoSessao : gerenciarSessao()
            GerenciandoSessao --> AguardandoAcao
            
            AguardandoAcao --> GerandoRelatorio : gerarRelatorio()
            GerandoRelatorio --> AguardandoAcao
        }
        
        Conectado --> Deslogado : logout()
    }

    Registrado --> [*] : excluirConta()

Diagrama de estados da Classe "Cinema"

stateDiagram-v2
    direction TB

    [*] --> EmCadastro: Administrador inicia "Cadastrar Cinema"
    
    state EmCadastro {
        [*] --> PreenchendoDados: Exibir formulário
        PreenchendoDados --> Validando: confirmarCadastro()
        Validando --> PreenchendoDados: [dados inválidos ou duplicados] / Notificar erro
    }

    EmCadastro --> Ativo: [dados válidos] / salvarDados()
    
    state Ativo {
        [*] --> SemSalas
        SemSalas --> ComSalas: cadastrarSala()
        ComSalas --> ComSalas: gerenciarSalas()
        ComSalas --> SemSalas: [todas salas removidas]
    }

    Ativo --> GerandoRelatorio: gerarRelatorio()
    GerandoRelatorio --> Ativo: [concluído]

    Ativo --> [*]: Remover Cinema

Diagrama de estados da Classe "Sala"

stateDiagram-v2
    direction TB

    [*] --> SendoCriada: Administrador seleciona "Cadastrar Sala"
    
    state SendoCriada {
        [*] --> DefinindoCapacidade: Informar número de assentos
        DefinindoCapacidade --> ValidandoEstrutura: Salvar configurações
        ValidandoEstrutura --> DefinindoCapacidade: [capacidade inválida]
    }

    SendoCriada --> Disponivel: [dados validados] / salvarSala()

    state Disponivel {
        [*] --> Ociosa: Sem sessões agendadas
        Ociosa --> EmUso: criarSessao() 
        EmUso --> Ociosa: [sessão encerrada]
    }

    Disponivel --> ConfigurandoAssentos: gerenciarMelhoresAssentos()
    ConfigurandoAssentos --> Disponivel: salvarConfiguracao()

    %% Múltiplos caminhos para o fim do fluxo
    Disponivel --> [*]: Remover Sala do Cinema
    SendoCriada --> [*]: Cancelar Cadastro


Diagrama de estados da Classe "Sessao"

stateDiagram-v2
    direction TB

    [*] --> Criada: Administrador solicita criação
    
    state Criada {
        [*] --> Validando: validarDisponibilidade()
        Validando --> Agendada: [Horário livre na Sala]
    }

    Agendada --> Publicada: publicarSessao()
    
    state Publicada {
        [*] --> Disponivel
        Disponivel --> Disponivel: reservarIngresso()
        Disponivel --> Lotada: [Capacidade atingida]
        Lotada --> Disponivel: cancelarReserva()
    }

    Publicada --> EmExibicao: iniciarSessao() / AncineAPI.informarDados()
    
    EmExibicao --> Finalizada: encerrarSessao()
    
    Finalizada --> Registrada: comporRelatorio()
    
    Registrada --> [*]

Diagrama de estados da Classe "Filme"

stateDiagram-v2
    direction TB

    [*] --> SendoCadastrado: Administrador inicia "Cadastrar Filme"
    
    state SendoCadastrado {
        [*] --> PreenchendoDados: informarDados()
        PreenchendoDados --> Validando: [confirmar]
        Validando --> PreenchendoDados: [dados incompletos]
    }

    SendoCadastrado --> Disponivel: salvarFilme()
    
    state Disponivel {
        [*] --> EmCartaz: Vincular a uma Sessão Ativa
        EmCartaz --> ForaDeCartaz: [Nenhuma sessão ativa pendente]
        ForaDeCartaz --> EmCartaz: criarSessao()
    }

    Disponivel --> [*]: removerFilme()

Diagrama de estados da Classe "Relatorio"

stateDiagram-v2
    direction TB

    [*] --> SendoGerado: Administrador solicita consolidado
    
    state SendoGerado {
        [*] --> ColetandoDados: acessarDadosSessoes()
        ColetandoDados --> CalculandoFinanceiro: processarVendasIngressos()
        CalculandoFinanceiro --> Formatando: estruturarLayout()
    }

    SendoGerado --> Pronto: concluirGeracao()
    
    state Pronto {
        [*] --> VisualizacaoDisponivel
        VisualizacaoDisponivel --> Exportado: exportarPDF() / imprimir()
    }

    Pronto --> [*]: Fechar Relatório

Diagrama de estados da Classe "Ancine API"

stateDiagram-v2
    direction TB

    [*] --> Ociosa
    
    Ociosa --> ProcessandoEnvio : informarDados(dadosSessao)
    
    state ProcessandoEnvio {
        [*] --> Formatando
        Formatando --> Transmitindo : enviar()
        Transmitindo --> ValidandoProtocolo : receberConfirmacao()
    }

    ProcessandoEnvio --> Finalizada : [sucesso / falha]
    Finalizada --> Ociosa : finalizarConexao()
    
    Ociosa --> [*]

Diagrama de estados da Classe "Cliente"

stateDiagram-v2
    direction TB

    [*] --> ValidandoEmail : cadastrar(email)
    
    state ValidandoEmail {
        [*] --> CodigoEnviado : enviarEmail(codigo)
        CodigoEnviado --> EmailConfirmado : confirmarEmail(codigo)
        EmailConfirmado --> PreenchendoDados : [codigo valido]
        PreenchendoDados --> ContaAtiva : salvar()
        CodigoEnviado --> [*] : [cancelar/codigo invalido]
    }

    ContaAtiva --> GerenciandoFidelidade : aderirProgramaFidelidade(dadosCartao)
    GerenciandoFidelidade --> ContaAtiva : [isFidelidade = true]

    state ContaAtiva {
        [*] --> Disponivel
        
        state InteracaoIngresso {
            [*] --> Opcoes
            Opcoes --> Reservando : reservarIngresso()
            Reservando --> Pagando : realizarPagamento()
            Pagando --> Opcoes : [sucesso]
            
            Opcoes --> Visualizando : visualizarIngressos()
            Visualizando --> Exportando : exportarIngresso()
            Exportando --> Opcoes
            
            Opcoes --> Cancelando : cancelarReserva()
            Cancelando --> Opcoes
        }
        
        Disponivel --> InteracaoIngresso
        InteracaoIngresso --> Disponivel : fecharMenu()
    }

    ContaAtiva --> [*] : [excluirConta]

Diagrama de estados da Classe "Ingresso"

stateDiagram-v2
    direction TB

    [*] --> Disponivel : gerar_ingresso()
    
    state Disponivel {
        [*] --> AguardandoSelecao : do / aguardar_selecao()
    }

    Disponivel --> Reservado : reservar() / reservarIngresso()
    
    state Reservado {
        [*] --> Bloqueado : do / bloquear_assento()
    }

    Reservado --> ProcessandoPagamento : confirmarPagamento() / realizarPagamento()
    
    state ProcessandoPagamento {
        [*] --> Verificando : do / verificar_transacao()
    }

    ProcessandoPagamento --> Reservado : [pagamento_recusado]
    ProcessandoPagamento --> Pago : [pagamento_aprovado] / emitir_recibo()

    state Pago {
        [*] --> VerificandoTipo : do / verificar_tipo_ingresso()
    }

    Pago --> Confirmado : [inteira]
    Pago --> ValidandoDocumento : [meia_entrada] / solicitar_doc()

    state ValidandoDocumento {
        [*] --> EmAnalise : do / validar_documento()
    }

    ValidandoDocumento --> Confirmado : [doc_valido]
    ValidandoDocumento --> Cancelado : [doc_invalido]

    Confirmado --> [*] : visualizarIngresso() / exportarIngresso()

    Reservado --> Cancelado : cancelarReserva()
    Cancelado --> Disponivel : do / liberar_assento()

Diagrama de estados da Classe "Pagamento API"

stateDiagram-v2
    direction TB

    [*] --> Processando : realizarPagamento()

    Processando: Validando Cartão
    Processando: do / verificar_validade_cartao()
    Processando --> Cobranca : realizar_cobranca() [cartao_valido]
    Processando --> Falha : [cartao_invalido]

    Cobranca: Efetuando Débito
    Cobranca: do / processar_transacao()
    Cobranca --> Sucesso : confirmar_deferimento() [pagamento_confirmado]
    Cobranca --> Falha : [saldo_insuficiente]

    Sucesso: Pagamento Aprovado
    Sucesso --> [*]

    Falha: Pagamento Recusado
    Falha --> [*]

Diagrama de estados da Classe "Validador de Documentos"

stateDiagram-v2
    [*] --> Processando

    Processando: Analise de Documento
    Processando: do / verificar_autenticidade()
    Processando --> Resultado : finalizar_analise() [analise_concluida]
    Processando --> Final : rejeitar_documento() [documento_invalido]

    Resultado: Resultado da Analise
    Resultado: do / emitir_veredito()
    Resultado --> Final : concluir_processo()

    Final: Processo Encerrado
    Final --> [*]