POO - Unidade 2 (parte 3) - Diagrama de Sequência (versão 1)

1.137 visualizações

Publicada em

Material utilizado na disciplina de Programação Orientada a Objetos (animações e outros efeitos foram perdidos no carregamento). Ciência da Computação (3o período). Universidade do Vale do Itajaí - Campus Kobrasol.

Publicada em: Educação

POO - Unidade 2 (parte 3) - Diagrama de Sequência (versão 1)

  1. 1. Prof. Marcello Thiry <marcello.thiry@gmail.com> PROGRAMAÇÃO ORIENTADA A OBJETOS Unidade 2 (parte 3) 3º período
  2. 2. marcello.thiry@gmail.com 2
  3. 3. marcello.thiry@gmail.com 3 Visão estática Visão dinâmica
  4. 4. marcello.thiry@gmail.com 4 Visão estática Visão dinâmica
  5. 5. marcello.thiry@gmail.com Diagrama de Sequência  Diagrama Comportamental  Diagrama de Interação  Mostra a interação de objetos organizada no tempo  Permite visualizar a troca de mensagens entre os objetos  Mostra a implementação de uma ou mais “operações”  Mostra os “métodos” destas operações 5
  6. 6. marcello.thiry@gmail.com 6 Operações e mensagens  Uma mensagem é uma solicitação feita por um objeto cliente a um objeto fornecedor  Como resultado desta solicitação, o objeto fornecedor irá modificar seu estado ou irá retornar algum valor  Para invocar uma operação de um objeto, deve-se enviar uma mensagem para este objeto 6
  7. 7. marcello.thiry@gmail.com 7 Representação de uma mensagem...
  8. 8. marcello.thiry@gmail.com 8 Representação de uma mensagem... Objetos que estão interagindo
  9. 9. marcello.thiry@gmail.com 9 Representação de uma mensagem... Mensagem do objeto “cliente” para o objeto “fornecedor”
  10. 10. marcello.thiry@gmail.com 10 Representação de uma mensagem... Mensagem do objeto “cliente” para o objeto “fornecedor” Sentido da mensagem
  11. 11. marcello.thiry@gmail.com 11 Representação de uma mensagem... fornecedor.getSalarioBruto() getSalarioBruto() é uma operação da classe “Funcionario”
  12. 12. marcello.thiry@gmail.com 12 Representação de uma mensagem... cliente está invocando o método da operação getSalarioBruto() que será executado pelo objeto fornecedor
  13. 13. marcello.thiry@gmail.com Variável em cliente que recebe o resultado da execução
  14. 14. marcello.thiry@gmail.com Notação para representar o retorno do controle da execução (retorno da chamada)
  15. 15. marcello.thiry@gmail.com controle da execução Como funciona...
  16. 16. marcello.thiry@gmail.com envio da mensagem controle da execução
  17. 17. marcello.thiry@gmail.com Executa Acabou: retornar o controle
  18. 18. marcello.thiry@gmail.com Retorno do controle da execução
  19. 19. marcello.thiry@gmail.com O controle da execução retornou para o objeto que mandou a mensagem
  20. 20. marcello.thiry@gmail.com Chamada de procedimento (mensagem síncrona)
  21. 21. marcello.thiry@gmail.com Mensagens síncronas  Representa um fluxo de controle aninhado  Chamada a uma operação  Mensagem bloqueante  O objeto “cliente” fica esperando (bloqueado) pela execução da operação no objeto “fornecedor”  O objeto “cliente” só poderá fazer uma nova ação quando receber o controle de volta 21
  22. 22. marcello.thiry@gmail.com Mensagens síncronas  Por ser uma mensagem bloqueante, utilizamos uma notação para indicar o retorno do controle ao objeto que originou a mensagem 22
  23. 23. marcello.thiry@gmail.com 23 Um exemplo...
  24. 24. marcello.thiry@gmail.com 24 Um exemplo... objetos
  25. 25. marcello.thiry@gmail.com 25 Um exemplo... tempo
  26. 26. marcello.thiry@gmail.com 26 Um exemplo... Não interessa modelar quem chamou ou para quem vai
  27. 27. marcello.thiry@gmail.com 27 Um exemplo...
  28. 28. marcello.thiry@gmail.com 28 Um exemplo...
  29. 29. marcello.thiry@gmail.com 29 Um exemplo... Este diagrama mostra a implementação da operação (método) consultarSaldo(int) da classe TerminalBancario
  30. 30. marcello.thiry@gmail.com 30
  31. 31. marcello.thiry@gmail.com 31
  32. 32. marcello.thiry@gmail.com 32
  33. 33. marcello.thiry@gmail.com 33
  34. 34. marcello.thiry@gmail.com Por convenção, objetos são colocados da esquerda para a direita, conforme a participação deles na interação Mas os objetos podem ser colocados em qualquer ordem
  35. 35. marcello.thiry@gmail.com Linha de vida (Lifeline)  Representa um objeto que participa da interação  Não faz sentido definir multiplicidade  A linha de vida (linha tracejada) representa o tempo de vida do objeto  Somente objetos ainda vivos podem enviar e receber mensagens - Notação para indicar que o objeto não existe mais - O objeto foi destruído
  36. 36. marcello.thiry@gmail.com Foco de controle / Ativação  Indica os períodos em que o objeto participa ativamente da interação  Quando o objeto está executando um método É possível ter dois objetos ativos ao mesmo tempo?
  37. 37. marcello.thiry@gmail.com Os dois estão ativos! Foco de controle / Ativação
  38. 38. marcello.thiry@gmail.com Os dois estão ativos! Foco de controle / Ativação
  39. 39. marcello.thiry@gmail.com Auto-mensagem (self-message) A mensagem é enviada para o próprio objeto
  40. 40. marcello.thiry@gmail.com Auto-mensagem (self-message)
  41. 41. marcello.thiry@gmail.com Auto-mensagem (self-message) Duas auto-mensagens chamadas em sequência
  42. 42. marcello.thiry@gmail.com Auto-mensagem (self-message) Mostrando a implementação da auto-mensagem 1 Múltiplas camadas de ativação
  43. 43. marcello.thiry@gmail.com Guarda (Guard) Representa uma condição: a mensagem é enviada somente se a condição for atendida
  44. 44. marcello.thiry@gmail.com Fragmento “alt” (alternativas)
  45. 45. marcello.thiry@gmail.com Fragmento “alt” (alternativas) Área executada se e somente se a condição for verdadeira
  46. 46. marcello.thiry@gmail.com Fragmento “alt” (alternativas)
  47. 47. marcello.thiry@gmail.com Fragmento “alt” (alternativas) SE SENÃO, SE SENÃO, SE
  48. 48. marcello.thiry@gmail.com Fragmento “loop” (laços)
  49. 49. marcello.thiry@gmail.com Fragmento “loop” (laços)
  50. 50. marcello.thiry@gmail.com Fragmento “loop” (laços) No mínimo, X vezes No máximo, Y vezes
  51. 51. marcello.thiry@gmail.com Criação de objetos Construtor O objeto “conta” pode receber e enviar mensagens
  52. 52. marcello.thiry@gmail.com Referências 52  Grady Booch, James Rumbaugh, and Ivar Jacobson. The Unified Modeling Language User Guide. 2nd ed. Addison-Wesley, 2005.  Ricardo Pereira e Silva. UML 2 em Modelagem Orientada a Objetos. Visual Books, 2007.  OMG (Object Management Group), OMG Unified Modeling Language v2.5, 2012.  http://www.omg.org/spec/UML/2.5/Beta1/PDF/
  53. 53. marcello.thiry@gmail.com Referências 53  Martin Fowler. UML Distilled: A Brief Guide to the Standard Object Modeling Language. 3th ed. Addison-Wesley, 2003.
  54. 54. marcello.thiry@gmail.com marcello.thiry@gmail.com

×