Capítulo 2 - DI PUC-Rio

Propaganda
INF1013 – MODELAGEM DE SOFTWARE
Departamento de Informática – PUC-Rio
Ivan Mathias Filho
[email protected]
Programa – Capítulo 2
• A Modelagem Dinâmica
• Diagramas de Interação
• Diagrama de Seqüência
© LES/PUC-Rio
1
Programa – Capítulo 2
• 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;
• 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.
© LES/PUC-Rio
2
Dinâmica de um Sistema
Estímulo
Externo
Resposta
© LES/PUC-Rio
Interações entre Objetos
Objeto B
Objeto C
Objeto A
Objeto D
© LES/PUC-Rio
3
Envio de Mensagem
void UmMetodoA(int p)
{
TipoC c = new TipoC();
String s = c.umMetodoC(p);
}
Objeto A
Objeto C
String
© LES/PUC-Rio
Programa – Capítulo 2
• A Modelagem Dinâmica
• Diagramas de Interação
• Diagrama de Seqüência
© LES/PUC-Rio
4
Diagramas de Interação
• A UML provê dois tipos de diagrama – genericamente
chamados de diagramas de interação – para
representar a troca de mensagens entre objetos:
– Diagrama de Seqüência;
– Diagrama de Comunicação.
© LES/PUC-Rio
Diagrama de Seqüência
public class A
{
private B b=new B();
public void ma1()
{
b.mb1();
b.mb2();
}
// ...
}
© LES/PUC-Rio
5
Diagrama de Comunicação
public class A
{
private B b=new B();
public void ma1()
{
b.mb1();
b.mb2();
}
// ...
}
© LES/PUC-Rio
Quadro Comparativo
© LES/PUC-Rio
6
Programa – Capítulo 2
• 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
participantes quase sempre serão interpretados como tal.
© LES/PUC-Rio
7
Instância Anônima
© LES/PUC-Rio
Instância Nomeada
© LES/PUC-Rio
8
Coleções
© 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
9
Expressão de Mensagem
<retorno> = <nomeMensagem> (<parâmetro> : <tipoParâmetro>) :
<tipoRetorno>
• Exemplos:
– inicializa( )
– inicializa(codigo)
– d=getEspecificacaoProd(id)
– d=getEspecificacaoProd(id:int)
– d=getEspecificacaoProd(id:int):String
© LES/PUC-Rio
Tipos de Mensagem
• Call – invoca uma operação sobre um objeto;
• Return – retorna um valor para quem enviou a mensagem;
• Send – Envia um sinal para um objeto (comunicação
assíncrona);
• Create – Cria um objeto;
• Destroy – Destrói um objeto.
© LES/PUC-Rio
10
Notação
© LES/PUC-Rio
Mensagens – Exemplo
© LES/PUC-Rio
11
Execução Sobreposta
© LES/PUC-Rio
Mensagem de Retorno
• Existem duas maneiras de representar o resultado
retornado por uma mensagem:
– Usando a sintaxe <retorno>=<nomeMensagem> ;
– Usando uma mensagem de retorno no final de uma barra
de execução;
– Neste caso, a 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
(tela) de comunicação com o usuário.
© LES/PUC-Rio
12
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
13
Criação de um Objeto (1)
© LES/PUC-Rio
Criação de um Objeto (2)
© LES/PUC-Rio
14
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.
© LES/PUC-Rio
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
15
Frames (2)
© LES/PUC-Rio
Tipos de frames
A tabela a seguir sumariza os principais tipos de frame:
© LES/PUC-Rio
16
Loop
© LES/PUC-Rio
Opt
© LES/PUC-Rio
17
Alt
© LES/PUC-Rio
Iteração sobre uma coleção
© LES/PUC-Rio
18
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();
total+=subtotal;
}
return total;
}
}
© LES/PUC-Rio
Frames aninhados
© LES/PUC-Rio
19
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
assíncrona, uma vez que ela inicia a execução de uma
thread.
© LES/PUC-Rio
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
20
Código Java
public class ClockStarter
{
public void startClock()
{
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()
{
while(true)
{
...
}
}
}
© LES/PUC-Rio
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
21
Download