Interações entre objetos CIn-UFPE 1 Modelagem Comportamental Diagramas de Use Case Diagramas de Seqüência Diagramas de Colaboração Statecharts Diagramas de Atividades CIn-UFPE 2 Interações Interações mostram os aspectos dinâmicos de um sistema, enfatizando a troca de mensagens entre objetos Dois diagramas podem ser usados para modelar as interações: diagramas de seqüência e diagramas de colaboração CIn-UFPE 3 Utilidade Modelar as interações em um sistema é uma das técnicas mais poderosas para a descoberta das classes e das operações do sistema Diagramas de interação facilitam o entendimento de sistemas com comportamento complexo Diagramas de interação são especialmente úteis para sistemas orientados a objetos porque a funcionalidade nesses sistemas geralmente é distribuída em muitas classes diferentes CIn-UFPE 4 Links Um link é uma conexão entre dois objetos, pela qual mensagens podem ser trocadas Sempre que uma classe tiver uma associação com outra classe, pode haver um link entre os objetos dessas classes Pessoa p: Pessoa darAumento(perc: float) alocar(d: Departamento) empregado 1..* alocar(desenvolvimento) 0..5 empregador Empresa CIn-UFPE e: Empresa 5 Mensagens Definição formal: uma mensagem é a especificação de uma comunicação entre objetos, onde são passadas informações, com a esperança de que ocorra alguma atividade Na maioria das vezes, uma mensagem resulta na execução de uma operação CIn-UFPE 6 Seqüenciamento Quando um objeto envia uma mensagem para outro objeto, o objeto que recebe a mensagem pode enviar outras mensagens e assim por diante, formando uma seqüência de mensagens CIn-UFPE 7 Diagramas de seqüência Diagramas de seqüência enfatizam a ordenação das mensagens trocadas entre os objetos Um cenário é uma seqüência específica de ações que ilustra um comportamento Diagramas de seqüência podem modelar um cenário ou um conjunto de cenários Diagramas de seqüência podem mostrar decisões simples e iterações CIn-UFPE 8 Exemplo Es te é um pr ogram a CGI ou ISAPI Br ow s er Pr oce s s ador de pe didos Se rvidor We b Inte r face com o banco Es tudante Subm ete r for m ulár io de pe dido pr e enchido Codificar dados do for m ulár io Enviar dados codificados Pr oce s s ar dados Exe cutar Enviar dados proce s s ados Cadastr ar pe dido Cadas tr o OK Ge r ar página de confir m ação Enviar página Enviar página Exibir página CIn-UFPE 9 Modelando o fluxo de controle através de Diagramas de Seqüência Defina o contexto da interação (ex: um cenário de um Use Case) Identifique quais objetos participam da interação Distribua o comportamento do use case em objetos das classes de análise dos seguintes tipos (estereótipos) Fronteira (interação com os atores) Controle (uma para cada use case) Entidade (obtidas a partir do fluxo de eventos) Defina a linha de vida do objeto A maioria dos objetos irão persistir durante toda a interação Se precisar indicar o nascimento ou morte de objetos durante a interação, use mensagens do tipo Create ou Destroy CIn-UFPE 10 Modelando o fluxo de controle através de Diagramas de Seqüência Comece com a mensagem inicial. As mensagens subseqüentes são colocadas do topo para baixo da linha de vida. Para explicar a semântica, é possível incluir as propriedades da mensagens, por ex. Parâmetros. Se precisar especificar limitações (ex: de tempo), adorne a mensagem com uma marca apropriada. Se precisar especificar o fluxo de controle mais formalmente, coloque pré e pós condições nas mensagens. CIn-UFPE 11 Classes de Fronteira (boundary classes) Isolam o sistema de mudanças no ambiente externo Atores devem se comunicar apenas com classes de fronteira Exemplos de classes fronteira <<boundary>> GUI Interface com outros sistemas Interface com dispositivos CIn-UFPE 12 O Papel de uma Classe de Fronteira Modela interação entre o sistema e seu ambiente <<boundary>> <<control>> <<boundary>> Usuário <<boundary>> <<entity>> <<entity>> Fonte: Rational CIn-UFPE 13 Regra geral para encontrar Classes de Fronteira Uma classe por cada par ator/caso de uso Exemplo: Caso de uso Sacar Dinheiro Cliente FormularioSaque CIn-UFPE Sacar dinheiro Sistema do banco SistemaBanco 14 Classes de Entidade (entity classes) Abstrações e conceitos chave dos casos de uso <<entity>> <<entity>> Descrição do Caso de uso CIn-UFPE <<entity>> 15 Fonte: Rational O Papel de uma Classe de Entidade Armazenam e gerenciam informação no sistema <<boundary>> <<control>> <<boundary>> Customer <<boundary>> <<entity>> <<entity>> Fonte: Rational CIn-UFPE 16 Orientações para encontrar Classes de Entidade Utilizando a descrição do caso de uso, use a abordagem tradicional de filtrar substantivos identifique substantivos no fluxo de eventos remova candidatos redundantes e vagos remova atores que interagem indiretamente com o sistema, pois estes não fazem parte da modelagem desconsidere atributos e operações (serão usados mais tarde) CIn-UFPE 17 Exemplo: Classe de entidade do caso de uso Sacar Dinheiro Conta CIn-UFPE 18 Classes de Controle (control classes) Coordenam o comportamento (lógica de controle) do caso de uso Interface entre fronteira e entidade <<control>> CIn-UFPE 19 O Papel de uma Classe de Controle Coordenam o comportamento do caso de uso Uma classe controle pode ter referência a vários objetos entidade Finalidade semelhante às classes de fachada (Arquitetura de Camadas) <<boundary>> <<control>> <<boundary>> Customer <<boundary>> <<entity>> <<entity>> Fonte: Rational CIn-UFPE 20 Orientações para encontrar Classes de Controle Usualmente, uma classe de controle por caso de uso Eventualmente mais de uma (comportamento complexo) ou nenhuma (manipulação simples de informações armazenadas) CIn-UFPE 21 Exemplo de Classe de Controle Caso de uso Sacar Dinheiro Cliente Sacar dinheiro Sistema do banco ControladorSaque CIn-UFPE 22 Exemplo: Classes de Análise resultantes do caso de uso Sacar Dinheiro <<boundary>> FormularioSaque <<control>> ControladorSaque <<boundary>> SistemaBanco <<entity> Conta CIn-UFPE 23 Exemplo de um Diagrama de Seqüência: Caso de uso Sacar Dinheiro :Formulário saque : ControladorSaque : Conta :SistemaBanco solicitar saque (dados do saque) buscar conta (dados da conta) criar conta () solicitar saque (dados do saque) Exibir mensagem (saque ok) CIn-UFPE saque ok 24 Descrevendo Responsabilidades Responsabilidades identificadas nos fluxos de eventos são refletidas em diagramas de interação Mensagens nestes diagramas resultam em responsabilidades nas classes receptoras diagrama de interação :Client :Supplier // PerformResponsibility diagrama de classe Supplier // PerformResponsibility CIn-UFPE 25 Diagramas de colaboração Diagramas de colaboração enfatizam a organização dos objetos em uma interação Praticamente tudo que pode ser mostrado em um diagrama de seqüência pode também ser mostrado em um diagrama de colaboração Diagramas de colaboração podem ser transformados em diagramas de seqüência e vice-versa CIn-UFPE 26 Diagramas de colaboração: exemplo 1: codificarDados(dadosForm) submeter(dadosForm) 3: processarDados() 2: enviarDadosCodificados(dados) Browser Servidor Web 9: enviarPagina(pagina) 8: enviarPagina(pag) Estudante 5: enviarDadosProc(dados) Interface com o banco 4: executar() Processador de pedidos 6: cadastrapedido(consSQL) 7: gerarPagResposta() CIn-UFPE 27 Modelando o fluxo de controle através de Diagramas de Colaboração Defina o contexto da interação (ex: um cenário de um Use Case) Identifique quais objetos participam da interação. Se os valores dos atributos mudam de forma significativa durante a interação, duplique o objeto, conecte-os com o estereótipo <<torna-se>> ou <<cópia>> e atualize o novo objeto com os novos valores. CIn-UFPE 28 Modelando o fluxo de controle através de Diagramas de Colaboração Especifique os links entre objetos. Eles permitem a passagem das mensagens. Começando com a mensagem que inicia a interação, coloque a numeração seqüencial nas mensagens. Se necessário, use aninhamento (1.1, 1.2). Se precisar especificar limitações (ex: de tempo), adorne a mensagem com uma marca apropriada. Se precisar especificar o fluxo de controle mais formalmente, coloque pré e pós condições nas mensagens. CIn-UFPE 29