POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (versão 2)

1,323 views
1,121 views

Published on

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.

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,323
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
133
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (versão 2)

  1. 1. Prof. Marcello Thiry <marcello.thiry@gmail.com> PROGRAMAÇÃO ORIENTADA A OBJETOS Unidade 2 (parte 2) 3º período
  2. 2. marcello.thiry@gmail.com 2
  3. 3. marcello.thiry@gmail.com Para considerar:  Associações bidirecionais...  ... aumentam o acoplamento (dependência entre classes), reduzindo a reusabilidade  ... aumentam a complexidade da implementação, pois exigem que o sincronismo seja mantido nos dois lados da associação  ... quando definidas como vários para vários, aumentam ainda mais a complexidade da implementação
  4. 4. marcello.thiry@gmail.com Alguma ideia sobre como implementar? ? ?
  5. 5. marcello.thiry@gmail.com E agora?
  6. 6. marcello.thiry@gmail.com
  7. 7. marcello.thiry@gmail.com
  8. 8. marcello.thiry@gmail.com A interface List é implementada pela classe ArrayList Qual a vantagem de utilizar uma interface neste caso?
  9. 9. marcello.thiry@gmail.com Quem utilizar a classe Aluno não precisará saber qual a classe List* que foi utilizada * A interface List estende a interface Collection
  10. 10. marcello.thiry@gmail.com E a classe Turma? ... Alguma diferença?
  11. 11. marcello.thiry@gmail.com
  12. 12. marcello.thiry@gmail.com
  13. 13. marcello.thiry@gmail.com Você lembra do nosso último exercício?
  14. 14. marcello.thiry@gmail.com Ainda sobre associações...  Voltando ao exemplo da orientação... 14
  15. 15. marcello.thiry@gmail.com Ainda sobre associações...  E se precisarmos de informações adicionais que deveriam estar na associação?  Por exemplo, se for necessário armazenar o título do trabalho de conclusão de curso (TCC)  Note que o TCC não é uma informação do aluno e nem do professor, mas da associação de orientação entre professor e aluno 15
  16. 16. marcello.thiry@gmail.com O que você acha então de considerarmos a associação bidirecional como uma classe?
  17. 17. marcello.thiry@gmail.com Classe de Associação O que você acha então de considerarmos a associação bidirecional como uma classe?
  18. 18. marcello.thiry@gmail.com Quando usar uma Classe de Associação?  Quando a associação precisa de atributos ou operações  Note que utilizar uma Classe de Associação acrescenta a seguinte restrição (Fowler e Scott, 2003):  Poderá haver apenas uma instância da classe de associação entre quaisquer objetos participantes  No nosso exemplo, não poderiam existir duas instâncias de orientação que relacionem o mesmo professor e aluno (mesmo que a associação seja vários para vários) 18
  19. 19. marcello.thiry@gmail.com Atributos e operações específicas de Orientação
  20. 20. marcello.thiry@gmail.com Como implementar?
  21. 21. marcello.thiry@gmail.com Como fica fisicamente...
  22. 22. marcello.thiry@gmail.com Visão física (implementação)
  23. 23. marcello.thiry@gmail.com
  24. 24. marcello.thiry@gmail.com Tupla ligando as duas instâncias associadas
  25. 25. marcello.thiry@gmail.com Note que agora, a lista é de objetos “Orientacao” No lado Professor (vários alunos)...
  26. 26. marcello.thiry@gmail.com
  27. 27. marcello.thiry@gmail.com Sincronismo
  28. 28. marcello.thiry@gmail.com
  29. 29. marcello.thiry@gmail.com No lado Aluno (0 ou 1 professor)...
  30. 30. marcello.thiry@gmail.com Note que agora, o objeto é uma “Orientacao” No lado Aluno (0 ou 1 professor)...
  31. 31. marcello.thiry@gmail.com
  32. 32. marcello.thiry@gmail.com Removendo a associação
  33. 33. marcello.thiry@gmail.com O aluno ainda não tinha um orientador
  34. 34. marcello.thiry@gmail.com O aluno já tinha um orientador
  35. 35. marcello.thiry@gmail.com Sincronismo
  36. 36. marcello.thiry@gmail.com Associações n-árias
  37. 37. marcello.thiry@gmail.com Associações n-árias Associa várias classes
  38. 38. marcello.thiry@gmail.com Associações n-árias Classe de Associação
  39. 39. marcello.thiry@gmail.com Associações Reflexivas Uma Pessoa pode ter vários filhos (que também são objetos da classe Pessoa) Uma Tarefa pode ter várias sucessoras (que também são objetos da classe Tarefa)
  40. 40. marcello.thiry@gmail.com Implemente os exemplos destes slides Implemente um relacionamento vários para vários, usando uma Classe de Associação Implemente o exercício da última aula Preparado para sofrer um pouquinho?
  41. 41. marcello.thiry@gmail.com Relacionamento de Agregação  Especialização de uma Associação  Conexão entre objetos é mais forte  Um objeto Todo é relacionado com seus objetos Parte  Relacionamento “todo-parte” 41
  42. 42. marcello.thiry@gmail.com 42 Agregação Faz sentido termos uma Turma sem Aluno(s)? Uma Turma não seria um agregação de Aluno(s)?
  43. 43. marcello.thiry@gmail.com 43 Agregação Mas, note que um objeto Aluno pode existir sem uma Turma
  44. 44. marcello.thiry@gmail.com 44 Agregação O objeto Parte é um atributo do Todo
  45. 45. marcello.thiry@gmail.com Agregação  A existência do objeto Parte faz sentido, mesmo não existindo o objeto Todo  Os objetos Parte podem ser compartilhados com mais de um objeto Todo Agregador Agregado 45
  46. 46. marcello.thiry@gmail.com Agregação  Implementação similar a uma Associação 46
  47. 47. marcello.thiry@gmail.com Agregação  Implementação similar a uma Associação Precisamos ainda incluir as restrições... 47
  48. 48. marcello.thiry@gmail.com Relacionamento de Composição  Forma mais forte de Agregação  Relacionamento “de contenção”  Um objeto Todo contém um ou mais objetos Parte  Um objeto Parte está contido em, pelo menos, um objeto Todo  Um objeto Parte sozinho não faz sentido O losango agora é preenchido 48
  49. 49. marcello.thiry@gmail.com 49 Composição Item é parte de um Pedido Um Item sem Pedido não faz sentido
  50. 50. marcello.thiry@gmail.com Composição  Ao destruir o objeto Todo, os objetos Parte também deveriam ser destruídos  O compositor tem responsabilidade exclusiva sobre gerenciar suas partes (criação e destruição) 50 Container / Compositor Elemento / Parte
  51. 51. marcello.thiry@gmail.com 51 Composição
  52. 52. marcello.thiry@gmail.com 52 Composição Quem gerencia as partes é o objeto Container/Compositor
  53. 53. marcello.thiry@gmail.com Quando usar Composição?  O relacionamento é descrito com uma frase “parte de”:  Um botão é “parte de” uma janela  Algumas operações no todo são automaticamente aplicadas a suas partes?  Mover a janela, mover o botão  Excluir o pedido, excluir todos os itens do pedido 53
  54. 54. marcello.thiry@gmail.com Quando usar Composição?  Alguns valores de atributos são propagados do todo para todos ou algumas de suas partes?  A fonte da janela é Arial, a fonte do botão é Arial  Existe uma assimetria inerente no relacionamento onde uma classe é subordinada a outra?  Um botão É parte de uma janela, uma janela NÃO É parte de um botão 54
  55. 55. marcello.thiry@gmail.com Rever a modelagem do nosso sistema de Contas Bancárias Rever a modelagem do nosso sistema de Folha de Pagamento Rever a modelagem do nosso sistema Acadêmico Vamos revisar...
  56. 56. marcello.thiry@gmail.com Referências 56  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/
  57. 57. marcello.thiry@gmail.com Referências 57  Martin Fowler. UML Distilled: A Brief Guide to the Standard Object Modeling Language. 3th ed. Addison-Wesley, 2003.
  58. 58. marcello.thiry@gmail.com marcello.thiry@gmail.com

×