diagrama de seqüência - prof. josé eduardo teixeira ... · 2 características básicas • É um...
TRANSCRIPT
Diagrama de Seqüência
2
Características Básicas
• É um diagrama de interação e considera aspectos dinâmicos;
• Define como os objetos colaboram;• Ênfase na ordenação temporal;• Captura o comportamento de um cenário único;• Mostra objetos e as mensagens trocadas entre
eles, em um caso de uso;• São usados durante a análise do problema (alto
nível, com mensagens de negócio) e/ou durante o desenho da solução (foco na implementação, com mensagens descritas na forma de métodos que são implementados pelas classes.
3
Categorias de Objetos
• Objetos participantes (atores);• Objetos de interface com os atores (telas, etc);• Objetos de controle e eventos (controladores);• Objetos de entidades e de domínio (negócio e
integração).
4
Objetos Participantes (Atores)
• Pessoa ou outro sistema que interage com o sistema enviando e recebendo dados e controles;
• Demostram os contratos com o sistema;• As interações são capturadas nos Casos de Uso;
5
Objetos de Interface
• Objetos que fazem a comunicação entre o sistema e os objetos participantes (atores), para exibição ou coleta de dados;
• Em um sistema típico, é a interface gráfica com o usuário – GUI;
• Para aplicações Web baseadas em JEE, podem ser páginas JSP (usando ou não um framework) ;
• Para aplicações desktop em Java, podem ser instâncias de classes que usam Swing;
• São classes com estereotipo <<boundary>>.
6
Objetos de Controle
• Coordenam as solicitações dos usuários, vindas da camada de apresentação, e as operações de responsabilidade dos objetos de entidade e de domínio;
• São classes com estereótipo <<control>>.
7
Objetos de Entidades e de Domínio
• Armazenam e manipulam dados dos objetos do negócio e simulam o seu comportamento;
• São as classes de negócio da aplicação, levantadas de acordo com o domínio e vocabulário do problema;
• Definem os valores que um atributo pode assumir e as operações válidas para estes valores;
• Classes da arquitetura de persistência em banco de dados;
• Integram as bibliotecas das linguagens ou frameworks de persistência;
• Podem ser tipos de atributos ou classes de comunicação com o mecanismo de persistência (em uma aplicação Java típica, podem ser os Data Access Object – DAO).
• Classes com estereótipo <<entity>>
8
Visão das categorias
Objetos de Interface
Objetos de Controle
Objetos de Entidade Objetos de Domínio
Objetos participantes
BD
9
Grau de reutilização
Objetos de Interface
Objetos de Eventos (Controle)
Objetos de Entidade
Objetos de Domínio
Baixa reutilização
Alta reutilização
10
Representação dos Objetos
frmX
executaX
Xnumero : String
Usuario
11
Realização de Casos de Uso
• Os Casos de Uso capturam “o que” deve ser feito, as realizações agrupam o “como” será feito;
• São instâncias do caso de uso que podem ser representadas por diagramas que mostram a realização;
• Os diagramas usados para representar a realização de um caso de uso são os diagramas de interação.
12
Diagrama de Seqüência
• Descreve o que ocorre nos objetos participantes, em termos de chamadas, e como os objetos se comunicam através de mensagens;
• As mensagens representam as interações entre as instâncias de objetos e entre estas e os atores;
• Normalmente utilizado para modelar a realização dos casos de uso;
• Contém atores, objetos e mensagens;• As notas oferecem uma extensão semântica.
13
Diagrama de Seqüência - Semântica
: Func ionario da Secretaria
: frm Inscricao : c trlInscricaoA luno
curso : Curso
1. O ator inform a a m atrícula do aluno;2. O ator inform a o códio do curso;3. O s is tem a verifica as vagas disponíveis (A -1);4. O s is tem a m ostra: 4.1 a descrição do curso; 4.2.as m atérias com os professores ; 4.3.O núm ero de vagas disponíveis ;5. O ator confirm a a inscrição do aluno;6. O s is tem a verifica se o aluno já cursou as m atérias que são pré-requis ito para as matérias do curso (A -2);7. O s is tem a inscreve o aluno no curso selec ionado, dim inuindo um a vaga disponível;8. O caso de uso é encerrado
1: inform a m atrícula e código
6: Dados do curso
2: getCurso(S tring)
4: recuperaPorId(int)
3:
Sequência
Foco deControle
Objetos
Mensagens
14
Diagrama de Seqüência e Realização de Casos de Uso
• Organização:• Um diagrama para o fluxo básico;• Um diagrama para cada fluxo alternativo.
• Para os analistas e usuários, provê uma visão de alto nível sobre como se dará a interação dentro de um cenário de caso de uso;
• Para os projetista, provê as entradas básicas que auxiliarão na determinação das classes (e nestas quais os métodos), responsabilidade e interfaces.
15
Diagrama de Seqüência - Tipos de Diagrama
• O diagrama de seqüência poderá ser feito em vários momentos do sistema, onde o formalismo dos objetos e mensagens poderá variar.
• Momentos:• Análise;• Projeto.
16
Diagrama de Seqüência - Análise
• Captura a visão do analista sobre como o caso de uso vai ser realizado;
• Direciona a solução do projetista.• Contém:
• boundary, controler, entity;• Mensagens informais.
17
Diagrama de Seqüência - Análise
: F u n c io n a r io d a S e c re ta r ia
: frm In s c r ic a o : c tr lI ns c r ic a o Alu n o : C u rs o : A lu n o
1 . O a to r in fo rm a a m a tr íc u la d o a lu n o ;2 . O a to r in fo rm a o c ó d io d o c u rs o ;3 . O s is te m a ve r i fic a a s va g a s d is p o n íve is (A-1 ) ;4 . O s is te m a m o s tra : 4 .1 a d e s c r iç ã o d o c u rs o ; 4 .2 .a s m a té r ia s c o m o s p ro fe s s o re s ; 4 .3 .O n ú m e ro d e va g a s d is p o n íve is ;
1 : in f orm a m a tr ícu la e c ó d ig o
5 : ve r i fic a va g a s (c o d ig o )
6 : o b te m a s va g a s d is p o n ive is
2 : o b te m d a d o s d o c u rs o3 : c r ia e re c u pe ra
4 : D a d o s d o c u rs o
7 : c o n fi rm a in s c r iç ã o
8 : In s c re ve a lu n o (M a tr ic u la , C o d ig o )
9 : C r ia e re c u p e ra
1 0 : C r ia e re c u p e ra
1 1 : In s c re ve (Alu n o )1 2 : o b te m p re - re q u is i to s
1 3 : a va l ia p re -re q u is i to s ( p re - re q u is i to s )1 4 : o b te m h is to r ic o
c o m p a ra o s p re -re q u is i to s c o m o h is tó r ic o
1 6 : c o n fi rm a in s c r iç ã o
1 5 : Ad ic io n a a lu n o a o c u rs o
5 . O a to r c o n fi rm a a in s c r iç ã o d o a lu n o ;6 . O s is te m a ve r i fic a s e o a lu n o já c u rs o u a s m a té r ia s q u e s ã o p ré - re q u is i to p a ra a s m a té r ia s d o c u rs o (A-2 ) ;7 . O s is te m a in s c re ve o a lu n o n o c u rs o s e le c io n a d o , d im in u in d o u m a va g a d is p o n íve l ;8 . O c a s o d e u s o é e n c e rra d o
18
Diagrama de Seqüência - Projeto
• É a visão final da realização do caso de uso;• Incorpora elementos da linguagem e da
arquitetura;• É o roteiro para a escrita do programa.• Contém:
• Atores, estereótipos de camadas (interface, servlet), objetos de domínio (além dos demais);
• Nomes e mensagens formais (métodos existentes nas classes).
19
Diagrama de Seqüência - Projeto
: Fu ncion ario d a Secretaria
: frm Inscricao : c trlInsc ricaoA lunocurso : Curso aluno : A luno
1. O ator informa a matrícula do aluno;2. O ator informa o códio do curso;3. O s is t ema verifica as vagas disponíveis (A-1);4. O s is tema mostra: 4.1 a descrição do curso; 4.2.as matérias com os professores; 4.3.O número de vagas dispon íve is;5. O ator co nfirm a a inscriçã o do aluno;6. O s is tema verifica se o aluno já cursou as matérias que são pré-requis ito para as matérias do curso (A-2);7. O s is tema inscreve o aluno no curso selec ionado, dim inuindo um a vaga disponível;8. O caso de uso é encerrado
compara os pre-requis itos com o his tórico
1: informa matrícula e código
5: Dados do curso
6: c onfirma ins crição
15: confirma inscrição
2: getC urso (S trin g)
7: inscreveA luno(String, S tring)
3: Curso( )
8: Curso( )
12: inscreverA luno(curso.A luno)13: ge tPreReq uis it os( )
10: A luno( )
14: avalia pre-requis itos ( pre-requis itos)
16: getHist orico( )
4: recuperaP orId(int)
9: recuperaPorId(int)
11: recuperaPorId(int)
20
Tipos de mensagem
• Chamada:• Um objeto invoca uma operação em outro objeto.
• Auto-chamada:• Um objeto invoca uma operação nele mesmo.
• Envio:• Um objeto envia um sinal a outro.
• Retorno:• Retorna um valor para o objeto solicitante.
• Criação:• Cria um objeto.
• Destruição:• Destrói um objeto.
21
Tipos de mensagem
: Func ionario da Secretaria
: frm Inscricao : c trlInscricaoA luno
curso : Curso
1. O ator inform a a m atrícula do aluno;2. O ator inform a o códio do curso;3. O s is tem a verifica as vagas disponíveis (A -1);4. O s is tem a m ostra: 4.1 a descrição do curso; 4.2.as m atérias com os professores ; 4.3.O núm ero de vagas disponíveis ;5. O ator confirm a a inscrição do aluno;6. O s is tem a verifica se o aluno já cursou as m atérias que são pré-requis ito para as matérias do curso (A -2);7. O s is tem a inscreve o aluno no curso selec ionado, dim inuindo um a vaga disponível;8. O caso de uso é encerrado
1: inform a m atrícula e código
6: Dados do curso
2: getCurso(S tring)
4: recuperaPorId(int)
3:
Chamada
RetornoDestruição
Envio Criação
22
Representando os objetos
• Nos diagramas de seqüência, geralmente os objetos representados são instâncias reais da classe;
• Os nomes serão os mesmos a serem escritos nos programas.
cu rso : C urs o
23
Mensagens de Chamada
• Mensagens normais que invocam métodos em outros objetos;
• Os parâmetros devem ser representados pelos nomes e os tipos reais.
: Func ionario da Secretaria
: frm Inscricao : c trlInscricaoA luno
curso : Curso
1. O ator inform a a matrícula do aluno;2. O ator inform a o códio do curso;3. O s is tem a verifica as vagas disponíveis (A -1);4. O s is tem a m ostra: 4.1 a descrição do curso; 4.2.as m atérias com os professores ; 4.3.O núm ero de vagas disponíveis ;5. O ator confirma a inscrição do aluno;6. O s is tem a verifica se o aluno já cursou as m atérias que são pré-requis ito para as m atérias do curso (A -2);7. O s is tem a inscreve o aluno no curso selec ionado, dim inuindo um a vaga disponível;8. O caso de uso é encerrado
1: inform a m atrícula e código
6: Dados do curso
2: getCurso(S tring)
4: recuperaPorId(int)
3:
24
Mensagens de Retorno
• Mensagens de retorno devem ser representadas apenas quando não forem óbvias para não poluir o diagrama.
: Func ionario da Secretaria
: frm Insc ricao : c trlInscricaoA luno
curso : Curso
1. O ator informa a m atrícula do aluno;2. O ator informa o códio do curso;3. O s is tem a verifica as vagas disponíveis (A -1);4. O s is tem a mos tra: 4.1 a descrição do curso; 4.2.as m atérias com os professores ; 4.3.O núm ero de vagas disponíveis ;5. O ator confirma a inscrição do aluno;6. O s is tem a verifica se o aluno já cursou as matérias que são pré-requis ito para as m atérias do curso (A -2);7. O s is tem a insc reve o aluno no curso selec ionado, dim inuindo um a vaga disponível;8. O caso de uso é encerrado
1: informa m atrícula e código
6: Dados do curso
2: getCurso(S tring)
4: recuperaPorId(int)
3:
25
Mensagem self
curso : C urso
aluno : Aluno
retorna True se
cum prir os pré-requisitos
12: i nsc rev erAl uno (cu rso .Al uno )
13: getPreR equisitos( )
14: avaliaPreR equisitos(M ater ia[])
16: getH istor ico( )
11: recuperaPorId( int)
17: insereM at er ia(M ater ia)
Fazer para cada m atér ia do curso
Mensagens de que o objeto envia para ele próprio.
26
Mensagens de Criação
• Representam o momento em que o objeto será criado;
• Se o construtor default for utilizado, não é preciso representá-lo.
: Func ionario da Secretaria
: frm Inscricao : c trlInscricaoA luno
curso : Curso
1. O ator inform a a m atrícula do aluno;2. O ator inform a o códio do curso;3. O s is tem a verifica as vagas disponíveis (A -1);4. O s is tem a m ostra: 4.1 a descrição do curso; 4.2.as m atérias com os professores ; 4.3.O núm ero de vagas disponíveis ;5. O ator confirm a a inscrição do aluno;6. O s is tem a verifica se o aluno já cursou as m atérias que são pré-requis ito para as matérias do curso (A -2);7. O s is tem a inscreve o aluno no curso selec ionado, dim inuindo um a vaga disponível;8. O caso de uso é encerrado
1: inform a m atrícula e código
6: Dados do curso
2: getCurso(S tring)
4: recuperaPorId(int)
3:
27
Mensagens de Destruição
Indica a mensagem de destruição do objeto. Não é necessária a representação para a maioria
das linguagens de programação. : Func ionario da
Secretaria : frm Inscricao : c trlInscricaoA luno
curso : Curso
1. O ator inform a a m atrícula do aluno;2. O ator inform a o códio do curso;3. O s is tem a verifica as vagas disponíveis (A -1);4. O s is tem a m ostra: 4.1 a descrição do curso; 4.2.as m atérias com os professores ; 4.3.O núm ero de vagas disponíveis ;5. O ator confirm a a inscrição do aluno;6. O s is tem a verifica se o aluno já cursou as m atérias que são pré-requis ito para as matérias do curso (A -2);7. O s is tem a inscreve o aluno no curso selec ionado, dim inuindo um a vaga disponível;8. O caso de uso é encerrado
1: inform a m atrícula e código
6: Dados do curso
2: getCurso(S tring)
4: recuperaPorId(int)
3:
28
Exemplos
29
Exemplos
public class Pedido {
private ItemDoPedido[] itensDoPedido;
private Cliente cliente;
public double calculaPrecoFinalItem() {
int qtd = ItemDoPedido[0].retornaQuantidade();
Produto produto = ItemDoPedido[0].retornaProduto();
double precoProduto = produto.retornaPrecoUnitario();
double precoBaseItem = this.calculaPreco(precoProduto, qtd);
double taxaDesconto = Cliente.recuperaTaxaDesconto();
double precoFinalItem = this.calculaPrecoFinal(precoBaseItem, taxaDesconto);
return precoFinalItem;
}
public double calculaPreco(double precoProduto, int qtd) {
return precoProduto * qtd;
}
public double calculaPrecoFinal(double precoBaseItem, double taxaDesconto) {
return precoBaseItem * (1 - taxaDesconto);
}
}
30
Exemplos
31
Exemplos
public class Pedido {
private ItemDoPedido[] itensDoPedido;
private Cliente cliente;
public double calculaPrecoFinalItem() {
double precoBaseItem = ItemDoPedido[0].obtemPreco();
double precoFinalItem = Cliente.obtemValorComDesconto(precoBaseItem);
return precoFinalItem;
}
}