Sempre me fiz esta pergunta... Então, vamos lá! :)
As diferenças são:
Agregação é a utilização de uma classe por outra através de um vínculo comum, onde a classe utilizada (agregado) faz "sentido" sem a classe que a utiliza (agregador). Um exemplo são as classes do tipo Carro e Roda (Um carro possue rodas, mas as rodas existem sem o carro).
class Carro {
private Roda[] rodas;
}
class Roda {
}
Composição é uma agregação mais "forte", onde o agregado não faz sentido sem o agregador. Um exemplo clássico, são classes do tipo Pedido e ItemPedido (Um pedido possue itens de pedido e o item de pedido não existe sem um pedido).
class Pedido {
private ItemPedido[] itens;
}
class ItemPedido {
//O código abaixo é só de exemplo, mas nem sempre em uma composição deve ser colocado assim.
private Pedido pedido;
}
Herança é quando uma classe possue todas as características de uma outra classe, a classe que possue as caracteristicas comuns é chamada de base ou de pai e a classe que "herda" estas caracteristicas é chamada de filha. Um exemplo são classes do tipo Animal e Mamifero (pois um mamífero é um animal, mas nem todo animal é mamífero):
class Animal {
}
class Mamifero extends Animal {
}
É isso ai... Pareceu até que estou escrevendo uma apostila :P
Até!
Um comentário:
No final, eu penso assim: Um ar-condicionado "agrega" um valor ao carro (mas não impede que ele funcione), mas um motor "compõe" o carro (sem ele, o carro não funciona).
Postar um comentário