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
10Continua
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

Aula sobre Programação Orientada a Objetos em Java