24
1 INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho [email protected] Programa – Capítulo 9 A Modelagem Dinâmica Diagramas de Interação Diagrama de Seqüência © LES/PUC-Rio

INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

1

INF1404 – MODELAGEM DE SISTEMAS

Bacharelado em Sistemas de Informação

Ivan Mathias Filho

[email protected]

Programa – Capítulo 9

• A Modelagem Dinâmica

• Diagramas de Interação

• Diagrama de Seqüência

© LES/PUC-Rio

Page 2: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

2

Programa – Capítulo 9

• A Modelagem Dinâmica

• Diagramas de Interação

• Diagrama de Seqüência

© LES/PUC-Rio

Modelagem dinâmica

• Todo sistema pode ser decomposto segundo aspectos estáticos e dinâmicos;

• Os modelos dinâmicos capturam os detalhes da troca de mensagens entre os objetos de uma aplicação;

• Uma mensagem é simplesmente um operação que um objeto aplica sobre outro;

© LES/PUC-Rio

• As interações definem colaborações entre os objetos, e têm por objetivo fornecer os serviços que os usuários de um sistema necessitam.

Page 3: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

3

Dinâmica de um sistema

Estímulo Externo

© LES/PUC-Rio

Resposta

Interações entre objetos

Objeto B

Objeto AObjeto C

© LES/PUC-Rio

Objeto D

Page 4: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

4

Envio de mensagem

void UmMetodoA(int p){

Ti C C Ti C()TipoC C = new TipoC();String S= C.UmMetodoC(p);

}

© LES/PUC-Rio

Objeto A Objeto CString

Programa – Capítulo 9

• A Modelagem Dinâmica

• Diagramas de Interação

• Diagrama de Seqüência

© LES/PUC-Rio

Page 5: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

5

• A UML provê dois tipos de diagrama – genericamente chamados de diagramas de interação – para representar a troca de mensagens entre objetos:

Diagramas de interação

– Diagrama de Seqüência;

– Diagrama de Comunicação.

© LES/PUC-Rio

Diagrama de seqüência

