Escolar Documentos
Profissional Documentos
Cultura Documentos
=:i
--
=-
<i.
c
l
....l
o
<C>
-c
o
~
::I '"""
l
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
l
:;j
x
.,
:5
::I ...o
o
'"O,
:i
~
::I
=
~
:I
:3
=
=
:I
~
UML-I550
I
<i
o
~
o
.«
Tipos de Diagramas
o
«
o
:J
ow
f
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
i
•
I
I
I
INSTITUTO INFNET - 210
I
•
::I
UML-155D
::I
ci.
:I ;:
-'
o
«
Diagrama de Sequência
o
<
~
:I Li
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 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
o
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
• 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
-
'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
: 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
= 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.
: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
<O:
U
:>
o
w
f
u,
~
11: pessoa
o I
o..
'"oo
<O:
; 1 : Informar Agêr.ciarIConta( 2 : validarCoota()
>
11: K---- -- - - - ---- - - - - - - --- - - ----- - - - - - - - - - - - - - - o. ]
8 : nome parcial
rt_-----------i~~;i~~i;;; is L~~
lr : d~-~~~~- --------- --~Q:
Õ
: '
'"o : 9 : Confirmação() ! «(reate»
10
'"oo
o
f
216
'~
<é
o
!:i
o
.«
Descrevendo um Caso de Uso I:
o
«
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
l
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
.~
: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::
:;::;
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(
~
o
.«
o
«
o
::l
(J
w
f
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
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:
'~
~
~
: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
: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:
o
<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.
-
~
-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
UML-I550
<i
o
~
o
'<c
Iteração
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
224
: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
«
::::>
o
w
t
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
t
m
a:
Õ
rJl
o
rJl
"~.,,~".,~,.c:~' )
o
o
o
t
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