Prof. Marcello Thiry <marcello.thiry@gmail.com>
PROGRAMAÇÃO ORIENTADA
A OBJETOS
Unidade 2 (parte 2)
3º período
marcello.thiry@gmail.com
2
marcello.thiry@gmail.com
Para considerar:
 Associações bidirecionais...
 ... aumentam o acoplamento (dependência entre
c...
marcello.thiry@gmail.com
Alguma ideia sobre como implementar?
? ?
marcello.thiry@gmail.com
E agora?
marcello.thiry@gmail.com
marcello.thiry@gmail.com
marcello.thiry@gmail.com
A interface List é implementada
pela classe ArrayList
Qual a vantagem de utilizar uma
interface n...
marcello.thiry@gmail.com
Quem utilizar a classe Aluno
não precisará saber qual a
classe List* que foi utilizada
* A interf...
marcello.thiry@gmail.com
E a classe Turma?
... Alguma diferença?
marcello.thiry@gmail.com
marcello.thiry@gmail.com
marcello.thiry@gmail.com
Você lembra do nosso último exercício?
marcello.thiry@gmail.com
Ainda sobre associações...
 Voltando ao exemplo da orientação...
14
marcello.thiry@gmail.com
Ainda sobre associações...
 E se precisarmos de informações adicionais que
deveriam estar na ass...
marcello.thiry@gmail.com
O que você acha então de considerarmos a
associação bidirecional como uma classe?
marcello.thiry@gmail.com
Classe de
Associação
O que você acha então de considerarmos a
associação bidirecional como uma cl...
marcello.thiry@gmail.com
Quando usar uma Classe de Associação?
 Quando a associação precisa de atributos ou operações
 N...
marcello.thiry@gmail.com
Atributos e
operações
específicas de
Orientação
marcello.thiry@gmail.com
Como implementar?
marcello.thiry@gmail.com
Como fica fisicamente...
marcello.thiry@gmail.com
Visão física (implementação)
marcello.thiry@gmail.com
marcello.thiry@gmail.com
Tupla ligando as duas
instâncias associadas
marcello.thiry@gmail.com
Note que agora, a lista é
de objetos “Orientacao”
No lado Professor (vários alunos)...
marcello.thiry@gmail.com
marcello.thiry@gmail.com
Sincronismo
marcello.thiry@gmail.com
marcello.thiry@gmail.com
No lado Aluno (0 ou 1 professor)...
marcello.thiry@gmail.com
Note que agora, o objeto
é uma “Orientacao”
No lado Aluno (0 ou 1 professor)...
marcello.thiry@gmail.com
marcello.thiry@gmail.com
Removendo a
associação
marcello.thiry@gmail.com
O aluno ainda
não tinha um
orientador
marcello.thiry@gmail.com
O aluno já
tinha um
orientador
marcello.thiry@gmail.com
Sincronismo
marcello.thiry@gmail.com
Associações n-árias
marcello.thiry@gmail.com
Associações n-árias
Associa
várias
classes
marcello.thiry@gmail.com
Associações n-árias
Classe de
Associação
marcello.thiry@gmail.com
Associações Reflexivas
Uma Pessoa pode ter vários
filhos (que também são objetos
da classe Pessoa...
marcello.thiry@gmail.com
Implemente os exemplos
destes slides
Implemente um
relacionamento vários para
vários, usando uma ...
marcello.thiry@gmail.com
Relacionamento de Agregação
 Especialização de uma Associação
 Conexão entre objetos é mais for...
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...
marcello.thiry@gmail.com
43
Agregação
Mas, note que
um objeto Aluno
pode existir sem
uma Turma
marcello.thiry@gmail.com
44
Agregação
O objeto Parte
é um atributo
do Todo
marcello.thiry@gmail.com
Agregação
 A existência do objeto Parte faz sentido, mesmo não
existindo o objeto Todo
 Os obje...
marcello.thiry@gmail.com
Agregação
 Implementação similar a uma Associação
46
marcello.thiry@gmail.com
Agregação
 Implementação similar a uma Associação
Precisamos ainda
incluir as restrições...
47
marcello.thiry@gmail.com
Relacionamento de Composição
 Forma mais forte de Agregação
 Relacionamento “de contenção”
 Um...
marcello.thiry@gmail.com
49
Composição
Item é parte
de um Pedido
Um Item sem
Pedido não faz
sentido
marcello.thiry@gmail.com
Composição
 Ao destruir o objeto Todo, os objetos Parte também
deveriam ser destruídos
 O compo...
marcello.thiry@gmail.com
51
Composição
marcello.thiry@gmail.com
52
Composição
Quem gerencia as partes é
o objeto Container/Compositor
marcello.thiry@gmail.com
Quando usar Composição?
 O relacionamento é descrito com uma frase “parte de”:
 Um botão é “par...
marcello.thiry@gmail.com
Quando usar Composição?
 Alguns valores de atributos são propagados do todo
para todos ou alguma...
marcello.thiry@gmail.com
Rever a modelagem do nosso
sistema de Contas Bancárias
Rever a modelagem do nosso sistema de
Folh...
marcello.thiry@gmail.com
Referências
56
 Grady Booch, James Rumbaugh, and Ivar Jacobson. The Unified
Modeling Language Us...
marcello.thiry@gmail.com
Referências
57
 Martin Fowler. UML Distilled: A Brief Guide to the Standard
Object Modeling Lang...
marcello.thiry@gmail.com
marcello.thiry@gmail.com
Próximos SlideShares
Carregando em…5
×

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

1.507 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
0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.507
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
149
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no 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

×