Business Informatics Group
Institute of Software Technology and Interactive Systems Vienna University of Technology
Favoritenstraße 9-11/188-3, 1040 Vienna, Austria
phone: +43 (1) 58801-18804 (secretary), fax: +43 (1) 58801-18896 office@big.tuwien.ac.at, www.big.tuwien.ac.at
Modelagem Orientada a Objetos
Diagrama de Sequência
© BIG / TU Wien
Literature
UML @ Classroom:
An Introduction to Object-Oriented Modeling
Martina Seidl, Marion Scholz, Christian Huemer and Gerti Kappel
Springer Publishing, 2015
ISBN 3319127411
§
The lecture is based on the following book:
§ Use Case Diagram
§ Structure Modeling
§ State Machine Diagram
§ Sequence Diagram § Activity Diagram
© BIG / TU Wien
Conteúdo
§
Introdução
§
Interações e parceiros de interação
§
Mensagens
§
Fragmentos combinados
§ Branches e loops
§ Concorrência e ordem
§ Filtros e asserções
§
Elementos de linguagem adicionais
§
Tipos adicionais de diagramas de interação
© BIG / TU Wien
Introdução
§
Modelando comportamentos entre objetos
= interações entre objetos§
Interação
§ Especifica como mensagens e dados são trocados entre parceiros de interação
§
Parceiros de interação
§ Humano (professor, administrador, …)
§ Não-humano (servidor, impressora, software executável, …)
§
Exemplos de interações
§ Conversa entre pessoas
§ Troca de mensagens entre humanos e o software
§ Protocolos de comunicação
§ Sequência de chamadas de métodos em um programa…
© BIG / TU Wien
Diagramas de Interação
§
Utilizados para especificar interações
§
Modela cenários concretos
§
Descreve sequências de comunicação em diferentes níveis de detalhe
§
Diagramas de interação mostram o seguinte:
§ Interação de um sistema com seu ambiente
§ Interação entre partes de um sistema com o objetivo de mostrar como um caso de uso específico pode ser implementado
§ Comunicação entre processos na qual os parceiros envolvidos precisam observar certos protocolos
§ Comunicação no nível da classe (chamadas de operações, comportamento entre objetos)
© BIG / TU Wien
Diagrama de Sequência
§
Diagrama com duas dimensões
§ Eixo horizontal: parceiros de interação envolvidos § Eixo vertical: ordem cronológica da interação
§
Interação = sequência de especificações de eventos
© BIG / TU Wien
Parceiros de interação
§
Parceiros de interação são mostrados como linhas de vida
§
Cabeça da linha de vida
§ Retângulo que contém a expressão nomePapel:Classe
§ Papéis são um conceito mais geral que objetos
§ Objeto pode realizar diferentes papéis durante seu tempo de vida
§
Corpo da linha de vida
§ Vertical, linha tracejada (em geral)
§ Representa o tempo de vida do objeto associado com ele
Cabeça da linha de vida
Corpo da linha de vida
© BIG / TU Wien
Trocando Mensagens (1/2)
§
Interação: sequência de eventos
§
Mensagem é definida por um evento de envio e um evento de
recebimento
§
Especificação de execução
§ Barra contínua
§ Utilizada para especificar quando um parceito de interação executa algum comportamento
Evento de envio Evento de recebimento
Especificação de execução
© BIG / TU Wien
Trocando Mensagens (2/2)
… em diferentes linhas de vida que trocam mensagens
… em diferentes linhas de vida
… em uma linha de vida
»Acontece antes« Ordem das mensagens:
© BIG / TU Wien
Mensagens (1/3)
§ Mensagem síncrona
§ Remetente aguarda por uma mensagem de resposta antes de continuar
§ Sintaxe do nome da mensagem: msg(par1,par2)
§ msg: o nome da mensagem
§ par: parâmetros separados por vírgulas
§ Mensagem assíncrona
§ Remetente continua, sem aguardar por uma mensagem de resposta
§ Sintaxe do nome da mensagem: msg(par1,par2)
§ Mensagem de resposta
§ Pode ser omitida se o conteúdo e a localização são óbvios
§ Sintaxe: att=msg(par1,par2):val
§ att: o valor de retorno pode ser atribuido a uma variável
§ msg: o nome da mensagem
§ par: parâmetros separados por vírgulas
§ val: valor de retorno
Mensagens (2/3)
§
Criação de objeto
§ Seta tracejada§ Cabeça da seta aponta para a cabeça da linha de vida do objeto que será criado
§ Palavra-chave new
§
Destruição do objeto
§ Objeto é apagado§ Grande “xis” (×) no final da linha de vida
Mensagens (3/3)
§
Mensagem found
§ Remetente de uma mensagem é desconhecido ou
não importa
§
Mensagem lost
§ Receptor de uma mensagem é desconhecido ou
não importa
§
Mensagem com gasto de tempo
§ "Mensagem com duração"
§ Normalmente mensagens são transmitidas sem qualquer gasto de tempo
§ Expressa que o tempo passa entre o envio e o recebimento de uma
mensagem
© BIG / TU Wien
Fragmentos combinados
§
Modelam várias estruturas de controle
§
12 tipos predefinidos de operadores
Operando
Operando
Fragmento Combinado
Operador
Operando
© BIG / TU Wien
Tipos de Fragmentos Combinados
Operador Propósito
alt Interação alternativa
opt Interação opcional
loop Interação repetida
break Interação com exceção
seq Ordem fraca
strict Ordem estrita
par Interação concorrente
critical Interação atômica
ignore Interação irrelevante
consider Interação relevante
assert Interação com afirmação
neg Interação inválida
© BIG / TU Wien
Fragmento
alt
§ Para modelar sequências alternativas
§ Similar a um comando switch em Java
§ Guardas são utilizadas para selecionar um caminho que será executado
§ Guardas
§ Modeladas entre colchetes
§ default: true
§ predefinido: [else]
§ Múltiplos operandos
§ Guardas precisam ser disjuntas para evitar comportamento não-determinístico
© BIG / TU Wien
Fragmento
opt
§
Para modelar uma
sequência opcional
§
Execução é dependente da
guarda
§
Exatamente um operando
§
Similar a um comando
if
sem o
else
§
Equivalente ao fragmento
alt
com dois operandos,
em que um deles é vazio
Fragmento
loop
§
Para expressar que uma sequência deve ser executada repetidamente
§
Exatamente um operando
§
Palavra-chave loop seguida pelo número mínimo/máximo de iterações
(
min..max
)
ou (
min,max
)
§ default: (*) .. sem limite superior
§
Guarda
§ Avaliada assim que o número mínimo de iterações acontecer
§ Verificada para cada iteração dentro dos limites (min,max)
§ Se a guarda for avaliada para falso, a execução do loop termina
Notações alternativas:
loop(3,8) = loop(3..8) loop(8,8) = loop (8)
© BIG / TU Wien
Fragmento
break
§
Forma simples de tratamento de exceção
§
Exatamente um operando com uma guarda
§
Se a guarda é verdadeira:
§ Interações dentro deste operando são executadas
§ Operações restantes do fragmento circundante são omitidas
§ Interação continua no fragmento mais externo
§ Comportamento diferente do fragmento opt
Não executado se o break é executado
© BIG / TU Wien
Fragmentos
loop
and
break
- Exemplo
Fragmento
seq
§
Ordem default dos eventos
§
Sequenciamento fraco:
1. A ordem dos eventos dentro de cada um dos operando é mantida no resultado.
2. Eventos em diferentes linhas de vida em diferentes operandos pode acontecer em qualquer ordem.
3. Eventos de uma mesma linha de vida de diferentes operandos são ordenados de forma que um evento do primeiro operando ocorre antes do evento do segundo operando.
© BIG / TU Wien
Fragmento
seq
Fragment – Exemplo
© BIG / TU Wien
Fragmento
strict
§
Interação sequencial com ordem
§
Ordem das ocorrências de eventos em linhas de vida diferentes entre
diferentes operandos é importante
§ Mensagens em um operando que está mais alto no eixo vertical são sempre trocadas antes das mensagens de um operando que está mais baixo no eixo vertical
© BIG / TU Wien
Fragmento
strict
- Exemplo
Fragmento
par
24
§
Para anular a ordem cronológica entre mensagens em diferentes
operandos
§
Caminhos de execução de diferentes operandos podem ser
intercalados
§
Restrições de cada operando precisam ser respeitadas
§
Ordem dos diferentes operandos é irrelevante
© BIG / TU Wien
Fragmento
par - Exemplo
© BIG / TU Wien
Coregião
§
Para modelar eventos concorrentes de uma única linha de vida
§
Ordem das ocorrências de eventos dentro de uma coregião não é
restrita
§
Área da linha de vida a ser coberta pela coregião é marcada por
colchetes rotacionados a 90 graus
Impacto da coregião
Coregião
© BIG / TU Wien
Coregião – Exemplo
© BIG / TU Wien
Fragmento
critical
§
Área atômica na interação (um operando)
§
Para certificar que certas partes de uma interação não são
interrompidas por eventos inesperados
§
Ordem dentro do critical: ordem seq (default)
© BIG / TU Wien
Fragmento
critical
- Exemplo
© BIG / TU Wien
Fragmento
ignore
§
Para indicar mensagens irrelevantes
§
Mensagens podem ocorrer em tempo de execução mas não tem mais
significado
§
Exatamente um operando
§
Mensagens irrelevantes entre chaves após a palavra-chave
ignore
© BIG / TU Wien
Fragmento
consider
§
Para especificar mensagens que são importantes para a interação
atual
§
Exatamente um operando, dual ao fragmento ignore
§
Mensagens consideradas devem vir entre chaves após a
palavra-chave
consider
© BIG / TU Wien
ignore
vs.
consider
© BIG / TU Wien
assert
Fragment
§
Para identificar certas sequências de mensagens como obrigatórias
§
Desvios que ocorrem na realidade mas que não estão incluidas no
diagrama não são permitidas
§
Exatamente um operando
© BIG / TU Wien
Fragmento
neg
§
Para modelar interações inválidas
§
Descreve situações que não podem ocorrer
§
Exatamente um operando
§
Propósito
§ Realçar explicitamente os erros frequentes
§ Representar sequências incorretas e relevantes
© BIG / TU Wien
Referência de Interação
§
Integra um diagrama de sequência em outro diagrama de sequência
© BIG / TU Wien
Porta (Gate)
§
Permite o envio e o recebimento de mensagens além das fronteiras do
fragmento de interação
Marcador de Continuação
§ Modulariza os operandos de um fragmento alt
§ Quebra interações complexas em partes e as conecta umas as outras com marcadores
§ Marcador de início aponta para marcardor alvo
§ Sem retorno para o marcador de início (diferente de uma referência de interação)
Marcador alvo
Marcador de início
© BIG / TU Wien
Atributos Locais e Parâmetros
§
Cada diagrama de sequência é fechado por um retângulo com um
pequeno pentágonono canto superior esquerdo
§
Palavra-chave
sd
, nome do diagrama de sequência, parâmetros
(opcional)
§
Exemplo:
Opção 1: Opção 2:
void func (int par1, int par2) { int x = 0;
© BIG / TU Wien
Restrições de Tempo
§
Tipos
§ Ponto no tempo para ocorrência de evento
§ Relativo: ex, after(5sec) § Absoluto: ex., at(12.00)
§ Período de tempo entre dois eventos
§ {lower..upper}
§ Ex., {12.00..13.00}
§
Ações predefinidas
§ now: tempo atual
§ Pode ser atribuído a um atributo e então ser usado numa restrição de tempo
§ Duração: cálculo da duração da transmissão de uma mensagem
© BIG / TU Wien
Invariante de Estado
§
Afirma que uma certa condição precisa ser atendida em um certo
tempo
§
Sempre associada a uma linha de vida específica
§
Avaliação ocorre antes do evento subsequente
§
Se o invariante de estado não é verdadeira, o modelo ou a
implementação estão incorretos
§
Três notações alternativas:
© BIG / TU Wien
Quatro Tipos de Diagramas de Interação (1/4)
§
Baseados nos mesmos conceitos
§
Equivalentes para simples interações, mas com foco diferente
§
Diagrama de sequên
cia
§ Eixo vertical:ordem cronológica
§ Eixo horizontal:
parceiros de interação
© BIG / TU Wien
Quatro Tipos de Diagramas de Interação (2/4)
§
Diagrama de
comunicação
§ Modela os relacionamentos entre parceiros de interação
§ Foco: Quem comunica com quem
§ Tempo não é uma dimensão separada
§ Ordem de mensagem por classificação decimal
© BIG / TU Wien
Quatro Tipos de Diagramas de Interação (3/4)
§
Diagrama de tempo
§ Mostra mudanças de estado dos parceiros de interação em resposta às ocorrências de eventos
§ Eixo vertical: parceiros de interação
§ Eixo horizontal: ordem cronológica
© BIG / TU Wien
Quatro Tipos de Diagramas de Interação (4/4)
§
Diagrama de visão geral de interação
§ Visualiza a ordem de diferentes interações§ Permite colocar vários diagramas de interação em uma ordem lógica
§ Conceitos básicos de notação do diagrama de atividades
© BIG / TU Wien
Elementos de Notação (1/2)
Nome Notação Descrição
Linha de vida Parceiros de interação envolvidos na
comunicação
Evento de destruição
Tempo no qual um parceiro de interação deixa de existir
Fragmento
combinado Construções de controle
© BIG / TU Wien
Elementos de Notação (2/2)
Nome Notação Descrição
Mensagem síncrona
Remetente aguarda por uma mensagem de resposta
Mensagem de resposta
Resposta para uma mensagem síncrona
Comunicação assíncrona
Remetente continua seu próprio
trabalho após o envio da mensagem assíncrona
Mensagem lost Mensagem para um destinatário
desconhecido
Mensagem found
Mensagem de um remetente desconhecido