Upload
francisco-junior
View
448
Download
0
Embed Size (px)
Citation preview
Aula 13
AgregaoUFRPE
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
Agregao versus ComposioRicharlyson A. DEmery grupo: http://br.groups.yahoo.com/group/mpoo_uast contato: [email protected] envio atividades: [email protected]
J discutimos que os relacionamentos um so implementados por herana
Modelagem e Programao OO - Richarlyson DEmery
1/25
Modelagem e Programao OO - Richarlyson DEmery
3/25
SumrioUFRPE
Agregao - RepresentaoUFRPE
Agregao Composio
Como citado, a agregao implica em um relacionamento todo/parte.
Modelagem e Programao OO - Richarlyson DEmery
2/25
Modelagem e Programao OO - Richarlyson DEmery
Printed with FinePrint trial version - purchase at www.fineprint.com
24/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 - RepresentaoUFRPE
Agregao - ImplementaoUFRPE
Modelagem e Programao OO - Richarlyson DEmery
Agregao - ExemploUFRPE
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 existir2
Modelagem e Programao OO - Richarlyson DEmery
Printed with FinePrint trial version - purchase at www.fineprint.com
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
Modelagem e Programao OO - Richarlyson DEmery
7/25
Agregao - ImplementaoUFRPE
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
Modelagem e Programao OO - Richarlyson DEmery
8/25
Agregao - ImplementaoUFRPE
Agregao - ImplementaoUFRPE
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; } }
Observe que se o objeto carro no existirCarroAgregacao carro = new CarroAgregacao("Passeio");
Ainda assim os objetos porta e motor existiroprivate static Porta pEsq = new Porta(azul); private static Porta pDir = new Porta(azul); private static Motor motor = new Motor(1.6);
Pois so instanciados independentemente!
Modelagem e Programao OO - Richarlyson DEmery
9/25
Modelagem e Programao OO - Richarlyson DEmery
11/25
Agregao - ImplementaoUFRPE
ComposioUFRPE
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); } }
Modelagem e Programao OO - Richarlyson DEmery
10/25
Modelagem e Programao OO - Richarlyson DEmery
12/25
Printed with FinePrint trial version - purchase at www.fineprint.com
Composio - RepresentaoUFRPE
Composio - ImplementaoUFRPE
Quando o todo desaparece, todas as partes tambm desaparecem.Modelagem e Programao OO - Richarlyson DEmery 13/25 Modelagem e Programao OO - Richarlyson DEmery 15/25
Composio - RepresentaoUFRPE
Modelagem e Programao OO - Richarlyson DEmery
Printed with FinePrint trial version - purchase at www.fineprint.com
2
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.
2
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 - ImplementaoUFRPE
/* 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 - ImplementaoUFRPE
Discusso: Agregao versus Composio
UFRPE
Observe que se o objeto carro no existirCarroAgregacao carro = new CarroAgregacao("Passeio");
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.
Modelagem e Programao OO - Richarlyson DEmery
17/25
Modelagem e Programao OO - Richarlyson DEmery
19/25
Discusso: Agregao versus Composio
UFRPE
Discusso: Agregao versus ComposioLogo se substituirmos as linhas de comando:
UFRPE
System.out.println("Nmero de portas" + carro.porta.numPortas); System.out.println("Potncia do motor" + carro.motor.potencia);
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
Printed with FinePrint trial version - purchase at www.fineprint.com
Discusso: Agregao versus Composio
UFRPE
Discusso: Agregao versus Composio
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
4
Modelagem e Programao OO - Richarlyson DEmery
21/25
Modelagem e Programao OO - Richarlyson DEmery
23/25
Discusso: Agregao versus Composio
UFRPE
Discusso: Agregao versus ComposioVejamos:
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.
Modelagem e Programao OO - Richarlyson DEmery
22/25
Modelagem e Programao OO - Richarlyson DEmery
24/25
Printed with FinePrint trial version - purchase at www.fineprint.com
UFRPE
FIMRicharlyson DEmery [email protected]
Modelagem e Programao OO - Richarlyson DEmery
25/25
Printed with FinePrint trial version - purchase at www.fineprint.com