Diagramas de Sequência
1. Introdução aos Diagramas de Sequência
Os diagramas de sequência são uma ferramenta UML usada para modelar interações temporais entre objetos em cenários específicos, como a execução de um caso de uso.
- Objetivo:
- Representar a ordem cronológica de mensagens trocadas entre atores e objetos para alcançar um objetivo.
- Esclarecer responsabilidades e dependências entre as entidades do sistema.
- Diferenciação:
- Foco na ordem temporal das mensagens, enquanto outros diagramas de interação podem focar em arquitetura ou temporalidade geral.
2. Elementos Essenciais
- Objetos e Linhas de Vida:
- Objetos: Entidades que interagem no diagrama (e.g.,
Cliente
,Sistema
). - Linha de Vida: Representa a existência temporal do objeto durante a interação.
- Objetos: Entidades que interagem no diagrama (e.g.,
- Mensagens:
- Trocadas entre objetos para invocar operações ou transmitir informações.
- Tipos:
- Síncronas: O emissor espera a conclusão da mensagem.
- Assíncronas: O emissor não espera resposta.
- Retorno: Mensagens que devolvem valores ou resultados.
- Ativações:
- Períodos em que um objeto está a processar uma operação.
3. Fragmentos Combinados
Permitem modelar comportamentos mais complexos, como fluxos alternativos ou paralelos:
- opt: Representa uma condição opcional. O fluxo ocorre apenas se a guarda for verdadeira.
- Exemplo: "Registar cliente apenas se este existir."
- alt: Representa fluxos alternativos mutuamente exclusivos.
- Exemplo: "Processar pedido com sucesso ou apresentar erro."
- loop: Repete o fluxo enquanto a condição for verdadeira ou por um número definido de iterações.
- break: Termina o fluxo de execução se uma condição for satisfeita.
- ref: Referencia outros diagramas de sequência para modularidade e reutilização.
4. Exemplo - Reservar Armação e Lentes
Modelação de um caso de uso específico onde um funcionário regista a reserva de produtos:
- Fluxo Normal:
- Funcionário fornece dados do cliente (nome/data de nascimento).
- Sistema procura e apresenta clientes.
- Funcionário seleciona e confirma o cliente.
- Sistema exibe produtos disponíveis.
- Funcionário escolhe produtos, e o sistema regista a reserva e imprime um talão.
- Fluxo Alternativo:
- Se houver apenas um cliente na lista, o sistema salta etapas intermediárias e vai direto à confirmação.
- Fluxo de Exceção:
- Se o cliente rejeitar os produtos, o sistema termina o processo.
5. Operadores Adicionais
- par: Eventos podem ocorrer em paralelo, sem dependência de ordem.
- seq: Permite que eventos ocorram em paralelo, mas mantém a sequência dentro de cada linha de vida.
- neg: Define interações inválidas ou que não devem ocorrer.
- consider: Especifica mensagens que devem ser incluídas, ignorando outras.
6. Boas Práticas na Modelação
- Distribuição de Responsabilidades:
- Processamento deve ser delegado aos objetos apropriados, evitando concentrações desnecessárias de lógica.
- Exemplo de Boa Prática: Métodos como
compara(nome, datan)
são movidos para a classeCliente
, onde os dados residem.
- Princípio SLAP (Single Level of Abstraction Principle):
- Cada método ou fragmento deve operar no mesmo nível de abstração para garantir legibilidade e coesão.
- Aplicação: Dividir métodos complexos em partes mais simples e coesas.