Interações entre objetos
Interações
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
Utilidade
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
Links
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 darAumento(perc: float) alocar(d: Departamento) Pessoa empregado empregador 1..* 0..5 p: Pessoa e: Empresa alocar(desenvolvimento)
Mensagens
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
Seqüenciamento
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
Diagramas de seqüência
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
Exemplo
Exemplo
Br ow s er Se rvidor We b Pr oce s s ador de pe didos
Inte r face com o banco Es tudante
Subm ete r form ulár io de pe dido pr e enchido
Codificar dados do form ulário
Enviar dados
codificados Pr oce s s ar dados
Enviar dados proce s s ados Exe cutar Es te é um pr ogram a CGI ou ISAPI Cadastr ar pe dido Cadas tro OK Ge rar página de confir m ação Enviar página Enviar página Exibir página
Modelando o fluxo de controle através de Diagramas
Modelando o fluxo de controle através de Diagramas
de Seqüência
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.
Modelando o fluxo de controle através de Diagramas
Modelando o fluxo de controle através de Diagramas
de Seqüência
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.
Classes de Fronteira (
Classes de Fronteira (
boundary
boundary
classes
classes
)
)
! Isolam o sistema de mudanças no ambiente externo
! Atores devem se comunicar apenas com classes de fronteira
! Exemplos de classes fronteira " GUI
" Interface com outros sistemas
" Interface com dispositivos
O Papel de uma Classe de Fronteira
O Papel de uma Classe de Fronteira
Modela interação entre o sistema e seu ambiente <<boundary>> <<entity>> <<control>> <<boundary>> <<boundary>> <<entity>> Usuário Fonte: Rational
Regra geral para encontrar
Regra geral para encontrar
Classes de Fronteira
Classes de Fronteira
! Uma classe por cada par ator/caso de uso
! Exemplo: Caso de uso Sacar Dinheiro
Cliente Sacar dinheiro Sistema do banco
Classes de Entidade (
Classes de Entidade (
entity
entity
classes
classes
)
)
! Abstrações e conceitos chave dos casos de uso
<<entity>>
Descrição do
Caso de uso <<entity>>
O Papel de uma Classe de Entidade
O Papel de uma Classe de Entidade
<<boundary>> <<entity>> <<control>> <<boundary>> <<boundary>> <<entity>> Customer Armazenam e gerenciam informação no sistema
Orientações para encontrar
Orientações para encontrar
Classes de Entidade
Classes de Entidade
! Usando 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
Exemplo: Classe de entidade do caso de uso Sacar
Exemplo: Classe de entidade do caso de uso Sacar
Dinheiro
Dinheiro
Classes de Controle (
Classes de Controle (
control
control
classes
classes
)
)
! Coordenam o comportamento (lógica de controle) do caso
de uso
! Interface entre fronteira e entidade
O Papel de uma Classe de Controle
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 a classes de fachada (Arquitetura de Camadas)
<<boundary>> <<entity>> <<control>> <<boundary>> <<boundary>> <<entity>> Customer
Orientações para encontrar
Orientações para encontrar
Classes de Controle
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)
Exemplo de Classe de Controle
Exemplo de Classe de Controle
Caso de uso
Caso de uso
Sacar Dinheiro
Sacar Dinheiro
Cliente Sacar dinheiro Sistema do banco
Exemplo
Exemplo: Classes de Análise resultantes do caso de uso : Classes de Análise resultantes do caso de uso Sacar Sacar Dinheiro Dinheiro <<boundary>> SistemaBanco <<control>> ControladorSaque <<boundary>> FormularioSaque <<entity> Conta
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)
Descrevendo Responsabilidades
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
:Client :Supplier // PerformResponsibility Supplier // PerformResponsibility diagrama de classe diagrama de interação
Diagramas de colaboração
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
Browser Servidor Web Processador de pedidos Interface com o banco Estudante submeter(dadosForm) 1: codificarDados(dadosForm) 2: enviarDadosCodificados(dados) 3: processarDados() 4: executar() 5: enviarDadosProc(dados) 6: cadastrapedido(consSQL) 8: enviarPagina(pag) 9: enviarPagina(pagina) 7: gerarPagResposta()
Diagramas de colaboração: exemplo
Modelando o fluxo de controle através de Diagramas de
Modelando o fluxo de controle através de Diagramas de
Colaboração
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.
Modelando o fluxo de controle através de Diagramas de
Modelando o fluxo de controle através de Diagramas de
Colaboração
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.