public class Apublic class A{private B myB=new B();

public void doOne(){

myB.doTwo();myB.doThree();

}

© LES/PUC-Rio

// ...}

Page 6: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

6

Diagrama de comunicação

public class Apublic class A{private B myB=new B();

public void doOne(){

myB.doTwo();myB.doThree();

}

© LES/PUC-Rio

// ...}

Quadro comparativo

© LES/PUC-Rio

Page 7: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

7

Programa – Capítulo 9

• A Modelagem Dinâmica

• Diagramas de Interação

• Diagrama de Seqüência

© LES/PUC-Rio

Linha de vida

• O diagrama de seqüência é organizado em torno do conceito de linhas de vida;

• Uma linha de vida é um termo pouco preciso da UML, mas, informalmente, ela corresponde a um participante da interação;

• Não é correto afirmar que uma linha de vida corresponda a uma instância de uma classe, mas, na prática, os

© LES/PUC-Rio

, , p ,participantes quase sempre serão interpretados como tal.

Page 8: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

8

Instância anônima

© LES/PUC-Rio

Instância nomeada

© LES/PUC-Rio

Page 9: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

9

Coleções

© LES/PUC-Rio

Metaclasse

© LES/PUC-Rio

Page 10: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

10

Interface

© LES/PUC-Rio

Mensagem

• Uma mensagem é a especificação de uma comunicação entre objetos;

• O recebimento de uma mensagem dispara uma ação no objeto receptor – em geral, a execução de uma operação;

• Uma ação poderá resultar na mudança de estado do objeto receptor ou nos objetos acessíveis a partir dele.

© LES/PUC-Rio

Page 11: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

11

Expressão de mensagem

<retorno> = <nomeMensagem> (<parâmetro> : <tipoParâmetro>) :

<tipoRetorno>

• Exemplos:

– inicializa( )

– inicializa(codigo)

d tE ifi P d(id)

© LES/PUC-Rio

– d=getEspecificacaoProd(id)

– d=getEspecificacaoProd(id:int)

– d=getEspecificacaoProd(id:int):String

Tipos de mensagem

• Call – invoca uma operação sobre um objeto;

• Return – retorna um valor para quem enviou a mensagem;p q g ;

• Send – Envia um sinal para um objeto (comunicação assíncrona);

• Create – Cria um objeto;

© LES/PUC-Rio

• Destroy – Destrói um objeto.

Page 12: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

12

Notação

© LES/PUC-Rio

Mensagens - Exemplo

© LES/PUC-Rio

Page 13: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

13

Execução sobreposta

© LES/PUC-Rio

• Existem duas maneiras de representar o resultado retornado por uma mensagem:

– Usando a sintaxe <retorno>=<nomeMensagem> ;

Mensagem de retorno

Usando a sintaxe <retorno> <nomeMensagem> ;

– Usando uma mensagem de retorno no final de uma barra de execução;

– Neste caso, mensagem deve ser rotulada com o valor retornado.

© LES/PUC-Rio

A primeira opção nos permite uma especificação maissucinta, enquanto a segunda nos permite especificarcoisas mais gerais, como a criação de uma formulário(tela) de comunicação com o usuário.

Page 14: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

14

Mensagem de retorno - Exemplo

© LES/PUC-Rio

Mensagem para “this”

Podemos representar o envio de uma mensagem de um objeto para ele mesmo:

© LES/PUC-Rio

Page 15: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

15

Criação de um objeto

© LES/PUC-Rio

Destruição de um objeto

Em algumas circunstâncias é desejável mostrarexplicitamente a destruição de um objeto. Por exemplo,quando se usa a linguagem C++, que não possui coletaautomática de lixo.

© LES/PUC-Rio

Page 16: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

16

Frames (1)

• Para representar estruturas condicionais e de repetição, aUML 2.0 introduziu o conceito de frame;

• Um frame é uma região, ou fragmento, de um diagrama,que contém o seguinte:

– Um label (por exemplo, loop);

– Uma cláusula condicional, chamada de condição de guarda.

© LES/PUC-Rio

Uma cláusula condicional, chamada de condição de guarda.

Frames (2)

© LES/PUC-Rio

Page 17: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

17

Tipos de frames

A tabela a seguir sumariza os principais tipos de frame:

© LES/PUC-Rio

Loop

© LES/PUC-Rio

Page 18: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

18

Opt

© LES/PUC-Rio

Alt

© LES/PUC-Rio

Page 19: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

19

Iteração sobre uma coleção

© LES/PUC-Rio

Código Java

import java.util.Vector;

public class Venda{

private Vector<ItemVenda> itens = new Vector<ItemVenda>();

public double getTotal(){

double total=0.0,subtotal;

for(ItemVenda item : itens){

subtotal=item getSubtotal();

© LES/PUC-Rio

subtotal=item.getSubtotal();total+=subtotal;

}

return total;}

}

Page 20: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

20

Frames aninhados

© LES/PUC-Rio

Relacionando diagramas (1)

• Uma ocorrência de interação é uma referência paraum diagrama de interação a partir de outro diagrama deinteração;

• Esta ferramenta deve ser usada quando:

– Se quer simplificar um diagrama;

– Se quer reutilizar uma certa interação, fatorando um trocade mensagens em um diagrama reutilizável.

• Deve-se proceder da seguinte maneira:

© LES/PUC-Rio

• Deve-se proceder da seguinte maneira:

Page 21: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

21

Relacionando diagramas (2)

Criar um frame rotulado com sd em torno de umdiagrama de seqüência, e atribuir um nome ao frame, talcomo Figura 22 ou Figura 23 (próxima transparência):

© LES/PUC-Rio

Relacionando diagramas (3)

© LES/PUC-Rio

Page 22: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

22

Relacionando diagramas (4)

Criar um frame rotulado com ref (reference) em umdiagrama de seqüência qualquer, e estabelecer umareferência com o diagrama desejado.

© LES/PUC-Rio

Chamada de método estático

public class B{

public static void op1(){}

}

© LES/PUC-Rio

Page 23: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

23

Mensagens assíncronas

• Mensagens assíncronas não esperam por resposta,pois elas não ficam bloqueadas;

• Elas são usadas em ambientes multi-threaded, como o.NET e o Java;

• Em Java, por exemplo, podemos considerar que o envioda mensagem Thread.start() ou Runnable.run(),chamada por Thread.start(), representa uma chamada

© LES/PUC-Rio

c a ada po ead sta t(), ep ese ta u a c a adaassíncrona, uma vez que ela inicia a execução de umathread.

Mensagens assíncronas - Exemplo

Mensagens assíncronas são enviadas para objetos ativos, que são assim chamados por controlarem suas próprias threads de execução.

© LES/PUC-Rio

Page 24: INF1404 – MODELAGEM DE SISTEMASivan/PROMINP/NotasAula/MS-CAP-09.pdf · 2009. 9. 23. · INF1404 – MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho

24

Código Java

public class ClockStarter{

public void startClock(){

Thread t=new Thread(new Clock());Thread t=new Thread(new Clock());t.start(); // chamada assíncrona do método run()System.runFinalization();

}}

public class Clock implements Runnable{

public void run(){

© LES/PUC-Rio

while(true){

...}

}}

Bibliografia

• Bezerra, E. Princípios de Análise e Projeto de Sistemas com UML. 1ª edição, Campus, 2006.

• Larman, C. Utilizando UML e Padrões. 3ª edição, Bookman, 2007.

© LES/PUC-Rio