Escolar Documentos
Profissional Documentos
Cultura Documentos
Agregao
UFRPE
UFRPE
Demonstra que as informaes de uma classe precisam ser complementadas por uma outra classe. A parte pode existir sem o todo A agregao definida pelo relacionamento tem um .
Herana
1/25
3/25
Sumrio
UFRPE
Agregao - Representao
UFRPE
Agregao Composio
2/25
2
4/25
O losango colocado nas linhas de associao da classe Carro indica que a classe Carro tem um relacionamento de agregao com as classes Porta e Motor.
Agregao - Representao
UFRPE
Agregao - Implementao
UFRPE
Agregao - Exemplo
UFRPE
O carro tem um motor e duas portas. Se analisarmos a frase a parte pode existir sem o todo Podemos concluir que as classes Porta e Motor podem existir sem a necessidade de Carro existir
2
A classe que tem o smbolo de agregao (o losango vazio) em sua extremidade de uma linha de associao o todo (nesse caso, Carro) e a classe na outra extremidade da linha da associao a parte (neste caso, as classes Porta e Motor)
Para ilustrar o exemplo de agregao, vejamos uma aplicao Java que far uso dos arquivos
Motor.java Porta.java CarroAgregacao.java.
5/25
7/25
Agregao - Implementao
UFRPE
Motor.java
/*Arquivo para Exemplo de Agregao e Composio em Java * Arquivo Motor.java */ public class Motor { double potencia; public Motor(double pot){ this.potencia=pot; } }
6/25
8/25
Agregao - Implementao
UFRPE
Agregao - Implementao
UFRPE
Porta.java
/* Arquivo para Exemplo de Agregao e Composio em Java *Arquivo Porta.java */ public class Porta { String cor; public Porta(String c){ this.cor=c; } }
9/25
11/25
Agregao - Implementao
UFRPE
Composio
UFRPE
CarroAgregacao.java
/*Exemplo de Agregao em Java Arquivo: CarroAgregacao.java */ public class CarroAgregacao { private private private private String static static static modeloCarro; Porta pErq = new Porta(azul); Porta pDir = new Porta(azul); Motor motor = new Motor(1.6);
um tipo de agregao, da mesma forma que na agregao, a composio tambm dada pelo relacionamento tem um. A figura abaixo ilustra um exemplo de composio:
public CarroAgregacao(String m){ this.modeloCarro=m; } public static void main(String [] args){ CarroAgregacao carro = new CarroAgregacao("Passeio"); System.out.println("Descrio do carro:\n + "Modelo: " + carro.modeloCarro + Cor da porta esquerda" + carro.pEsq.cor + "Potncia do motor" + carro.motor.potencia); } }
10/25
12/25
Composio - Representao
UFRPE
Composio - Implementao
UFRPE
Composio - Representao
UFRPE
Se analisarmos a frase Quando o todo desaparece, todas as partes tambm desaparecem podemos concluir que se uma instncia (objeto) de Carro no existir, as instncias de variveis (atributos) das classes Porta e Motor tambm no existiro.
Assim como a agregao a composio representado por um losango, porm preenchido, colocado nas linhas de associao da classe Carro indica que a classe Carro tem um relacionamento de composio com as classes Porta e Motor.
Para ilustrar o exemplo de composio, vejamos uma aplicao Java que far uso dos arquivos
Motor.java Mesmo arquivo da agregao Porta.java Mesmo arquivo da agregao CarroComposicao.java.
Composio - Implementao
UFRPE
/* Exemplo de Composio em Java Arquivo: CarroComposicao.java public class CarroComposicao { private String modeloCarro; private static Porta pEsq, pDir; private static Motor motor; public CarroComposicao (String m, String c, double p){ this.modeloCarro = m; pEsq = new Porta(c); pDir = new Porta(c); motor = new Motor(p); }
*/
public static void main(String [] args){ CarroComposicao carro = new CarroComposicao("Passeio", azul, 1.6); System.out.println("Decrio do carro:\n + "Modelo: " + carro.modeloCarro + Cor da porta esquerda: + carro.pEsq.cor + "Potncia do motor: " + carro.motor.potencia); } }
14/25 Modelagem e Programao OO - Richarlyson DEmery 16/25
Composio - Implementao
UFRPE
UFRPE
os objetos porta e motor TAMBM NO existiro, pois s passam existir quando carro instanciado!
Na Agregao podemos observar que ainda que a instncia da classe Carro (objeto carro) no existisse os objetos porta e motor ainda existiriam, pois foram instanciados independente da criao do objeto carro, ou seja: A parte pode existir sem o todo.
17/25
19/25
UFRPE
UFRPE
No relacionamento por agregao ou por composio podemos destacar que a diferena est basicamente nas regras de criao dos objetos.
por:
System.out.println("Nmero de portas" + porta.numPortas); System.out.println("Potncia do motor" + motor.potencia);
os atributos cor e potencia ainda sero exibidos no console. Isso porque, como explicado, os objetos porta e motor continuam existindo independente do objeto carro existir.
Modelagem e Programao OO - Richarlyson DEmery 18/25 Modelagem e Programao OO - Richarlyson DEmery 20/25
UFRPE
UFRPE
Na Composio podemos observar que a classe CarroComposicao contm as variveis de instncia (atributos) modeloCarro, porta e motor. O atributo porta uma referncia para a classe Porta, assim como motor uma referncia para Motor, que por sua vez contm as variveis de instncia cor e potencia, respectivamente. Isso mostra que uma classe pode conter referncias para objetos de outras classes. O mtodo construtor CarroComposicao recebe trs parmetros m, c e p, no qual o parmetro c passado para o mtodo construtor Porta, com o objetivo de inicializar o objeto porta, da mesma forma que o parmetro p passado para Motor com o objetivo de inicializar o objeto motor.
1 2 3
21/25
23/25
UFRPE
UFRPE
E dessa forma no ser possvel acessar os atributos de Porta e Motor sem que o objeto carro tenha sido instanciado (diferentemente da agregao), ou seja: Quando o todo desaparece, todas as partes tambm desaparecem. Com o auxlio do IDE Eclipse podemos perceber que ao compilar a aplicao CarroComposicao.java no possvel acessar os objetos porta e motor:
1 o objeto carro no foi instanciado; 2 o objeto porta no pode ser acessado; 3 o objeto motor no pode ser acessado; 4 Exceo gerada pelo fato dos objetos porta e motor no terem sido instanciados.
22/25
24/25
UFRPE
FIM
Richarlyson DEmery rico_demery@yahoo.com.br
25/25