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.
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
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
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
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
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?
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
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
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
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. 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. 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. 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/