Nos diagramas de seqüência, uma mensagem é um elemento de modelo que define um tipo específico de comunicação entre participantes de uma interação. Uma mensagem transporta informações de um participante, que é representado por uma linha de vida, para outro participante em uma interação.
Uma mensagem especifica o emissor e o receptor, e define o tipo de comunicação que a ocorrência de execução faz dispatch entre linhas de vida. Por exemplo, uma comunicação pode chamar uma operação utilizando synchCall ou asynchCall, lançar um sinal utilizando asynchSignal e criar ou destruir um participante.
Os diagramas de seqüência podem ter três tipos de mensagens:
Uma mensagem representa uma chamada de operação ou o envio e o recebimento de um sinal. Quando uma mensagem representa uma operação, os argumentos da mensagem são os argumentos de CallAction na linha de vida que envia e os argumentos de CallEvent na linha de vida que recebe. Quando uma mensagem representa um sinal, os argumentos da mensagem são os argumentos de SendAction na linha de vida que envia e os argumentos estão disponíveis em SignalEvent na linha de vida que recebe. Se a mensagem for uma chamada síncrona, normalmente ocorre uma mensagem de retorno a partir da linha de vida chamada para a linha de vida que a chamou antes que esta possa prosseguir.
Como a figura a seguir ilustra, uma mensagem é exibida em um quadro de interação como uma linha com uma seta que aponta na direção em que a mensagem é enviada; a partir da extremidade da mensagem enviada para a extremidade da mensagem recebida.
A mensagem enviada pela linha de vida de origem para a linha de vida de destino representa uma operação que esta executa. É possível nomear e ordenar mensagens. A aparência da linha ou da cabeça de seta reflete as propriedades da mensagem.
Gráfico | Descrição | Representação |
---|---|---|
![]() |
Uma linha com uma cabeça de seta sólida que aponta em direção à linha de vida receptora | Uma operação de chamada síncrona na qual o sistema aguarda a conclusão do fluxo de controle antes de continuar com o fluxo externo |
![]() |
Uma linha com uma cabeça de seta aberta | Um sinal assíncrono ou uma chamada assíncrona na qual o objeto de origem envia a mensagem e imediatamente continua com a próxima etapa |
![]() |
Uma linha tracejada com uma cabeça de seta sólida que aponta em direção à linha de vida originadora | Uma mensagem de retorno de uma chamada para um procedimento. Ao criar uma mensagem síncrona, uma mensagem de retorno é criada por padrão; é possível alterar esse padrão na janela Preferências |
É possível identificar as mensagens por um nome ou por uma assinatura de operação.
Tipo | Exemplo | Descrição |
---|---|---|
Nome | \Obter a Senha\ | Um nome identifica apenas o nome da mensagem. Normalmente são utilizados nomes simples em diagramas desenvolvidos durante a fase de análise porque as mensagens são identificadas por suas responsabilidades, não por suas operações. Uma convenção coloca o nome entre barras invertidas (\\) para indicar que o nome da mensagem não está associado a uma operação. Quando uma operação está associada a uma mensagem, o nome da operação substitui o nome. |
Assinatura | getPassword | Quando uma operação é designada a uma mensagem, é possível exibir a assinatura da operação para identificar o nome da operação. Normalmente, as assinaturas são utilizadas em diagramas desenvolvidos durante a fase de design porque elas fornecem o detalhe que os desenvolvedores precisam ao codificar o design. |
Uma mensagem assíncrona é o único tipo de mensagem no qual é possível mover individualmente o ponto de envio e o ponto de recebimento da mensagem. Você pode mover os pontos de uma mensagem assíncrona entre linhas de vida para manipular o retardo de tempo entre o evento de envio e o evento de recebimento; o resultado é chamado de mensagem desviada.
Como a figura a seguir ilustra, uma mensagem desviada é exibida como uma linha com uma seta aberta que possui múltiplas interações que ocorrem entre as linhas de vida de envio e recebimento.
O evento de envio não é bloqueado e as interações podem ocorrer entre o ponto na linha de vida de envio e o ponto na linha de vida de recebimento.