• Nenhum resultado encontrado

Modelagem dinâmica

N/A
N/A
Protected

Academic year: 2022

Share "Modelagem dinâmica"

Copied!
24
0
0

Texto

(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

(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;

(3)

Dinâmica de um sistema

Estímulo Externo

© LES/PUC-Rio

Resposta

Interações entre objetos

Objeto B Objeto A

Objeto C

Objeto D

(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 C

String

Programa – Capítulo 9

• A Modelagem Dinâmica

Diagramas de Interação

• Diagrama de Seqüência

(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 A public class A {

private B myB=new B();

public void doOne() {

myB.doTwo();

myB.doThree();

} // ...

}

(6)

Diagrama de comunicação

public class A public class A {

private B myB=new B();

public void doOne() {

myB.doTwo();

myB.doThree();

}

© LES/PUC-Rio

// ...

}

Quadro comparativo

(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 , , p ,

participantes quase sempre serão interpretados como tal.

(8)

Instância anônima

© LES/PUC-Rio

Instância nomeada

(9)

Coleções

© LES/PUC-Rio

Metaclasse

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

(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;

Destroy – Destrói um objeto.

(12)

Notação

© LES/PUC-Rio

Mensagens - Exemplo

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

A primeira opção nos permite uma especificação mais sucinta, enquanto a segunda nos permite especificar coisas mais gerais, como a criação de uma formulário

(14)

Mensagem de retorno - Exemplo

© LES/PUC-Rio

Mensagem para “this”

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

(15)

Criação de um objeto

© LES/PUC-Rio

Destruição de um objeto

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

(16)

Frames (1)

• Para representar estruturas condicionais e de repetição, a UML 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)

(17)

Tipos de frames

A tabela a seguir sumariza os principais tipos de frame:

© LES/PUC-Rio

Loop

(18)

Opt

© LES/PUC-Rio

Alt

(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();

subtotal=item.getSubtotal();

total+=subtotal;

}

(20)

Frames aninhados

© LES/PUC-Rio

Relacionando diagramas (1)

Uma ocorrência de interação é uma referência para um diagrama de interação a partir de outro diagrama de interação;

• Esta ferramenta deve ser usada quando:

Se quer simplificar um diagrama;

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

(21)

Relacionando diagramas (2)

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

© LES/PUC-Rio

Relacionando diagramas (3)

(22)

Relacionando diagramas (4)

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

© LES/PUC-Rio

Chamada de método estático

public class B {

public static void op1() {

}

(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 envio da 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 ada assíncrona, uma vez que ela inicia a execução de uma thread.

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.

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

Referências

Documentos relacionados

2016: SEMINÁRIO EM ANTA GORDA: INÍCIO DO PLEITO PARA CÂMARA SETORIAL E PROGRAMA Seminário e reuniões na SEAPI para construção.. do

Effects of Continuance, Affective, and Moral Commitment on the Withdrawal Process: An Evaluation of Eight Structural Equation Models.. The Academy of

Espera-se que o produto seja rapidamente biodegradado, entretanto, concentrações elevadas como em caso de derramamento, podem causar toxicidade aos organismos do solo.. Comentários:

Lernaea cyprinacea of Steindachnerina insculpta from Taquari River, municipality of Taquarituba, São Paulo State, Brazil.. Note the hemorrhagic area around the insertion point of

Os candidatos reclassificados deverão cumprir os mesmos procedimentos estabelecidos nos subitens 5.1.1, 5.1.1.1, e 5.1.2 deste Edital, no período de 15 e 16 de junho de 2021,

Desta maneira, observando a figura 2A e 2C para os genótipos 6 e 8, nota-se que os valores de captura da energia luminosa (TRo/RC) são maiores que o de absorção (ABS/RC) e

Após a coleta das informações, realizou-se a análise de variância (Anova) para comparar o efeito da variação dos parâmetros tamanho da população, número de indivíduos na

Se no cadastro da administradora, foi selecionado na aba Configurações Comissões, para que as comissões fossem geradas no momento da venda do contrato, já é