inf1404 – modelagem de sistemasivan/prominp/notasaula/ms-cap-10.pdf1 inf1404 – modelagem de...
TRANSCRIPT
1
INF1404 – MODELAGEM DE SISTEMAS
Bacharelado em Sistemas de Informação
Ivan Mathias Filho
Programa – Capítulo 10
• Exercícios
• Diagrama de Comunicação
© LES/PUC-Rio
2
Programa – Capítulo 10
• Exercícios
• Diagrama de Comunicação
© LES/PUC-Rio
Programa – Capítulo 10
• Exercícios
• Diagrama de Comunicação
© LES/PUC-Rio
3
Ligação
• Uma ligação é uma conexão entre dois objetos;
• Ela indica a existência de alguma forma de navegação e visibilidade entre eles;visibilidade entre eles;
• Informalmente, uma ligação é uma instância de uma associação.
© LES/PUC-Rio
Exemplo
© LES/PUC-Rio
4
Especificação do caminho
• Uma ligação especifica um caminho através do qual um objeto pode disparar uma mensagem para um outro objeto;
• Na maioria das vezes será suficiente especificar que tal caminho existe;
• Entretanto, se for necessário esclarecer a origem desse caminho, pode-se adornar o término de uma ligação com uma das seguintes restrições:
© LES/PUC-Rio
g ç
Tipos de restrições (1)
• association – especifica que o objeto ligado ao terminal em questão é visível através de uma associação;
• self – especifica que o objeto ligado ao terminal em questão é visível porque ele próprio é quem dispara a mensagem;
• global – especifica que o objeto ligado ao terminal em questão é visível porque ele está definido no escopo englobante.
© LES/PUC-Rio
g
5
Tipos de restrições (2)
• local – especifica que o objeto ligado ao terminal em questão é visível porque ele está definido no escopo local;
• parameter – especifica que o objeto ligado ao terminal em questão é visível porque ele é um parâmetro de uma operação.
© LES/PUC-Rio
Association
class A{
i t B B()private B p=new B();
public void op1a(){
p.op1b();}
}
class B {
public void op1b()
© LES/PUC-Rio
{}
}
6
Self
class A{
private B p=new B();
public void op1a(){
op2a();}
public void op2a(){}
}
© LES/PUC-Rio
}
Local
class A{
public void op1a(){
B p=new B();
p.op1b();}
public void op2a(){}
}
© LES/PUC-Rio
}
7
Parameter
class A{
public void op1a(B p){
p.op1b();}
public void op2a(){}
}
© LES/PUC-Rio
}
Global
class C{
private B p=new B();
class A{
public void op1a(){
p.op1b();}
public void op2a(){}
© LES/PUC-Rio
}}
8
Mensagem
• Uma mensagem entre dois objetos é representada por uma expressão de mensagem;
• Uma seta é usada para indicar o sentido da mensagem;
• Várias mensagens podem ser enviadas através de uma ligação;
• Números de seqüência são usados para indicar a ordem na
© LES/PUC-Rio
• Números de seqüência são usados para indicar a ordem na qual as mensagens são enviadas na thread de controle corrente.
Expressão de mensagem
<numeroSeqüência> � � �<condiçãoG������� ��������� �� �����M��������
�<parâmetro> � <tipoParâmetro>�p p
Exemplos:
• 1:op1()
• 2:op2(a,b)
© LES/PUC-Rio
• 3:[x>2] res:=op3(a:int,b:double)
• 1.1:* res:=op3(a,b)
• 1a : * [i:=1..10] op3(a,b)
9
Exemplo
© LES/PUC-Rio
Mensagem para “this”
© LES/PUC-Rio
10
Criação de um objeto
• Qualquer mensagem pode ser usada para criar uma instância;
• A UML, entretanto, estabeleceu a mensagem create como o padrão;
• Uso da mensagem create pode ser encarado como a forma padrão – aplicável a todas as linguagens de programação –de evocar o construtor;
© LES/PUC-Rio
• Se o nome da mensagem de criação não for óbvio, pode-se usar o estereótipo <<create>> para indicar o objetivo da mensagem.
Exemplo
© LES/PUC-Rio
11
Números de seqüência
• A ordem de envio das mensagens é definida através de números de seqüência;
• Os números de seqüência podem utilizar um esquema de numeração com vários níveis para tornar clara a existência de aninhamentos no envio de mensagens.
© LES/PUC-Rio
Exemplo
© LES/PUC-Rio
12
Mensagem condicional
© LES/PUC-Rio
Exclusão mútua
© LES/PUC-Rio
13
Iteração
© LES/PUC-Rio
Iteração sobre uma coleção
© LES/PUC-Rio
14
Mensagem para Classe
© LES/PUC-Rio
Chamadas assíncronas
© LES/PUC-Rio
15
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