UML & Padrões Aula 6 UML & Padrões - Profª Kelly C C Silva
Diagramas da UML - Diagramas Estruturais Pacotes Classes Objetos Estrutura Composta Componentes Instalação - Diagramas Comportamentais Casos de uso Atividades Máquina de estado Colaboração ou Comunicação Sequência Tempo Interatividade
UML O que vamos tratar: Diagramas UML Comportamentais (Dinâmicos ) Diagramas de Interação Diagramas de Sequência Diagrama de Comunicação ou Colaboração UML & Padrões - Profª Kelly C C Silva
Diagramas de Interação Diagrama de Interação é um termo genérico que se aplica em vários tipos de diagramas que enfatizam interações de objetos. Uma interação é uma especificação comportamental que inclui uma seqüência de trocas de mensagens entre um conjunto de objetos dentro de um contexto para realizar um propósito específico, tal como a realização de um caso de uso. Para especificar uma interação, é necessário definir um contexto (se é um sistema, subsistema, operação ou classe ou um cenário de caso de uso ou colaboração) e estabelecer os objetos que interagem e seus relacionamentos. O diagrama de interação deve ser usado quando se deseja visualizar o comportamento de vários objetos dentro do contexto estabelecido. 4
Diagramas de Interação O conjunto de todos os diagramas de interação de um sistema constitui o seu modelo de interações. Tipos de diagramas de interação: Diagrama de seqüência - a ênfase está na ordem temporal das mensagens trocada entre os objetos. Diagrama de comunicação (ou colaboração) - enfatiza os relacionamentos que há entre os objetos que participam da realização de um caso de uso. Diagrama de Visão Geral da Interação Podem ser considerado como diagramas de atividades nos quais as atividades são substituídas por pequenos diagramas de sequência. Diagrama de Temporização O foco estás nas restrições de temporização. 5
Diagramas de Interação Equivalência Semântica entre o diagrama de seqüência e o diagrama de comunicação (ou colaboração). Como ambos são derivados das mesmas informações de um metamodelo da UML, o diagrama de seqüências e o diagrama de comunicação (ou colaboração) são semanticamente equivalentes. Como resultado, o diagrama de uma forma pode ser convertido no outro sem qualquer perda de informação. Porém, isso não significa que os dois diagramas visualizarão as mesmas informações explicitamente. 6
Elementos Básicos de um Diagrama de Sequência Atores Objetos, multiobjetos e classes Mensagens Linhas de vida e focos de controle Criação e destruição de objetos Iterações
Elementos Básicos de um Diagrama de Sequência Ator Objeto Objeto1 Objeto2 Objeto3 Classe Classe mensagem() mensagem1 mensagem2 Mensagem Linha de vida Foco de controle mensagem3 A passagem do tempo é percebida no diagrama de seqüência observando-se a direção vertical no sentido de cima para baixo. Quanto mais abaixo uma mensagem aparece no diagrama de seqüência, mais tarde no tempo esta mensagem foi enviada. Embora nem sempre seja possível, deve-se tentar arrumar os objetos no diagrama de seqüência de acordo com a ordem na qual as mensagens são enviadas e minimizar o cruzamento de setas de mensagens com linhas de vida. 8
Elementos Básicos de um Diagrama de Sequência Diagramas de Seqüência Mensagem x responsabilidade Usuário login senha validar(in id : String, in senha : String) : bool : ControladorAcesso umusuário: Usuário validar(id, senha) 9
Elementos Básicos do Diagrama de Sequência Atores Opcionalmente, os atores que participam da realização do caso de uso podem ser representados em diagramas de seqüência. Objetos Os objetos podem ser anônimos ou nomeados. Normalmente um objeto nomeado é utilizado quando ele precisa ser referenciado em mais de um lugar. Nesse caso, o nome do objeto é separado do nome de sua classe por um sinal de dois-pontos. Objeto nomeado Item:ItemPedido Objeto anônimo :ItemPedido A ordem horizontal na qual os objetos aparecem no diagrama de seqüência não tem nenhum significado pré-definido. 10
Elementos Básicos do Diagrama de Sequência Classes A representação de uma classe em um diagrama de seqüência é a mesma utilizada para os objetos, porém o nome da classe não é sublinhado. Linhas de vida No diagrama de seqüência, cada objeto aparece no topo de uma linha vertical tracejada. Essa linha é denominada linha de vida. 11
Elementos Básicos do Diagrama de Sequência Mensagens A notação para uma mensagem em um diagrama de seqüência é uma flecha horizontal ligando uma linha de vida a outra. O formato da ponta da seta indica um tipo de mensagem sendo enviada. Mensagem síncrona o chamador deve esperar até que a mensagem seja concluída. Mensagem assíncrona o chamador pode continuar o processamento e não precisa esperar por uma resposta. Mensagem de retorno Mensagem reflexiva (auto-chamada) quando um objeto envia uma mensagem para si próprio. 12
Diagrama de Sequência Mensagem de Retorno : Registrador : Venda dox( ) d1 = getdate( ) getdate( ) adate
Diagrama de Sequência Mensagem Reflexiva dox( ) : Registrador clear( ) public class Registrador { public void dox( ) { //... clear( ); //... } } public void clear( ) { //... }
Elementos Básicos do Diagrama de Sequência Sintaxe UML para mensagens Mensagem simples, sem cláusula alguma. 1: adicionaritem(item) Mensagem com cláusula de condição. 3 [a > b]: trocar(a, b) Mensagem com cláusula de iteração e com limites indefinidos. 2 *: desenhar( ) Mensagem com cláusula de iteração e com limites definidos. 2 *[i := 1..10]: figuras[i].desenhar( ) Mensagem aninhada com retorno armazenado na variável x. 1.2.1: x := selecionar(e) UML & Padrões - Profª Kelly C C Silva
Elementos Básicos do Diagrama de Sequência Criação de objetos Para criar um objeto você desenha a seta de mensagem diretamente para a caixa do objeto. Se o objeto existe desde o início da interação, ele deve ser posicionado no topo do diagrama. Por outro lado, se o objeto é criado em um momento posterior, o seu retângulo deve ser posicionado mais abaixo no diagrama. A criação de um objeto pode ser requisitada por outro objeto através de uma mensagem. Normalmente, esta mensagem de criação é rotulada com o nome criar. Destruição de objetos A destruição de um objeto é representada por um X grande. Um objeto normalmente é destruído quando ele não é mais necessário na interação. 16
Elementos Básicos do Diagrama de Sequência Criação e Destruição de objetos : ObjetoCriador : ObjetoDestruidor : ObjetoDestruído <<create>> : ObjetoCriado <<destroy>> x Mensagem de criação. Note a forma da seta e o uso do estereótipo <<create>>. Note também que a mensagem termina na cabeça da linha de vida do objeto sendo criado. Destruição de um objeto. Note o uso do estereótipo <<destroy>> e do símbolo X ao final da cauda da linha de vida. UML & Padrões - Profª Kelly C C Silva
Elementos Básicos do Diagrama de Sequência Focos de controle Correspondem a blocos retangulares posicionados sobre a linha de vida de um objeto. Um foco de controle representa o tempo em que um objeto realiza uma ação. O topo do foco de controle coincide com o recebimento de uma mensagem. A parte de baixo de um foco de controle coincide com o término de uma operação realizada pelo objeto. Chamadas recursivas provocam barras de foco de controle empilhadas. 18
Elementos Básicos do Diagrama de Sequência Marcador de iteração - é um asterisco (*) adicionado ao nome da mensagem. Você pode adicionar um texto entre colchetes, para indicar a base da iteração. Sentinelas - As sentinelas são expressões condicionais colocadas entre colchetes e indicam que a mensagem é enviada somente se a sentinela é verdadeira. Obs: Embora os marcadores de iteração e as sentinelas (condições de guarda) possam ajudar, eles têm suas fraquezas. Por esse motivo, a UML 2 oferece os quadros de interação. 19
Elementos Básicos do Diagrama de Sequência Alguns operadores comuns para quadros de interação Operador alt opt par loop sd ref Significado Múltiplos fragmentos alternativos; somente aquele cuja condição for verdadeira será executado. Opcional; o fragmento é executado somente se a condição fornecida for verdadeira. Equivalente a um alt, com apenas um caminho. Paralelo; cada fragmento é executado em paralelo. Laço; o fragmento pode ser executado várias vezes e a sentinela indica a base da iteração. Diagrama de seqüência; usado para circundar um diagrama de seqüência inteiro, se você quiser. Referência; refere-se a uma interação definida em outro diagrama. O quadro é desenhado de forma a abordar as linhas de vida envolvidas na interação. Você pode definir parâmetros e um valor de retorno. 20
Diagrama de Sequência Loops
Diagrama de Sequência Loops na especificação
Diagrama de Sequência Mensagens Condicionais
Diagrama de Sequência Mensagens condicionais
Diagrama de Sequência Mensagens condicionais mutuamente exclusivas
UML Diagrama de Sequência EXERCÍCIO Defina um diagrama de sequência para um cliente que efetua uma matrícula em um curso através de um sistema. Tenha em mente que o aluno, senão estiver cadastrado pode solicitar uma inclusão no sistema. A seguir, após solicitar seus dados ao sistema, pede para ver as turmas abertas. O sistema tem uma classe turmas onde vai buscar uma listagem das turmas abertas e mostra ao usuário. Este seleciona a turma desejada e o sistema lhe mostra todos os dados da turma. Se desejar o aluno matricula-se na turma, enviando uma mensagem e criando uma matricula dentro do sistema. Roteiro Cliente: 1. [não cadastrado] solicita inclusao 2. Solicita lista de turmas abertas 3. Seleciona turma desejada 4. [se desejar] matricula-se na turma Aluno +Incluir(Aluno a) +pesquisanome(string nome) Turma +listaturmasabertas() +pesquisacodigo() Matricula
UML Diagrama de Sequência
Diagrama de Sequência Exemplo 1 classe nome do meu objeto 28
Diagrama de Sequência Exemplo 2 : Registrador : Venda fazerpgto(money dinheiro) fazerpgto(money dinheiro) Criar(dinheiro) : Pagamento public class Venda { private Pagamento pagamento; public void fazerpgto(money dinheiro) { pagameto = new Pagamento(); //... } //... } 29
Diagrama de Sequência Exemplo 3 : Registrador : Venda dox( ) doa( ) dob( ) uma mensagem encontrada cujo remetente não foi especificado doc( ) dod( ) A barra de especificação da execução indica um focus de controle Típica mensagem síncrona mostrada com uma linha cheia
Diagrama de Sequência do Sistema É uma especificação do que o sistema faz sem explicar como ele o faz. O comportamento é definido como uma caixa preta. O comportamento é dependente dos casos de uso. O diagrama de seqüência é utilizado para especificar parte do comportamento. 31
Diagrama de Sequência do Sistema Cenários ou Diagramas de Sequência do Sistema (DSS) mostram um cenário global do funcionamento do sistema, dividindo o caso de uso em partes bem definidas denominadas operações de sistema, que são executadas em resposta aos eventos. De acordo com o Processo Unificado, deve-se criar um DSS para cada caso de uso relevante. 32
Diagrama de Sequência do Sistema Exemplo: Emprestar Livros Descrição do Caso de Uso: Sumário: registra empréstimo de livros na biblioteca para usuário ativo retornando a data para devolução ao usuário Ator principal: atendente Pré- condição: usuário cadastrado Fluxo Principal: 1- O sistema solicita identificação do leitor ao atendente 2 Atendente entra com o id do leitor 3 Sistema retorna a situação do leitor 4 Se a situação do leitor estiver OK, para cada livro de empréstimo o sistema pede o id do livro 5 Atendente informa o id do livro 6 - Sistema informa a data de devolução 7 Atendente encerra empréstimo 8 sistema envia recibo de empréstimo Fluxo alternativo: 4.1 Se a situação do cliente não esta ok, o sistema encerra o CSU Empréstimo
Diagrama de Sequência do Sistema Exemplo: Emprestar Livros Atendente identificarleitor(idleitor) situacaoleitor :Sistema opt [Se situação do leitor = Ok] loop [Para cada livro do empréstimo] entrarlivro(idlivro) datadevolucao encerraremprestimo() emitirreciboemprestimo 34
Diagrama de Sequência do Sistema Exercício: Defina o DSS para o caso de uso Registrar Pedido Cliente 1 Pedido ItemPedido -qtde 1..* 1 Produto 1 0..1 Entrega Mas primeiro imagine o caso de uso
Diagrama de Sequência do Sistema Exercício: Caso de Uso Registrar Pedido Sumário: registra o pedido de produtos feito pelo cliente ao sistema Ator principal: cliente Pré- condição: cliente cadastrado Fluxo Principal: 1- O sistema apresenta a lista de produtos ao cliente 2 Para cada item do pedido, o cliente seleciona o produto e informa a quantidade 3 O cliente confirma 4 O sistema apresenta o endereço cadastrado do cliente 5 Caso o cliente não aceite a entrega no endereço cadastrado, informa outro endereço para entrega 6 - O cliente confirma 7 O sistema registra o pedido
Diagrama de Sequência do Sistema Exercício: Diagrama de Sequência do Sistema do Caso de Uso Registrar Pedido :Sistema cliente iniciarpedido( ) Listar Produtos loop [ Para cada item do pedido ] selecionarproduto( ) definirqtdproduto(qtd ) confirmar( ) Apresenta endereço cadastrado Opt [ endereço entrega endereço cadastrado ] definirendentrega(qtd ) Msg( Pedido registrado com sucesso ) 37
RESUMO - Para construir o diagrama de seqüência 1. Defina o contexto para a interação; se é um sistema, subsistema, operação ou classe ou um cenário de caso de uso ou colaboração. 2. Defina o estágio para a interação, identificando quais objetos desempenham um papel na interação. Distribua-os no diagrama de seqüências da esquerda para a direita. 3. Defina a linha de vida para cada objeto. Na maioria dos casos, os objetos persistirão ao longo de toda a interação. 4. Começando com as mensagens que iniciam a interação, distribua cada mensagem subsequente de cima para baixo entre as linhas de vida, mostrando as propriedades de cada mensagem (como seus parâmetros), conforme necessário para explicar a semântica da operação. 38
Diagrama de Sequência Exemplo Tipo Vantagens Desvantagens Sequencia Mostra claramente a sequencia de tempo ou ordenação das mensagens Consome espaço horizontal para expandir novos objetos Comunicação Flexibilidade na economia de espaço para adicionar novos objetos em 2 dimensionais Dificuldade para ver a sequencia de mensagens Menos opções de notação 39
UML Diagrama de Comunicação
UML Diagrama de Comunicação Chamado de diagrama de colaboração na versão UML 1.X Estruturalmente, é bastante semelhante a um diagrama de objetos. A diferença é que são adicionados setas e rótulos de mensagens nas ligações entre esses objetos. As ligações (linhas) entre objetos correspondem a relacionamentos existentes entre os objetos. Deve haver consistência com o diagrama de classes... Os objetos estão distribuídos em duas dimensões Vantagem: normalmente permite construir desenhos mais legíveis comparativamente aos diagramas de seqüência. Desvantagem: não há como saber a ordem de envio das mensagens a não ser pelas expressões de seqüência. Direção de envio de mensagem é indicada por uma seta próxima ao rótulo da mensagem. UML & Padrões - Profª Kelly C C Silva
UML Diagrama de Comunicação Elementos básicos em um diagrama de comunicação: Atores Objetos, multiobjetos e classes Mensagens Ligações entre objetos Criação e destruição de objetos Iterações UML & Padrões - Profª Kelly C C Silva
UML Diagrama de Comunicação Criação de objetos Durante a execução de um cenário de caso de uso, objetos podem ser criados e outros objetos podem ser destruídos. Alguns objetos podem sobreviver à execução do caso de uso (se conectando a outro objetos); outros podem nascer e morrer durante essa execução. A UML define etiquetas (tags) para criação e destruição de objetos (ou de ligações entre objetos) no diagrama de comunicação. {new}: objetos ou ligações criados durante a interação. {destroyed}: objetos ou ligações destruídos durante a interação. {transient}: objetos ou ligações destruídos e criados durante a interação. UML & Padrões - Profª Kelly C C Silva
UML Diagrama de Comunicação Objeto2 1: m0( ) 1.1 : m1( ) Objeto0 Objeto1 1.2 : m2( ) 1.2.1.1 : m4( ) Objeto4 Objeto3 Objeto5 1.2.2 : [x>0] m6( ) 1.2.1 : x := m3( ) 1.2.1.2 : [i:= 1..4] m5( ) guarda Objeto6 UML & Padrões - Profª Kelly C C Silva
UML Diagrama de Comunicação Um caso simples Sem numeração com numeração UML & Padrões - Profª Kelly C C Silva
UML Diagrama de Comunicação Um caso mais complexo primeiro segundo terceiro quarto quinto sexto
UML Diagrama de Comunicação Mensagem condicional
UML Diagrama de Comunicação Mensagem condicional mutuamente exclusivas 2 é um caminho incondicionais depois ou da msg2 ou msg4 1a e 1b são caminhos condicionais mutuamente exclusivos
UML Diagrama de Comunicação Elabore o Diagrama de Comunicação para o Diagrama de Sequência descrito abaixo. UmaJanelaDeEntrada DePedido umpedido umalinhadepedido umitemdeestoque prepare( ) * prepare( ) temestoque := verificar() [temestoque ] retirar() [precisareposicao] := precisarepor() new [itemestoque] umitemde new Reposição [precisareposicao] umitemde Entrega X