poo - unidade 2 (parte 2) - classe de associação, agregação, composição (versão 2)
DESCRIPTION
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.TRANSCRIPT
Prof. Marcello Thiry <[email protected]>
PROGRAMAÇÃO ORIENTADA A OBJETOS
Unidade 2 (parte 2)
3º período
Para considerar:
Associações bidirecionais...
... aumentam o acoplamento (dependência entre classes), reduzindo a reusabilidade
... aumentam a complexidade da implementação, poisexigem 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
A interface List é implementada pela classe ArrayList
Qual a vantagem de utilizar uma interface neste caso?
Quem utilizar a classe Aluno não precisará saber qual a classe List* que foi utilizada
* A interface List estende a interface Collection
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
Classe deAssociação
O que você acha então de considerarmos a associação bidirecional como uma classe?
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
Note que agora, a lista é de objetos “Orientacao”
No lado Professor (vários alunos)...
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)
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?
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
Agregação
Faz sentido termos uma Turma sem Aluno(s)?
Uma Turma não seria um agregação de Aluno(s)?
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
Agregação
Implementação similar a uma Associação
Precisamos aindaincluir as restrições...
47
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
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
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
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
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...
Referências56
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 ModelingLanguage v2.5, 2012. http://www.omg.org/spec/UML/2.5/Beta1/PDF/
Referências57
Martin Fowler. UML Distilled: A Brief Guide to the Standard Object Modeling Language. 3th ed. Addison-Wesley, 2003.