composição

Teria como alguém me passar um exemplo de composição por gentileza.
obrigado.

Uma das grandes composições de Bach:

Brincadeiras a parte:

[code]public class Carro {
private Motor motor;

public Carro(Motor motor) {
if (motor == null)
throw new IllegalArgumentException(“Um carro tem um motor!”);
this.motor = motor;
}
}[/code]

Aí está a composição entre o carro e o motor.

agora não saquei,to estudando herança e me falaram que e melhor usar composição,ainda não entendi a vantagem. Se isso que tu me passou é composição então uso direto composição sem saber o que era.

Oi cleber_zeh,

A coisa não é tão simples assim; vale a pena vc fazer uma pesquisa sobre o assunto para tirar algumas conclusões, segue abaixo 2 links pra vc começar

http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/pat/herancavscomposicao.htm
http://www.javaworld.com/jw-11-1998/jw-11-techniques.html

flw

Oi.

Eu não entendi uma coisa

Se eu mudar o tipo de retorno do método getPeel() para Peel, vai resultar em erro no código da classe Apple e eu teria que mudar a interface dela para retornar um objeto do tipo Peel e, assim, o código da classe Example2 “quebraria”. Não entendi isso… Assim, eu sempre vou ter que mudar alguma coisa da classe front-end, certo?

[editado]
Eu acho que vai depender do momento. As vezes a herança cai melhor, as vezes a composição. Mas sei lá hein… [/editado]

O problema é que com a herança, mudanças na classe pai podem vir a quebrar as classes filhas. Essa quebradeira acontece principalmente quando a herança é usada para agregar funcionalidade, e não especializar um comportamento.

Sem falar que com a herança você herda todas as responsabilidades de seus ancestrais, mesmo que não queira. Vira uma bola de neve.

São todos aqueles problema que vêm do forte acoplamento entre as classes.