Programação Orientada a Objetos Professor Eng. Ms. Will Roger Pereira 1
Programação Orientada a
Objetos
Professor Eng. Ms. Will Roger Pereira
1
Objetivos da Aula
Relacionamentos interclasse: Composição;
Composição: Multiplicidade 0..1;
Composição: Multiplicidade 1;
Composição: Multiplicidade 0..N;
Composição: Multiplicidade 0..*;
Composição: Multiplicidade 1..*.
2
Composição
Indicada para representar um relacionamento entre “parte” e
“todo”, onde o “todo” é formado por partes:
Este relacionamento é caracterizado pela parte poder existir
somente compondo o todo, ou seja, a parte deve ser criada
dentro do vínculo;
A Parte não precisa saber a qual Todo ela está agregando.
3
Composição
É a relação mais forte existente;
A classe que compõe (parte) possui o mesmo tempo de vida
da classe composta (todo);
Se a classe composta morrer, suas partes também morrerão;
Ex: Um pedido e um item. Um pedido é composto por itens.
Um item faz parte de um pedido, porém não existe fora do
universo do pedido. Caso o pedido seja encerrado ou deixe
de existir, o item do pedido não existirá mais.
4
Composição
Naturalmente, a estrutura de dados utilizada, bem como o
local do vínculo dependerão da multiplicidade;
Partes que compõem um todo não estarão criadas antes. Sua
referência será conhecida somente dentro do todo;
Os argumentos/parâmetros de métodos e/ou construtores
que realizarão o vínculo serão os atributos da parte. Crie o
objeto da classe parte dentro destas estruturas;
Assim sendo, a única entidade que vai conhecer a referência
da parte, quando vinculada, é o todo. 5
Composição: Multiplicidade 0..1
Na multiplicidade 0..1, o “todo” pode nascer sem possuir
nenhuma parte;
Ao longo de seu ciclo de vida, uma “parte” pode compor o
“todo”, com o “todo” sabendo qual “parte” estará se
relacionando com ele;
É de responsabilidade do desenvolvedor prover métodos
para vínculo, substituição e/ou remoção da parte.
6
Composição: Multiplicidade 0..1
Um Item compõe um Pedido;
O Pedido pode ter 0 ou 1 Item;
O vínculo se dará no método addItem;
Primeiro programe as partes, depois o relacionamento;
Crie o Item somente dentro do método de vínculo.
7
Composição: Multiplicidade 0..1
Programando classe Item
8
Composição: Multiplicidade 0..1
Programando classe Pedido:
Sem Composição
9
Composição: Multiplicidade 0..1
Programando classe Pedido:
Adicionando Composição
10 Continua
Composição: Multiplicidade 0..1
Programando classe Pedido:
Adicionando Composição
11
Continuação Pedido
Continua
Composição: Multiplicidade 0..1
Programando classe Pedido:
Adicionando Composição
12
Continuação Pedido
Composição: Multiplicidade 0..1
Classe Principal
13
Composição: Multiplicidade 1
Na multiplicidade 1, o “todo” DEVE nascer possuindo uma
parte;
Assim sendo, neste caso, a “parte” deve ser criada no
momento da criação do “todo”;
Ao longo de seu ciclo de vida, uma “parte” pode ser
substituída, mas nunca removida;
É de responsabilidade do desenvolvedor prover métodos
para substituição da parte.
14
Composição: Multiplicidade 1
Um Item compõe um Pedido;
O Pedido deve ter 1 Item;
O vínculo se dará no construtor;
Primeiro programe as partes, depois o relacionamento;
Crie o Item somente dentro do construtor do Pedido.
15
Composição: Multiplicidade 1
Programando classe Item
16
Composição: Multiplicidade 1
Programando classe Pedido:
Sem Composição
17
Composição: Multiplicidade 1
Programando classe Pedido:
Adicionando Composição
18
Composição: Multiplicidade 1
Classe Principal
19
Composição: Multiplicidade 0..N
Na multiplicidade 0..N, o “todo” pode nascer sem possuir
nenhuma parte;
Ao longo de seu ciclo de vida, N “partes” podem compor o
“todo”, com o “todo” sabendo quais “partes” estarão se
relacionando com ele;
É DE RESPONSABILIDADE DO DESENVOLVEDOR A
MANUTENÇÃO DA MULTIPLICIDADE NO VETOR;
É de responsabilidade do desenvolvedor prover métodos
para vínculo, substituição e/ou remoção da parte. 20
Composição: Multiplicidade 0..N
Um Item compõe um Pedido;
O Pedido pode ter de 0 ou 5 Itens;
O vínculo se dará no método addItem;
Primeiro programe as partes, depois o relacionamento;
Crie o Item somente dentro do método de vínculo.
21
Composição: Multiplicidade 0..N
Programando classe Item
22
Composição: Multiplicidade 0..N
Programando classe Pedido:
Sem Composição
23
Composição: Multiplicidade 0..N
Programando classe Pedido:
Adicionando Composição
24
Composição: Multiplicidade 0..N
Classe Principal
25
Composição: Multiplicidade 0..*
Na multiplicidade 0..*, o “todo” pode nascer sem possuir
nenhuma parte;
Ao longo de seu ciclo de vida, muitas “partes” podem compor
o “todo”, com o “todo” sabendo quais “partes” estarão se
relacionando com ele;
É DE RESPONSABILIDADE DO DESENVOLVEDOR A
MANUTENÇÃO DA LISTA;
É de responsabilidade do desenvolvedor prover métodos
para vínculo, substituição e/ou remoção da parte. 26
Composição: Multiplicidade 0..*
Um Item compõe um Pedido;
O Pedido pode ter muitos Itens;
O vínculo se dará no método addItem;
Primeiro programe as partes, depois o relacionamento;
Crie o Item somente dentro do método de vínculo.
27
Composição: Multiplicidade 0..*
Programando classe Item
28
Composição: Multiplicidade 0..*
Programando classe Pedido:
Sem Composição
29
Composição: Multiplicidade 0..*
Programando classe Pedido:
Adicionando Composição
30
Composição: Multiplicidade 0..*
Classe Principal
31
Composição: Multiplicidade 1..*
Na multiplicidade 1..*, o “todo” DEVE nascer possuindo uma
parte;
Ao longo de seu ciclo de vida, muitas “partes” podem compor
o “todo”, com o “todo” sabendo quais “partes” estarão se
relacionando com ele;
É DE RESPONSABILIDADE DO DESENVOLVEDOR A
MANUTENÇÃO DA LISTA;
É de responsabilidade do desenvolvedor prover métodos
para vínculo, substituição e/ou remoção da parte. 32
Composição: Multiplicidade 1..*
Um Item compõe um Pedido;
O Pedido pode ter um ou mais Itens;
O vínculo se dará no construtor E no método addItem;
Primeiro programe as partes, depois o relacionamento;
Crie o Item somente dentro do construtor e método de
vínculo. 33
Composição: Multiplicidade 1..*
Programando classe Item
34
Composição: Multiplicidade 1..*
Programando classe Pedido:
Sem Composição
35
Composição: Multiplicidade 1..*
Programando classe Pedido:
Adicionando Composição
36
Composição: Multiplicidade 1..*
Classe Principal
37
Composição: Multiplicidade 1..*
Classe Principal
38
Agregação x Composição
39