Você está na página 1de 17

::i UML-1550

=:i
--
=-
<i.
c

....l
o
<C>
-c
o
~

::I '"""

cJ
Z
e,
~

::J ~
'"
o
'"-c
>
5.2 - Diagrama de Sequência
::i
:l:

""
'"
.:.J
X
o
<
Bloco de Construção do Aprendizado
.,
'"
::i o

:;j
x
.,
:5

::I ...o
o
'"O,

:i
~

::I


~

:I
:3



:I
~

=­ INSTITUTO INFNET - 209


r

UML-I550
I

<i
o
~
o

Tipos de Diagramas

«
o
:J
ow

w
Z
u.
• Interação é o conjunto de mensagens trocadas
:i:
o:
oQ.
entre objetos
(fJ
o
o
«
>
• Uma interação pode ser representada enl UML
o:
w
(fJ
w
,o:
de quatro maneiras:

o

(fJ
(fJ
- Diagrama de Visão Geral

o
!:::
w
o:
- Diagrama Temporal

i5
(fJ
o
(fJ
- Diagrama de Comunicação

oo
o
f­ - Diagrama de Sequência

210

Diagramas de interação representam a troca de mensagens entre objetos e são usados para
modelar o comportamento de vários objetos dentro de um caso de uso.
A UML 2.0 define quatro maneiras de se representar a comunicação existente entre objetos
de um caso de uso: I

Diagrama de Visão Geral: variante do diagrama de atividades que representa o fluxo de


um processo. Cada nó deste diagrama pode ser outro diagrama de interação. É um diagrama de i
alto-nível que mostra conjuntos de interações combinadas em uma sequência lógica, incluindo

lógica de controle de fluxo e de navegação. I
Diagrama de Comunicação: tem o foco na organização estrutural dos objetos que enviam

e recebem mensagens. Baseia-se no diagrama de colaboração das versões anteriores da UML.
Diagrama Temporal: mostra as restrições de tempo na mensagens enviadas e recebidas
durante uma interação.
-i
Diagrama de Sequência: apresenta a sequência de troca de mensagens entre os objetos. !

i

I
I
I
INSTITUTO INFNET - 210
I

::I
UML-155D

::I

ci.

:I ;:
-'
o
«
Diagrama de Sequência
o
<
~
:I Li
L

• Mostra interações (trocas de mensagens) entre


L

~
objetos em uma sequência temporal.
::I ~::
c • É utilizado para descrever casos de uso,
::::
<
>
métodos e serviços.
:I '"..L!
:J
:z:::

..s o
<
• Facilita a visualização da dinâmica do sistema,
~ pois mostra quais os métodos e as situações
i:
I:
:;: em que eles serão chamados.
s
~ • Enfatiza o ordenamento temporal das
~
operaçoes.
::I

211

::I

Os diagramas de seqüência são utilizados para descrever o fluxo de execução de casos de


~ uso, métodos e serviços (transações complexas e web services). Neles são representados atores,
objetos e métodos ordenados por tempo. Possibilitam que o fluxo de execução seja, ao mesmo
~ tempo, documentado e validado.
Oferecem um excelente nível de detalhamento e facilitam a visualização da dinâmica do
sistema. Por isso é considerado um dos mais importantes diagramas da.UML, sendo a técnica
~ preferida de modelagem da dinâmica de um sistema.


~
Os diagramas estudados até aqui não possuem qualquer significado com relação a posição
relativa de seus elementos. Nos diagramas de sequência esta posição é importante pois eles podem
ser conssão gráficos 2D, nos quais o eixo horizontal representa a execução de um determinado
método e o eixo vertical mostra quais métodos são chamados.
Ferramentas case possuem muitas facilidades para o relacionamento entre diagramas de
classes e de sequência, como por exemplo: escolha de um método existente em uma classe,
:11
criação de novo método, uso e criação de classe dinamicamente, entre outras.


:I



=ti
INSTITUTO INFNET - 211
UML-I55D

-
<i.
c
f
~
o
.<t

Componentes Principais

<t
o

-f
::>
c
w
li:;
z
u..
~ jObjetol jObjeto2
ti:
o
Q.
CIl
o
c
<t
j: Ator
-
E

-
r
>
ti:
W 1 : mensagem 1() 2 : mensagem2()
CIl
W
. ti:
o
.<t

-
r
CIl

CIl
3 : resposta 1
...
o
u:; 4 : m nsagem3()
ti:
C 5 : menseqerns

-
r
CIl
o
CIl ~----------- ---------- --­
o : 6 : resposta2
c
...
o

-
~

-
I 212
f

Diagramas de sequência são construídos de acordo com as seguintes convenções:


• Linhas verticais representam os objetos;
-
r

• Setas horizontais representam as mensagens passadas entre os objetos; ..r


• Rótulos das setas são as mensagens, na maioria das vezes operações;
• A posição na vertical mostra o ordenamento relativo das mensagens, o decorrer das
ações no tempo;
-
f

• Retângulos situados nas linhas verticais para indicar o tempo de vida dos objetos (caixas

de ativação).

• A caixa de ativação indica o tempo que o objeto ficará ativo em memória. Esta figura

representa que o objeto l irá acionar um método de outro objeto e ficará ativo aguardando

sua resposta (método síncrono) para posteriormente acionar um método próprio.

• A mensagem4 representa um método assíncrono, ou seja, um método que é invocado

sem que o chamador precise ficar aguardando a resposta.

• A representação da seta de retomo é facultativa.

-
'E

-
E

-E
INSTITUTO INFNET - 212
=­ UML-1550

3
~

=- ~

<
:>
~
Componentes
~ il
ii: • A representação de uma classe pode aparecer
z
Lo
~

=- ~
~

<:
>
:c:
no lugar de um objeto, mas sempre
respeitando a regra de nomenclatura:
~ JJ.

'"
.LI.
l:
c1ientel:Cliente
<
D

=-
li
::: Objeto:Classe
il
~

~ ..
~
f? :Ciiente

=­ 213

:3

=­ Existe a possibilidade da representação de classes em um diagrama de sequência, o que é


comumente utilizado quando não se tem necessidade de um elemento específico de uma classe,

:­ por exemplo uma listagem de clientes. Outra situação para a utilização de classes é a chamada a
métodos de classe (métodos que não precisam de objetos para serem chamados).
Se for necessário o acesso a uma instância específica da classe é utilizada a notação nome

=­ do objeto ":" e o nome da classe.


A representação dos objetos no diagrama de sequência sempre é seguida do nome da classe

=­ ao qual eles pertencem.


A posição dos objetos também tem significado: um objeto que esteja posicionado acima da

=­ primeira chamada do diagrama já existia (já havia sido instanciado) antes do início da operação
descrita.

:I

:I



:li
INSTITUTO INFNET - 213
:I
UML-~

<i.
o
~
o

Exemplo: Agenda

C>
o
«
~
o
w
...w
Z
u.
~
a:
~
CIl
o I: Usuário
o 1 : dados do contata0
«
iC
w Nome válido
CIl
~. 3 : valídarNo_fY)~O- ~ , _-- ­ - - --­ ~ - -. -. possui duas palavras
o

CIl

CIl
4 : nomeválido
...o
jjj
a:
Õ
CIl
o f«--------------------­
CIl 6 : contato cadastrado
o
o
~

214

o diagrama acima mostra a representação do caso de uso "Inserir Contato" em uma agenda.
Como este diagrama é uma descrição de casos de uso, não é necessário ( e nem desejável)
especificar exatamente quais são as classes de interface e de controle. Para indicar a existência
deste tipo de classe sem a necessidade de detalhamento é comum a utilização de uma classe
denominada "Fronteira" (Boundary no original).
A condição de guarda (texto entre colchetes) mostra alternativas possíveis durante a
execução de uma função.
O estereótipo "create" é utilizado para indicar uma mensagem de criação.
Anotações são utilizadas para inserir informações adicionais, normalmente referentes a
forma como certos trechos do diagrama devem ser implementados.
A ativação determina uma janela no tempo em que o objeto está executando uma ação, que
pode ser seu próprio código ou aguardando o retorno de alguma mensagem enviada. Ocorre
quando o objeto recebe uma mensagem.
A linha da vida representa a existência do objeto em um dado momento. As mensagens são
mostradas como setas (síncronas, assíncronas ou simples) entre as linhas de vida.
Diagramas de seqüência podem ser das formas genéricas ou instância. Na forma de
instância, mostra as interações necessárias em um cenário específico em detalhes. Na forma
genérica mostra todas as possíveis alternativas de um cenário.

INSTITUTO INFNET - 214


~ UML-1550

:I

~
::3
--'
o
.,.
<
Criação e Destruição de Objetos
<

:I
~;:iZ
z /Fronteira

~

::I
~
5 i: Usuário
:ê> 1 : dados do contato()

~ i5
'":o::
.u
::J
<
'"'"o
:t Li

3 : exclusão()
<<destroy>>
4
:::
5
:I ::
~
Õ

:J

215

:I

::J
Criação e exclusão de objetos também são representados em um diagrama de sequência.
Quando uma mensagem de criação é enviada (geralmente síncrona), o símbolo do objeto é
mostrado no local onde foi criado.
::I

No diagrama pode-se observar que a instância de Contato é criada a partir da Fronteira. Note
que a instância da Fronteira aparece um pouco abaixo da instância da janela, indicando que ela foi
::I
criada depois.
A figura mostra um 'X' na linha de vida da instância de Contato indicando a sua exclusão.
::I
Note que a linha de vida do objeto não segue adiante, ou seja, ele não pode mais ser acessado.
Como em muitas linguagens modernas não existe a possibilidade do programador solicitar a
:J
exclusão de um objeto, este símbolo não aparece muito nos diagramas atuais.

::I

:J
:i
:I
INSTITUTO INFNET - 215
~

UML-I550

<i.
o
~
o
'<O:
Exemplo: Banco Money

<O:
U
:>
o
w

IFronteira. I Conta.Corrente I1 Cliente I


Z

u,
~
11: pessoa
o I
o..
'"oo
<O:
; 1 : Informar Agêr.ciarIConta( 2 : validarCoota()

>
11: K---- -- - - - ---- - - - - - - --- - - ----- - - - - - - - - - - - - - - ­ o. ]

w 4 : Solicitar Valor e Tipo 3 : conta válida :


'"
w
11:.
o
'<o: : S: Valor e Tipo Depósito(). : 6 : busca;f\Iome()
'"
'"
o

W
11:
:
l--------- _h

8 : nome parcial
rt_-----------i~~;i~~i;;; is L~~
lr : d~-~~~~- --------- --~Q:
Õ
: '
'"o : 9 : Confirmação() ! «(reate»
10
'"oo
o

216
'~

o diagrama acima mostra a sequência de mensagens do caso de uso efetuar depósito do


Banco Money.
A fronteira representa a interface entre o usuano e o sistema. É usada para esconder os
detalhes da interação, facilitando o foco na modelagem do processo.
O ator "pessoa" fornece dados para o sistema em três situações diferentes, recebendo a
resposta em cada uma delas. Nem sempre a resposta é mostrada, pois em muitas situações ela é
bastante óbvia. Omitir a resposta toma o diagrama mais legível.

INSTITUTO INFNET - Z16


r
I
UML-I550
I:
E


o
!:i
o

Descrevendo um Caso de Uso I:


«
o
::l
o
w
tuz • Os diagramas de seqüência são orientados E

u,
;t;
a:
o
!1.
para exprimir o desenrolar temporal de !:
CIl
o
o
«
seqüências de ações. E" difícil representar
ir
w
CIl
w
lógicas de seleção e repetição sem prejudicar a I:
a:
o

CIl

legibilidade do diagrama,
~
CIl

o

m
a: • Os roteiros representam desdobramentos da
C
CIl
o lógica do caso de uso. E" preferível usar
CIl
oo ~
o
I- diagramas separados para representar roteiros
resultantes de diferentes caminhos lógicos. E

218
I:
E

.~

INSTITUTO INFNET - 218


:3
UML-1550

:I

:3
--'
o
«
Caso de Uso: Registrar Venda
:.Jo
<
o
::?
~ i3
.Li..:
• Partindo de um Caso de Uso ...
Z

.....
:?;
'" - O Caixeiro registra itens de mercadoria.
::I
~
~
<:
:>
- O Sistema totaliza venda.
I::

~ - O Caixeiro registra modo de venda.


J...:
::
:o
>::
~
::
::
- Se venda a prazo, o Caixeiro insere venda em
:JI
o
:ti
I::
contas a receber.

:;::;
5 - Senão, o Caixeiro registra pagamento.

:I
õ
:l

:I

219

:I

~ o diagrama de sequência pode ser feito a partir da descrição do caso de uso e da definição
das classes.
Ele é um descobridor de métodos das classes pois normalmente quando desenhamos o
:=I
diagrama de classes não temos uma idéia muito clara a respeito das interações, métodos e objetos.
Desenhar um diagrama de classes sem o auxílio do diagrama sequência é uma tarefa difícil,
~ principalmente quando o desenvolvedor não conhecer a fundo o processo ou quando ele for
inexperiente.

:I
A descrição acima se refere a um processo de registro da venda em um supermercado. Na
descrição existem duas condições que podem ser identificadas em diagramas separados ou no
mesmo diagrama.
:I
As operações descritas devem ser traduzidas em chamadas a métodos e, portanto, este é o
momento para decidir qual classe conterá o método se por acaso ele ainda não existir no diagrama
~ de classes.

:I


~
INSTITUTO INFNET - 219
=s

UML -1550

c(

Registrar Venda a Vista


(J

~
o


«
o
::l
(J
w

w
• Cria-se o Diagrama de
:Venda :Caixa

*
Z
u,
~
Seqüência Principal I
I I I I
a:
I~
I I
o
O-

Ul

• O fluxo alternativo é :Caixeiro


I
I
I
I
o I I I
(J
« ignorado pois será I
I
I
I
I
>
a:
w desenhado em outro I 1: totalizar( i, : I
I
ffi
o
a:

Ul

diagrama de sequência. "U


2: registrarM2.do( )
Ul

o
t:
w
a:
E
/0 I
Ul
O 3: reqistrarPaqamento() ,
Ul
O
(J
O
f- '-
I
I
I
/0
I I I
I I
I

220

o primeiro diagrama desenhado refere-se ao fluxo típico. Neste caso como não há indicação
clara de qual é o fluxo típico, escolhe-se um deles como principal.
Observe que a sequência de passos da figura é a mesma da descrição do caso de uso. A
novidade aqui é a identificação das classes "donas" dos métodos.

" /,
\yJjJ'-- .~. [)/W .
'xJ ./~,
\
'~íY !E:

'~

INSTITUTO INFNET - 220


:3
UML-1550

~
~
:ti -
.<::>
Registrar Venda a Prazo
~
~ ü
ii
• Diagramas de
I :Contas a I
zLo :Venda

*
~ Seqüência I I receber

~
I I
:]I Alternativos :Caixeiro
I
I
I
I
~ I I I
<: I I
• Neste diagrama I I

..
> I
z:: I

~
..,; I 1: totalizar( )" :
JJ.
z::
.<..
foi desenhado o /U I
I
I

.. fluxo alternativo 2: registrarModo( )


I
I
I

:11 :;
u ~O
I
I
I
~ I

~
..
~
I
13: inserir(Venda)
I
I
:2
"3
I
I
I
/0 I

I I
I
I
I
I,
~
221
\
:I "

=t
~

=t
:=I
:=J
INSTITUTO INFNET - 221

::li
r

I UML-1550 -
;:

<i.
o
~
o
'<1:

<I:
o
Condição de Guarda - f

-E
:::>
ow
tuz
u,
• Um fluxo pode ser executado dependendo de
~
uma determinada condição:

­
lI:
o
c,
Ul
E
oo
<I:
- [condição] - lógica de seleção

-
>
lI:
W
E
Ul
W
lI:
• Exemplo:
'o
'<1:
I IFronteira I
-
Ul

Ul

o
I I : Ag,enda I E
l::
w
lI:
Õ

-
Ul
o
Ul
oo
1 [nome válido] : inserirContatoO
... ' ~
~
D
r ..

222

- ~

Uma determinada mensagem pode estar sujeita a condições para a sua ativação. Estas
condições são mostradas no diagrama como textos entre colchetes acima ou à frente do nome do
método invocado.
-
~

Na figura acima o método inserirContato da classe Agenda só será chamado se o nome do


contato for válido. É comum o retomo de um método chamado previamente ser usado como a
condição de execução da mensagem.

-2
-
c:
~

-
E

-
~

-
E

-f
-
INSTITUTO INFNET - 222
E
3
UML-155D

~
~ -
.:<:.;.
Condição de Guarda
C(

~
;,:

3
i1

'"
Z
[ :Venda
I
:Contas a I

receber I

.Caixa
Lo I
I

~ I
I

:I: :Caixeiro I
I

3
~
Ê
I
I

I
I

<: I 1: totalizar( ) , I
I

..
:> I

:I:
.... .~ I

~
I

i§ I

....

o
<
2: registrarMod~( )
/0
I

::I
2

Li
[Venda a Pra:zo]
I

~
..
o 3: inserir(Venda)
>0
I

=­ g
o
I

[Venda a Vista]
4: registrarJDagamento( )
I

::11
I

223

=­ o exemplo acima mostra o caso de uso descrito por apenas um diagrama. Isto foi possível
graças ao uso das condições de guarda. Se a venda for a prazo, o método inserir da classe Contas a
Receber é chamado. Se a venda for a vista, o método registrarPagamento da classe Caixa é
~ chamado.

:íI
~

:I

:!I

INSTITUTO INFNET - 223


~

UML-I550

<i
o
~
o
'<c
Iteração

<C
o
::l
o
W
• Um fluxo pode ser repetido diversas vezes de
ti;
Z
u,
;;
acordo com alguma condição de guarda:
a:
oo..
CIJ
- *[condição] -lógica de iteração (loop).
o
o
<C
>
a:
l/Fronteira I
w
CIJ
w
a:
O' /: Usuário

'<C : 1: palavra chevef)


2 : buscarContatosO
CIJ
~
CIJ
o 3: montarRespostaO
!:: ,---------,
w
a: <<create> > II:Contato I
Õ
CIJ
4 "[pera cada contato] I I
o
CIJ
o
o
1
~ 1'::- ------- ---- ---- ---­
5 : contatos encontrados
~-------------------
: 6: lista de contatos ';

224

Iterações (repetições) são especificadas como condições de guarda precedidas de um


asterisco.
O diagrama de sequência acima é a descrição do caso de uso "Buscar Contatos" de um I~
sistema de agenda eletrônica. O usuário informa a palavra chave e a fronteira invoca o método
"buscarContatos" da classe Agenda. Este método por sua vez, chama o método montarResposta
que cria um objeto do tipo Contato para cada contato encontrado de acordo com o critério de
busca.

INSTITUTO INFNET - 224


=­ UML -1550

:a

~ -
-<:;;;
Anotações
<

:a :;;:
:;;:
Z
JL.
• Diagramas de seqüência também podem ser
~
complementados por meio de anotações.
:a 2
~
• Os detalhes de processamento que não
<'
..
:>
:z:

:=J .11

LI.
:z:
correspondem a interações entre classes são
..
.:< lançados como anotações.
~
::I :;;:
~ • Essas anotações podem servir como
~
~
especificações das operações das classes
~ envolvidas.
~
225

~ No caso de diagramas de sequência, anotações podem ser usadas para descrever o conteúdo
de métodos.

=­:r.

:I

:J

=t
:J
::I
:=I
INSTITUTO INFNET - 225
:I

UML- L55G

<i
o
~
o

Anotações

o
«
::::>
o
w

w
Z
u, :km : Ccclrõh" &e. GêSeC_.,z-e
~ , G;::.f:d9t dA
FemBrAdmeS f,:;n-.g:~<kl·e~
a: ~
oQ.
rJl
o
o
« habilita o ~13rnP3' Código­
> 1rmro-rnece.-.iores eXlbê ê
a:
w
rJl
w
a:
da Nove Mi'fcaJ.::tiEt e c besêc OK.
li:
d

rJl
rJl
o

m
a:
Õ
rJl
o
rJl
"~.,,~".,~,.c:~' )
o
o
o

Gf{:=m-;;;l":=of:::-n;~::-:-::-.d~Qf:="-=-':=,::-g.:-::-'c.:=OO;=d,,"--,,"--,,+:e,"--$a-:CbJ:""-1itac:-:-"-=-c.s=m:=.pô-=-.-----...
I Cbd ,god di Nü'!o1El fi! €f;;:;.sdórl a ~ 6 00 §O Oi<.

I
226

Exemplo de anotações com detalhes de implementação.

INSTITUTO INFNET - 225