17
-- ::i =:i <i. =- c l- ....l o < C> -c ::I '" o "" l- cJ Z e, ::J '" o '" -c :l: ::i "" '" > .:.J X o '" ., o l- ::i < :;j x :5 ... ::I ., o '" o O, :i ::I =- :I :3 =- =- :I =- 5.2 - Diagrama de Sequência Bloco de Construção do Aprendizado UML-1550 INSTITUTO INFNET - 209

Diagrama de Sequencia

Tags:

Embed Size (px)

Citation preview

Page 1: Diagrama de Sequencia

--

::i

=:i <i.

=- c l ­....l

o < C> -c ~

::I '" o

""l ­cJ Z e,

~

::J ~ '"o '"-c :l:::i "" '"

>

.:.J X o

'"., o l ­::i <

:;j x :5

...::I

., o

'" oO,

:i

~

::I

=­~

:I

:3

=­=­:I

~

~

5.2 - Diagrama de Sequência

Bloco de Construção do Aprendizado

UML-1550

INSTITUTO INFNET - 209

Page 2: Diagrama de Sequencia

I r

<i o ~ o.« o­« o :J o w f­w Z u. :i: o: o Q.

(fJ

o o « >o: w (fJ w

,o: o.« (fJ

(fJ

o !::: w o: i5 (fJ

o (fJ

o o o f ­

UML-I550

Tipos de Diagramas

• Interação é o conjunto de mensagens trocadas entre objetos

• Uma interação pode ser representada enl UML de quatro maneiras: - Diagrama de Visão Geral

- Diagrama Temporal

- Diagrama de Comunicação

- 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:

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 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.

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.

Diagrama de Sequência: apresenta a sequência de troca de mensagens entre os objetos.

INSTITUTO INFNET - 210

I

I

i•

I•

i-!

i•

I

I

I

I•

Page 3: Diagrama de Sequencia

::I

::I

:I

:I

::I

:I

~

~

::I

::I

~

~

~

=­~

:11

=­:I

=­=­=ti

ci. ;: -' o « o <

~ Li L Z L

~

~ :: c :::: <

L!'"..>

:J :z::: o <.. s i: I: :;:

s ~

UML-155D

Diagrama de Sequência

• Mostra interações (trocas de mensagens) entre objetos em uma sequência temporal.

• É utilizado para descrever casos de uso, métodos e serviços.

• Facilita a visualização da dinâmica do sistema, pois mostra quais os métodos e as situações em que eles serão chamados.

• Enfatiza o ordenamento temporal das operaçoes.

211

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, criação de novo método, uso e criação de classe dinamicamente, entre outras.

INSTITUTO INFNET - 211

Page 4: Diagrama de Sequencia

UML-I55D

<i. c ~ o .<t o­<t o ::> c w

li:; z u.. ~ ti: o Q.

CIl o c <t >ti: W CIl W

. ti:

o .<t CIl CIl o... u:; ti: C CIl o CIl o c o...

Componentes Principais

jObjetol jObjeto2

j: Ator

1 : mensagem 1() 2 : mensagem2()

3 : resposta 1

4 : m nsagem3()

5 : menseqerns

~----------- ---------- --­: 6 : resposta2

f--fE-r-r-r-~-

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

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

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

ações no tempo;

• 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

Page 5: Diagrama de Sequencia

3 =­

~ ~

<=- :> ~

~ il ii: z Lo

=-~

~ ~

<: >:c: JJ.~ .LI. '" l:

<D

:::li

il =- ~

.. ~

~ f?

=­:3

=­:­

=­=­=­:I

:I

=­:li

:I

UML-1550

Componentes

• A representação de uma classe pode aparecer no lugar de um objeto, mas sempre respeitando a regra de nomenclatura:

c1ientel:Cliente

Objeto:Classe

:Ciiente

213

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.

INSTITUTO INFNET - 213

Page 6: Diagrama de Sequencia

<i. o ~ o,« C> « o o ~

w ... w Z u. ~ a: ~ CIl o o « iC w CIl

~. o,« CIl CIl o... jjj a: Õ CIl o CIl o o ~

UML-~

Exemplo: Agenda

Nome válido

3 : valídarNo_fY)~O- ~ , _-- ­ - - -- ­ ~ - -. -. possuiduas palavras

I: Usuário 1 : dados do contata0

214

4 : nomeválido

f«-------------------- ­6 : contato cadastrado

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

Page 7: Diagrama de Sequencia

~

:I

::3

:I

::I

~

:t

:I

:J

:I

::J

::I

::I

::I

:J

::I

~

:J

:i

:I

~ --' o <.,. < ~ iZ ;: z ' ­~

~ 5 :ê > i5 .u '" :o:: ::J <'" o Li E

'" :::

5 :: ~ Õ

UML-1550

Criação e Destruição de Objetos

/Fronteira

i: Usuário 1 : dadosdo contato()

<<destroy>> 3 : exclusão() 4

215

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.

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 criada depois.

A figura mostra um 'X' na linha de vida da instância de Contato indicando a sua exclusão. 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 exclusão de um objeto, este símbolo não aparece muito nos diagramas atuais.

INSTITUTO INFNET - 215

~

Page 8: Diagrama de Sequencia

<i. o ~ o

'<O: o­<O: U :> o w f ­w Z u,

~ 11: o o..

o '" o <O: >11: w w '" 11:.

o '<o:

'" o '" f­W 11: Õ

o '" o '" o o f­

UML-I550

Exemplo: Banco Money

IFronteira. I Conta.Corrente I1 Cliente I

pessoaI

; 1 : Informar Agêr.ciarIConta( 2 : validarCoota()

K---- -- - - - ---- - - - - - - --- - - ----- - - - - - - - - - - - - - - ­ o. ]

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

: S: Valor e Tipo Depósito(). : 6 : busca;f\Iome()

l- --------_h rt_-----------i~~;i~~i;;; is L~~ d~-~~~~- --------- --~Q : 8 : nome parcial lr : : : '

«(reate»: 9 : Confirmação() !

10

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

Page 9: Diagrama de Sequencia

Ir

<é o !:i o .« o­« o ::l o w tu z u, ;t; a: o !1. CIl o o « ir w CIl w a: o.« CIl CIl o l ­m a: C CIl o CIl o o o I-

Descrevendo um Caso de Uso

• Os diagramas de seqüência são orientados para exprimir o desenrolar temporal de

" seqüências de ações. E difícil representar lógicas de seleção e repetição sem prejudicar a legibilidade do diagrama,

• Os roteiros representam desdobramentos da " lógica do caso de uso. E preferível usar

diagramas separados para representar roteiros resultantes de diferentes caminhos lógicos.

218

UML-I550 I:

E

I:

E

!:

I:

~

~

E

I:

E

.~

INSTITUTO INFNET - 218

Page 10: Diagrama de Sequencia

:3

:I

:3

~

::I

~

:JI

:I

:I

:I

~

:=I

~

:I

:I

~

~

:I

=­~

=s

~

--' o « :.Jo < o ::? i3

.Li..: Z ..... :?;

'" ~

~ <: :> I:: J...: :: :o >::

~ :: :: o :ti I:: :;::;

5 õ :l

=

UML-1550

Caso de Uso: Registrar Venda

• Partindo de um Caso de Uso... - O Caixeiro registra itens de mercadoria.

- O Sistema totaliza venda.

- O Caixeiro registra modo de venda.

- Se venda a prazo, o Caixeiro insere venda em contas a receber.

- Senão, o Caixeiro registra pagamento.

219

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 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.

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.

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.

INSTITUTO INFNET - 219

Page 11: Diagrama de Sequencia

c( (J

~ o.« o­« o ::l (J w f ­w Z u, ~ a: o O-

Ul o (J

« >a: w ffia: o.« Ul Ul o t: w a: E Ul O Ul O (J

O f-

UML -1550

Registrar Venda a Vista

• Cria-se o Diagrama de

* :Venda :Caixa

Seqüência Principal II I I I

I I I~• O fluxo alternativo é I

I

I

I:Caixeiro I I

I I I

desenhado em outro I 1: totalizar( i , : II

diagrama de sequência.

ignorado pois será I I I

"U 2: registrarM2.do( )/0

I

3: reqistrarPaqamento() , I I /0

'- I 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 ./~,

!E:'~íY

'~

INSTITUTO INFNET - 220

Page 12: Diagrama de Sequencia

:3

~ ~ -:ti .< ::>

~ ü~ ii z Lo

~

:]I ~ ~ <: >z:: ....,;

JJ. ~ z::

.<.... :;:11 u ~

.. ~

~ :2 "3

~

:I

~

~

~

=t

~

~

~

=t :=I

:=J

::li

UML-1550

Registrar Venda a Prazo

• Diagramas de

* :Venda

Seqüência I I IAlternativos I

:Caixeiro I

• Neste diagrama foi desenhado o fluxo alternativo

I I I

I I ,

I I I

1: totalizar( )" :/U 2: registrarModo( )

~O I 13: inserir(Venda) I I I I I

221

" \

I receber Contas a I :

I I I I I I I I I I I I I I I I I I I I/0 I I

INSTITUTO INFNET - 221

Page 13: Diagrama de Sequencia

I r

<i. o ~ o

'<1: o­<I: o :::> o w

tu z u, ~ lI: o c, Ul o o <I: >lI: W Ul W lI:

'o '<1: Ul Ul o l:: w lI: Õ Ul o Ul o o ~

UML-1550

Condição de Guarda

• Um fluxo pode ser executado dependendo de uma determinada condição: - [condição] - lógica de seleção

• Exemplo: IFronteiraI I I I : Ag,enda I

1 [nome válido] : inserirContatoO ...D

'

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.

;: ' ­-

f-E-E­E-E-~-r.. ~-~-

-2c: ~-E-~-E-

-fE-INSTITUTO INFNET - 222

Page 14: Diagrama de Sequencia

UML-155D

Condição de Guarda

:Contas a I~ [ :Venda .Caixa I receber II

~ -.:< :.;. C(

;,: i1

Z '" Lo

~ :I:

~

Ê <: :> ..:I: ....i§

<..o

.. 2 Li

~ .. o o g

I I

:Caixeiro I

I II I I

I I 1: totalizar( ) , I

.~

2: registrarMod~( )

/0 I

[Venda a Pra:zo] 3: inserir(Venda)

I >0I

[Venda a Vista] 4: registrarJDagamento( )

I I I I

I I I I I I I I I I I I I I I I I I I I 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.

3

3

~

3

3

~

::I

=­::11

3

=­~

~

:íI

~

~

~

~

:I

:!I INSTITUTO INFNET - 223

~

Page 15: Diagrama de Sequencia

<i o ~ o '<c o­<C o ::l o W

ti; Z

;;u,

a: o o.. CIJ o o <C >a: w CIJ w a: O'

'<CCIJ CIJ o !:: w a: Õ CIJ o CIJ o o ~

UML-I550

Iteração • Um fluxo pode ser repetido diversas vezes de

acordo com alguma condição de guarda: - *[condição] -lógica de iteração (loop).

l/Fronteira I

/: Usuário : 1: palavra chevef) 2 : buscarContatosO

~ 3: montarRespostaO

,---------, <<create>> II:Contato I

4 "[pera cada contato] I I

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

Page 16: Diagrama de Sequencia

=­:a

-~ :;;;

:;;::a -<<

:;;: Z JL.

:a ~

2 ~ <' :z: .11

LI.:=J ..:>

:z:

.:<.. ~::I :;;: ~

~

~ ~

~

~

~

~

=­:r. :I

:J

=t

:J

::I

:=I

:I

~

UML -1550

Anotações

• Diagramas de seqüência também podem ser complementados por meio de anotações.

• Os detalhes de processamento que não correspondem a interações entre classes são lançados como anotações.

• 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.

INSTITUTO INFNET - 225

Page 17: Diagrama de Sequencia

<i o ~ o.« o­« o ::::> o w t­w Z u, ~ a: o Q.

rJl o o « >a: w rJl w a: d,« rJl rJl o t­m a: Õ rJl o rJl o o o t­

, G;::.f:d9t dA

~

UML- L55G

Anotações

:km : Ccclrõh" &e. GêSeC_.,z-e

FemBrAdmeS f,:;n-.g:~<kl·e~

1rmro-rnece.-.iores eXlbê ê habilita o ~13rnP3' Código­da Nove Mi'fcaJ.::tiEt e c besêc OK. li:

"~.,,~".,~,.c:~' )

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